在3D平面顶部的2D覆盖物与纹理

时间:2015-02-10 14:54:54

标签: three.js 2d overlay

我正试图在我的飞机顶部绘制一个2D广场,但我无法找到一个好的解决方案。到目前为止,我只是在飞机顶部绘制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 here enter image description here

谢谢, 尼古拉斯

1 个答案:

答案 0 :(得分:0)

为了防止z-fighting(共面[在同一平面上]对象混淆)你可以将其中一个对象设置为透明,不透明度1.0(hacky但很简单)或者你可以设置.polygonOffsetpolygonOffsetFactorpolygonOffsetUnits在材料上(将两者都设置为1.0应该很容易将其排除),但随意read more about it