我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:彩63彩票 > 多面体裁剪 >

三维模型的下方空白体积(具体见描述)如何计算?

归档日期:04-30       文本归类:多面体裁剪      文章编辑:爱尚语录

  三维模型的体积我会求,现在我想求得是如下定义的体积,我用二维示意图来表示。这个体积是:要托起所有所有法线朝下的面,所需要的填充材料的体积。 [图片] PS,我思考了几种方法(不对的地方帮忙指出来), 1.如果是二维多边形求下方面积的话,使用线段树可能就比较快速得求出体积了。三维求体积的话似乎不行,二维线段树都是矩形更新求解 2.(近似求法)用位图来分割模型的空间,根据模型三角形的法线朝向来更新位图,上方当前的表面…

  将多面体分解成三角形面,将法线朝下的面投影到xy平面上,如果这是个凸多面体的话这些面的投影一定互相不重叠,否则会稍微复杂一些,需要将这些投影进行裁剪,保留最靠下的,有的时候还会把一个面裁剪成许多个小三角形拼起来。可以两两判断三角形是否相交来完成这个过程,不断新加入三角形,如果新三角形与旧三角形相交,则判断哪一个三角形比较靠上,将靠上的三角形用旧三角形的边裁成多个部分,将每个部分重新分割成小三角形。重复这个过程直到所有的法向朝下的三角形面都正确投影到了xy平面上。记下每个三角形面三个顶点的x、y、z坐标。

  每个投影下来的三角形面对应的体积是个截角的三棱柱,也就是一个四棱柱减去一个三棱锥,可以很容易算出每个三角形面对应的体积。所有的体积加起来就是总的支撑体积。

  这个算法复杂度最坏情况下不会超过O(n^3),n是面数。大部分时候应该在O(n^2)左右。

  如果用Direct3D的话,从下往上做一个平行投影,把z缓冲取出来求和就可以求出支撑体积,这是个近似值,精度跟分辨率有关。

本文链接:http://ashtonstewart.net/duomianticaijian/89.html