【CG物理模拟系列】粒子法--表面生成手法(下)

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

这一篇来说说 网格生成方法 中的 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的处理对象是粒子数据,输入数据可分为粒子的坐标和投影变换矩阵两部分,表示如下。

  • 粒子坐标 : ssm.eq1.gif
  • 投影变换矩阵 : ssm.eq2.gif

固定参数如下所示:

  • 屏幕间隔 : ssm.eq3.gif
    屏幕空间的grid大小。
  • 粒子半径 : ssm.eq4.gif
    屏幕空间中的粒子半径。
  • 平滑化系数 : ssm.eq5.gif
    深度图平滑化的过滤器大小和轮廓平滑化的迭代次数。
  • 深度阈值 : ssm.eq6.gif
    深度值的网格化阈值。比这个阈值大的深度值所在的grid才进行mesh化处理。

处理步骤

深度图表示为:

ssm.eq7.gif

各grid的深度值则用ssm.eq8.gif表示。grid分割数,是由屏幕间距ssm.eq9.gif和屏幕大小(ssm.eq10.gif)按照如下方式计算。

ssm.eq11.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值