如何将3D物体表面展平成2D阵列?

时间:2017-04-14 00:50:27

标签: python numpy 3d

我有3D对象,表示为numpy数组。 我怎样才能展开"表面"这些对象得到一个二维价值图(我不关心内在价值)?

它类似于展开地球表面,但形状因人而异。 enter image description here

1 个答案:

答案 0 :(得分:2)

这是一个顶点问题。模型上的每个三角形都是一个平面,可以映射到2D平面。因此,没有任何假设结构的最天真的解决方案是:

for triangle in mesh:
    // project to plane defined by normal to avoid stretching

这种解决方案并不理想,因为它将所有紫外线置于彼此之上。下一步是展开三角形以填充某个空间。这是布局阶段,用于定义顶点在2D空间中的布局方式。

通常,将UV放在单位正方形内是理想的。这样可以从单个图像轻松进行UV映射。

选项:2

使用已知的2D贴图形状围绕对象,并根据法线将每个三角形投影到形状上。这提供了一种在结构化庄园中展开紫外线的机制。一个示例对象是投影到多维数据集。

选项:3

参考学术论文和开源库/工具,如blender: https://wiki.blender.org/index.php/Doc:2.4/Manual/Textures/Mapping/UV/Unwrapping

blender使用上述方法解开任意几何体。如blender展开页面所述,还有其他方法可以实现此目的。关于blender的好处是你可以参考源代码来实现uv unwrap方法。

希望这有用。