2017-04-14 114 views
1

我有3D对象表示为numpy数组。 如何展开这些对象的“表面”以获得值的2D地图(我不关心内部值)?如何将3D物体表面压平成2D阵列?

它与展开地球表面相似,但形状因案例而异。 enter image description here

+1

您必须处理的关于某个轴对称的形状?你也知道阵列中的哪些点是曲面点吗?发布代码片段可以真正帮助澄清你的问题,因为现在它有点太宽泛。 – nikjohn

回答

1

这是一个顶点问题。模型上的每个三角形都是可以映射到2D平面的平面。因此,没有任何假设结构中最天真的解决办法是:因为它会将所有的紫外线的对彼此的顶部

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

这种解决方案并不理想。下一步将分散三角形填补一定的空间。这是布局阶段,它定义了2D空间中顶点的布局方式。

通常情况下,将紫外线放置在单位正方形内是理想的选择。这允许从单个图像轻松进行UV映射。

选项:2

您包围与已知的2D对象映射形状和投射每个三角形上基于其正常的形状。这提供了一个机制解开uv的结构庄园。一个示例对象将投影到一个立方体上。

选项:3

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

搅拌器使用如上所述解开任意几何形状的方法。还有其他方法可以在搅拌机展开页面上描述完成此操作。关于搅拌机的好处是你可以参考uv unwrap方法实现的源代码。

希望这是有帮助的。