多材料耦合俄罗斯方块?胡渊鸣给「太极图形课」交作业了!
这是一份太极图形 CEO 胡渊鸣与 CTO 匡冶忙里偷闲交出的「太极图形课」小作业—基于 Taichi 的软体俄罗斯方块游戏 demo,以下简称他们二人为“原野”组合。
不知道从何时开始一系列软体的俄罗斯方块视频在网上非常火。可惜的是这些视频基本上都是离线生成的,虽然看着很满足,但是其实没有太多游戏性。从传统的刚体、不能旋转的俄罗斯方块升级到软体,自然已经是巨大的提升;但是 “俄罗斯方块” 本身就是一个老少咸宜的游戏,少了交互性,还是会阻碍广大人民群众从中获得乐趣。
Youtube Up 主 C4D4U 软体俄罗斯方块系列视频
于是原野组合估算了一下,其实几万个粒子的仿真足以支撑整个游戏了。这样的计算量,配上 Taichi 编译器,是完全可以在普通机器上(甚至手机上)实时运行的。他们基于经典的 mpm99.py 对游戏进行了一个升级,使它支持液体、软体、弹塑性体等 2D 多材料仿真,并且可以在一台 M1 Macbook Pro 上超过 60 FPS 实时运行,就暂且将其命名为 “多材料耦合俄罗斯方块”,更多技术细节可以移步「太极图形」的知乎。
时间有限,原野组合的作品只能算是一个最小化的 proof-of-concept。还有一些功能没有完全实现,以及一些很明显的 bugs 需要修复,具体有哪些功能等着同学们添砖加瓦,我们文末揭晓。
然而,原野组合之所以交出这样一份作业,其实是为了赢得「太极图形课」的小礼物(没错,即使是老板,运营同学也没有“特殊对待”)。
「太极图形课」是由太极图形团队精细打磨,资深研究科学家刘天添主讲的计算机图形学入门实操课。课程于9月14日正式上线,每周二晚7点在「太极图形」B站进行直播,课程录播于次日发布。转眼五节课过去,Taichi 编程语言的基础语法,高级用法,以及调试和优化已经告一段落。10月26日(本周二)起将正式带领同学们跨入计算机图形学的大门,从最基础的程序动画讲起,覆盖渲染、软体仿真、流体仿真的基础知识,邀你学习、体验基于 Taichi 编程语言的图形学程序。
康奈尔盒的渲染-YeKuang关联课程11/02 第06讲:光线追踪的概念和基础11/09 第07讲:光线追踪实战
布料仿真-DunfanLu
关联课程11/16第08讲:弹性物体仿真—时间和空间离散化11/23第09讲:弹性物体仿真—隐式积分和数值解法
Stable Fluid-DunfanLu MingruiZhang关联课程11/30第10讲:流体仿真—拉格朗日视角12/07 第11讲:流体仿真—欧拉视角
就在今晚7点的太极图形课,讲师刘天添将从简单的程序化动画入手,讲解如何使用 Taichi 语言创造出属于你自己的第一个二维动画。同时,太极图形联合创始人及 CEO 胡渊鸣将加入直播联动,接受天添老师的当堂小测试,根据当堂所学,写出一个“观赏性极强”的程序动画。如果上课时你的 IDE 就在手边,也欢迎你来和胡渊鸣一起接受图形课的随堂小测验。
扫码即可加入太极图形课微信群,解锁最新课程资料,参与学习讨论,与讲师助教直接互动。
扫描下方二维码关注「太极图形」B站,预约今晚刘天添 x 胡渊鸣的直播联动,期待你们在随后的答疑中“难倒”他们!
「太极图形课」在课程的最后设置了 final project,邀请同学们根据所学独立完成一个优美的图形学小程序。如果说你能把开篇的「多材料耦合俄罗斯方块」完成如下改进,那你可能不只是礼物拿到手软了,更好玩的还在后头呢。
还没有实现消除和计分功能(可以试试使用 MPM 的背景网格,如果一行的 nodes 都质量 0,就可以考虑删除相关粒子啦。)
还没有实现溢出以后的失败功能,这个比较简单...
如果鼠标太靠近边缘,生成的粒子会在网格外。这一点在非 debug 模式的 Taichi 中是 undefined behavior,可能会导致程序崩溃。需要限制鼠标的范围。
目前如果按空格键太快,会导致粒子粘连。这里需要做一个 cool down 的机制,这个也比较简单...
目前绘制还是使用的上个世代的 CPU GUI 系统。这套 CPU GUI 系统是为了去年 GAMES 201 上课的时候大家各个系统上的兼容性的问题,我自己手写的 CPU 2D 软光栅化,性能自然上不去。随着 Taichi 升级到 0.8.0,一套全新的基于 GPU 的 GUI 系统 GGUI 逐渐受到用户的青睐。欢迎有兴趣的同学完成这个升级,全屏容纳更多的 particles。
目前的程序还是需要 Python 才能运行的,有必要的话可以用 Taichi 的 AOT 技术去脱离 Python 运行环境。相关技术快手已经落地了,在快手移动端 App 的 “魔法表情” 里点开就可以使用。当然,如果你自己沿着这个思路做了个小游戏放到了 AppStore,那欢迎你邀请原野组合试玩。
(难)目前 MPM 相关的算法在处理软体边界的摩擦方面并不完全可控,难以设置一个很好的摩擦系数。如果你解决了这个问题,可以考虑直接投稿到 SIGGRAPH / JCP。
最后,阅读原文前往「太极图形」B站,可查看往期课程并预约今晚7点的直播间,看刘天添 x 胡渊鸣生动演绎“如何写一个优美的程序动画”。阅读原文
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。 项目经理在线