3D 封闭网格汽车对象的体积

Posted

技术标签:

【中文标题】3D 封闭网格汽车对象的体积【英文标题】:Volume of a 3D closed mesh car object 【发布时间】:2010-11-27 11:41:25 【问题描述】:

我有一个 3D 封闭网格汽车对象,其表面组成 三角形。我想计算它的体积、体积中心和惯性张量。

你能帮我吗

问候。 乔治

【问题讨论】:

是否应该将其标记为“作业”? 查看这个现在有最佳答案的问题:***.com/questions/1406029/… 【参考方案1】:

对于音量...

对于每个三角形面,查找其角点。叫他们 P、Q、R。 计算这个数量(我称之为“部分体积”)

pv =  PxQyRz + PyQzRx + PzQxRy - PxQzRy - PyQxRz - PzQyRx

将所有方面的这些加在一起并除以 6。

重要!从外部看,每个刻面的 P、Q、R 必须按顺时针方向排列。 (或者全部逆时针,只要它在所有方面都是一致的。)

如果网格有任何四边形,只需暂时幻化连接一对对角的对角线。这使它变成了两个三角形。

实际的计算改进:在使用 P、Q 和 R 进行数学运算之前,减去某个“中心”点 C 的坐标。这可以是质心、最小/最大 x、y 和 z 之间的中点,或者网格内部或附近的任何方便点。这有助于最大限度地减少截断错误,从而获得更准确的卷。

【讨论】:

【参考方案2】:

从数值的角度来看,您要实现的目标非常简单,可以简化为计算几个正交。***将提供有关其背后数学的所需信息。

如果您正在寻找开箱即用的体积计算,请查看this entry。 就惯性而言——形状是不够的,你还需要质量分布。

【讨论】:

【参考方案3】:

好吧,这里提供的关于汽车的信息并不多 - 您应该能够将汽车分解成更简单的形状 - 您需要的近似程度越高 - 您可以将其分解成的形状就越简单。 (如果汽车以某种方式动态生成并且每次都完全不同,这可能会很困难......但我认为这种情况没有任何意义)。

这应该有助于找到各种更简单形状的惯性张量:http://www.gamedev.net/community/forums/topic.asp?topic_id=57001,找到体积和诸如球体和立方体之类的东西是相当普遍的知识,所以我不会费心把它联系起来。

【讨论】:

【参考方案4】:

我认为是阿基米德发现,如果你将汽车浸入一定体积的液体中,排出的液体将与汽车的体积相同。

我不确定在这种情况下这会对您有什么帮助。在后台运行液体模拟并将网格浸入其中听起来有点过头了。虽然,我认为它确实有效,因此有资格作为(尽管有点无用)答案。 ;^)

【讨论】:

网格上有孔,所以你只需要测量制作网格的金属丝的体积;-) nono... 他特别写道:我有一个 3D 封闭网格汽车对象,其表面由三角形组成。由于它是封闭的,它不会让液体进入;^) 将网格导出到 DXF,使用 Z 打印机打印出汽车,浸入水中,然后将位移体积乘以模型的缩放比例。简单!

以上是关于3D 封闭网格汽车对象的体积的主要内容,如果未能解决你的问题,请参考以下文章

Three.js如何计算Mesh的体积

100个 Unity实用技能| Unity 查询游戏对象位置是否在NavMeshAhent烘焙上的网格上

100个 Unity实用技能| Unity 查询游戏对象位置是否在NavMeshAhent烘焙上的网格上

100个 Unity实用技能| Unity 查询游戏对象位置是否在NavMeshAhent烘焙上的网格上

网格组不可见 Three.JS ColladaLoader

Unity3D绘制物体表面三角形网格