如何在Python中偏移/加厚/固化三维网格?

2024-09-29 23:30:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种方法,通过Python脚本将TIN(不规则三角网)网格(例如景观)偏移一致的距离。在过去,我调用了Blender's Solidify modifier via the API,它工作得很好,但我想找到一个不需要Blender作为依赖项的替代方案

目前,我正在迭代每个三角形,制作每个顶点的副本,并将这些顶点沿其父三角形的曲面法线移动一个设定的距离。当同一顶点出现在多个三角形中时,我计算每个法线的偏移量并使用平均值。然后,我再次将顶点连接在一起以生成偏移网格

对于较小的偏移,这似乎可行,但网格中的尖锐特征可以创建自相交

有没有提供更好方法的特定算法或库

到目前为止,除了搅拌机,我发现:

但是我没有发现太多关于Python的东西,例如在Open3DTrimesh


Tags: the方法脚本api网格距离via景观
1条回答
网友
1楼 · 发布于 2024-09-29 23:30:47

我认为偏移的简单方法是沿着平均法线移动顶点,而不是沿着每个法线移动顶点。 (好的,这句话中的区别很难看出;))

手工做

我的意思是,当你得到尖锐的几何体时,邻接法线的平均长度不再是1,所以最终你不会偏移你的顶点所需的距离。 我认为应该计算相邻法线的和,然后对这些向量进行规格化,得到每个顶点的法线。如果有3个以上的三角形连接到每个顶点(通常情况下),则还需要根据三角形的连接角度对相邻法线进行加权求和

或者使用python模块

你也可以pymadcad 有一个函数完全符合我所说的:

from madcad import *

surface = Mesh([points, ...], [triangles, ...])
my_thick_mesh = thicken(surface, distance)

关于这个问题有3 function

  • 充气偏置给出所需的偏置矢量

  • 充气偏移网格曲面

  • 加厚使用

    • 原始曲面

    • 偏置表面

    • 两边

相关问题 更多 >

    热门问题