我正在寻找一种方法,通过Python脚本将TIN(不规则三角网)网格(例如景观)偏移一致的距离。在过去,我调用了Blender's Solidify modifier via the API,它工作得很好,但我想找到一个不需要Blender作为依赖项的替代方案
目前,我正在迭代每个三角形,制作每个顶点的副本,并将这些顶点沿其父三角形的曲面法线移动一个设定的距离。当同一顶点出现在多个三角形中时,我计算每个法线的偏移量并使用平均值。然后,我再次将顶点连接在一起以生成偏移网格
对于较小的偏移,这似乎可行,但网格中的尖锐特征可以创建自相交
有没有提供更好方法的特定算法或库
到目前为止,除了搅拌机,我发现:
我认为偏移的简单方法是沿着平均法线移动顶点,而不是沿着每个法线移动顶点。 (好的,这句话中的区别很难看出;))
手工做
我的意思是,当你得到尖锐的几何体时,邻接法线的平均长度不再是1,所以最终你不会偏移你的顶点所需的距离。 我认为应该计算相邻法线的和,然后对这些向量进行规格化,得到每个顶点的法线。如果有3个以上的三角形连接到每个顶点(通常情况下),则还需要根据三角形的连接角度对相邻法线进行加权求和
或者使用python模块
你也可以pymadcad 有一个函数完全符合我所说的:
关于这个问题有3 function:
充气偏置给出所需的偏置矢量
充气偏移网格曲面
加厚使用
原始曲面
偏置表面
两边
相关问题 更多 >
编程相关推荐