【发布时间】:2016-04-23 12:33:57
【问题描述】:
我正在尝试将 3D 网格展平为 2D 形状。我想要达到的目标是this
基本上,您在图像中看到的是给定的网格及其沿不同视图的轮廓。我想用 Three.js 对任何给定的网格做同样的事情,但我不知道如何获得剪影。
我想到了两种可能的解决方案:
1) 复制网格并沿给定轴缩放以使其变平(例如,如果我想获得从正 Z 到负的形状的轮廓,我只需将其缩放为这个:
myMesh.scale.z = 0.001 // Small value to make it "2D-like"
问题:我正在复制和重绘一个可能非常大的网格,因此效率不高。
2) 将网格的顶点投影到 2D 平面,使它们都处于同一水平,然后在顶点之间创建线。
问题:这样说它根本不起作用,因为我丢失了有关顶点如何连接为面的信息。生成的形状将完全取决于顶点的投影顺序。
例如,如果我们考虑这个mesh 我从那个角度投影“在我面前”的顶点,我会得到these points(或多或少),但我不知道如何连接它们。
我应该如何进行?
【问题讨论】:
-
mesh.geometry 包含有关顶点如何连接的所有信息。只需使用 getContext('2d') 将所有三角形绘制到另一个画布中,然后将该画布用作纹理
标签: javascript 3d three.js webgl