这一篇来说说 网格生成方法 中的 Screen Space Mesh 法。
Screen Space Mesh
一般情况下,从隐函数曲面中提取出记载着表面数据的三角形网格面(mesh)时,我们常用像Marching Cubes这样的方法,把3D空间划分成数个3D网格单元(grid),然后在每个单元内生成mesh。与之不同,Screen Space Meshes(SSM)[1]则是一种在2D屏幕空间中生成mesh的方法。
SSM的处理对象是从粒子中生成的隐函数闭曲面。当我们用三角形mesh来表示物体的形状时,人眼看不到的面是没有绘制必要的,我们常用的OpenGL等3D API图像绘制中一般都会实现这样的隐面消除功能。SSM法也与之类似,由于没有必要绘制隐面,这个方法先从3D空间的粒子投影到2D屏幕空间后生成的深度图中,生成2D的mesh,然后再对进行逆投影处理,只生成从视点能看到的那部分由三角形构成的mesh。另外,通过给深度图添加平滑过滤器,可以得到类似元球技术(Metaball)这样的渲染。
3D Marching Cubes的计算量与各轴的分割数n的三次成比例,而由于SSM是在2D空间中生成mesh的手法,计算量只和n的2次相关。
输入
SSM的处理对象是粒子数据,输入数据可分为粒子的坐标和投影变换矩阵两部分,表示如下。
- 粒子坐标 :

- 投影变换矩阵 :

固定参数如下所示:
- 屏幕间隔 :

屏幕空间的grid大小。 - 粒子半径 :

屏幕空间中的粒子半径。 - 平滑化系数 :

深度图平滑化的过滤器大小和轮廓平滑化的迭代次数。 - 深度阈值 :

深度值的网格化阈值。比这个阈值大的深度值所在的grid才进行mesh化处理。
处理步骤
深度图表示为:
各grid的深度值则用
表示。grid分割数,是由屏幕间距
和屏幕大小(
)按照如下方式计算。

本文详细介绍了Screen Space Mesh(SSM)方法,一种在2D屏幕空间中生成网格的算法,用于从粒子数据中构建3D形状的2D表示。通过深度图的生成、平滑处理、轮廓检测和顶点生成,最终实现3D空间的逆投影,形成可见的三角形mesh。SSM相比Marching Cubes,计算量更小,适合实时渲染。
最低0.47元/天 解锁文章
2260

被折叠的 条评论
为什么被折叠?



