2015-02-10 60 views
0

我想在我的飞机上画一个二维平面,但我无法得到一个好的解决方案。到目前为止,我只是在飞机上绘制3D线。带有纹理的3D平面上的二维覆盖图

geometry = new THREE.Geometry(); 
geometry.vertices.push(new THREE.Vector3(HANDLES[0].position.x, HANDLES[0].position.y, HANDLES[0].position.z)); 
geometry.vertices.push(new THREE.Vector3(HANDLES[0].position.x, HANDLES[1].position.y, HANDLES[0].position.z)); 
geometry.vertices.push(new THREE.Vector3(HANDLES[0].position.x, HANDLES[1].position.y, HANDLES[1].position.z)); 
geometry.vertices.push(new THREE.Vector3(HANDLES[0].position.x, HANDLES[0].position.y, HANDLES[1].position.z)); 
geometry.vertices.push(new THREE.Vector3(HANDLES[0].position.x, HANDLES[0].position.y, HANDLES[0].position.z)); 

material = new THREE.LineBasicMaterial({ 
    color: 0xff00f0, 
    linewidth: 20 }); 

line = new THREE.Line(geometry, material); 
scene.add(line); 

结果看起来不太好,因为该行与纹理混在一起。

这将是在平面上绘制净2D图形的最佳方式?然后,我想使用这个2D形状来选择飞机中的感兴趣区域。

我想一个解决方案是使用正交相机+盒子,但我想避免这种情况,如果可能的话。

enter image description hereenter image description here

谢谢, 尼古拉斯

回答

0

为了防止Z-战斗(共面[在同一平面上]对象入门混淆),则可以设置对象作为透明与不透明1.0中的一个( hacky但很容易的方法),或者你可以设置材料上的.polygonOffsetpolygonOffsetFactorpolygonOffsetUnits(设置为1.0应该很容易将其排除),但请随时致电read more about it

+0

谢谢,另请参阅:https://github.com/mrdoob/three.js/issues/2593 https://github.com/benpurdy/threejs-decals – Nicolas 2015-02-11 08:10:15