【大作业】纸飞机

大作业

作业描述

taichi_elements基础上实现了 ‘纸飞机’在‘空气中’飞行的效果,并用自己的渲染器渲染成视频;
实现点:
1、完善了之前的渲染程序,之前实现的“Ray Tracing: The Rest of Your Life”在介电质材质上表现有问题,然后将混合采样相关的换成了Path Tracing相关的了
2、优化了批量渲染的方式,之前用ti.reset的方式解决了重建ti.field的报错问题,但这样每次所有重建一遍太耗时,就改了相关设计,让场景支持动态更新模型;但要保证模型的顶点及三角形面片数量不变,且总的bvh节点数量不超过阈值;
3、渲染增加了对环境光贴图的支持
4、增加了对渲染场景参数配置化的支持
5、学习研究了taichi_elements的MPM的实现,以此为基础模拟实现‘纸飞机’在空气中( :joy:在水中飞)飞行的效果;
6、实现了基于RabbitMQ的消息中间件的简单的分布式方案,用来更高效的执行任务(上次仿真渲染折腾一整天的痛点)

其它:还有很多问题未解决,另外纸飞机的飞行轨迹不知道够不够物理,和经验有些差异;后续再研究了

效果展示

康纳尔盒子渲染


环境光贴图的渲染

纸飞机视频
02gcw-0br46

代码链接

Code

4 个赞

大作业补充+1

描述

这次主要是基于taichi_elements 的3D流固耦合仿真,然后对流体的Marching Cube网格化,最后渲染合成。其中Marching Cube 主要参考了这位@ linyaodong大佬的帖子里表面重建相关部分的代码,不过大佬的是基于SPH的通过插值出来的密度场计算出来的等值面的,我实现时是用taichi_elements的欧拉网格中的流体质量来计算的;另外本来用仿真时划分的欧拉网格来重建,得出来的网格数据文件太大,渲染太耗时,就想简化下,最开始是找的QEM算法来做网格简化,比如这篇文章里提到的,试着用太极实现了下,可能实现的有问题,效果不太理想;后来偷懒想到直接对MPM的网格直接间隔提取计算就可以了,试了下似乎还可以;最终在环境光场景中渲染效果还可以,但在cornellbox场景中渲染太慢,噪点也多,只能后续回头再好好学习渲染部分了

效果展示




vupyf-z6hfw

完整效果视频这里

代码

额同上 Code

5 个赞