又是好久没更新博客了,最近在写算法分析与设计课程的期末作业,作业的题目随意,我就随兴写了烟花粒子的四叉树可视化程序和光追渲染器的八叉树求交优化。之前写的光追渲染器对每个三角网格模型的求交都是暴力遍历所有的三角形,对于三角形数量很多的模型来说效率非常低,所以我捡起了这个渲染器并为每个三角网格模型构建一颗八叉树加快射线与三角形的求交速度。还真别说,性能提升巨大。所以这篇博客本质上是一个期末作业。最后,新年快乐!

在基于粒子的流体模拟中,Marching Cubes$^{[1]}$是常用的、流行的表面重建算法。但在Marching Cubes算法构建表面网格之前需要获得整个流体区域的标量场,这个标量场需要我们根据流体的粒子计算得到,这个标量场的质量好坏与最终重建得到的网格质量好坏息息相关。针对采用Marching Cubes算法重建粒子流体表面网格的方法,学者们都着重关注如何提高重建出来的流体网格质量、如何提高表面重建过程的时间效率和内存效率,因此我们从表面网格质量、重建算法效率两方面着手基于粒子的流体表面重建的综述。

研一上学期课程比较繁重,加上在实验室要做的事情也多,所以最近博客都没更新了。最近数图课上到频域变换处理相关章节,其中的傅里叶变换其实在图形学领域也有颇多的应用(例如大规模的海水模拟),遂写下这篇博客整理了一些关于傅里叶变换的内容。

在基于欧拉网格的烟雾模拟中,流体与自由面的接触面是一个模糊的边界,因此无需对烟雾的边界进行对流。但在液体模拟中,流体与自由面之间是有一个明确的边界,因此我们需要显式地跟踪这个流体边界来模拟液体的物理行为,基于水平集的自由表面流(Free-Surface Flow)是目前的主流方法。

基于粒子与基于网格的流体模拟算法是计算机图形学中的流体模拟界的两大算法框架,这两种算法分别对应了物理模拟中的两个视角:拉格朗日视角和欧拉视角。与基于粒子的拉格朗日流体模拟解然不同,基于欧拉网格的流体模拟采用了完全不同的算法策略,它不再关注随着物理规律运动的流体粒子,而将目光转向空间中的一组固定的网格点。

本文主要是流体不可压缩投影,在进行半拉格朗日对流之后,还需要对流体速度进行修正,使流体的速度场散度为零。主要是关于流体压强的泊松方程求解,通常采用共轭梯度法求解大规模稀疏矩阵的线性方程组,辅以不完全的Cholesky因子化。涉及到的数学内容比较多。



博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Material X 作为主题 , 总访问量为 次 。
载入天数...载入时分秒...