Homework2: Taichi小游戏合集(半成品占坑)

背景

这次的hw2是由我和@g1n0st同学共同完成的,由于我们学校期末考试周和hw2的ddl过于重合,实在是没办法也没有胆量感在ddl前完成所有的工作,就先提交一个半成品展示一下目前的状况,以及介绍一下我们项目 (其实是想拿个杯子)
剩下的部分会在ChinaVR的比赛截至日期前更新

介绍

我和g1n0st同学都对实时条件下的simulation非常感兴趣,所以我们选择通过小游戏的方式实现一些real-time level的deformable objects的模拟算法,并作一个对比和总结。我们已经/正在实现的相关算法有如下

半成品展示

我们计划通过3个游戏来实现上述的几个算法

1. 超低配桥梁工程师(PBD实现)

整个游戏完全使用PBD来实现,目前只有两种约束,Triangle Collisions和Stretching,其中Stretching约束又可分为类似钢筋和类似吊索的约束,刚好对应了桥梁的两种非常常见的材料。但由于还没有完善交互和GUI,所以搭桥这个还是硬编码的。下面展示了非常随性搭的一些“桥”



红色的线表示吊索,蓝色的线表示钢筋。非常的野蛮,非常的谔谔,称之为小游戏都非常勉强,如果有同学感兴趣,可以搭一些更好看美观的桥。但还是可以从中体会出PBD这种方法的许多优劣

PBD优点

1.非常的robust,怎么折磨都很难炸掉
2.实现非常简单,在taichi加持下编码体验非常好
3.很快,即使用原文传统的G-S迭代,在30个iteration和较多的物体的情况下在GTX1060上也能保持60fps。
所有这些优点无不反应了PBD太适合游戏等对物理真实性要求不高但又需要效率和鲁棒性的场景

PBD缺点

1.物理真实上欠缺太多
2.对物理材质完全不可控,甚至迭代次数很大的影响了材质的软硬

例子如下

迭代次数为30:

可以观察到非常柔软
迭代次数为100:

变得很硬,且出现了一些不稳定的抖动

这个却点也是PBD被诟病最为深刻的地方,即使不要求用超弹性模型建模物理材质,也得保证材质的属性是可控的。PBD的这个缺点需要改进,变由此引出XPBD方法(未完待续)

Github仓库

2. 劣质坦克大战(Projective Dynamic实现)

还处在debug状态中(预计于9月5日更新)

3. 愤怒的小Taichi(Fast Mass-Spring实现)

还处在debug状态中(预计于9月5日更新)

课程感想

感谢一下胡老师,我作为一个beginer从Taichi和Games201中受益匪浅,希望以后能在学图形学的路上走得更远(不多说了,得去预习复习期末考试)

7 个赞

效果太棒啦!祝期末考试顺利!

我尝试去玩“ 超低配桥梁工程师”,发现程序少调用了一个gui.show()于是一直没有显示到窗口中(估计是最后导出视频以后忘了恢复了 :grinning:

期待你们做完,最好能加上一个记分系统,这样大家可以比一比谁分数高 (最后发现得分最高的同学修改了源代码,2333)

2 个赞