Three.js / BufferGeometry如何使用mesh&线材料

时间:2015-10-28 12:45:18

标签: three.js

我正在使用BufferGeometry绘制三角形。 我可以使用网格几何,为每个三角形指定3个索引属性。我使用的是没有线框的基本材料。我认为我可以使用光线投射。

我也看过线框的linesegments方法。有趣。

好的,我的问题......我希望看到我的三角形作为线框,我也需要光线投射。所以....解决方案是创建自己的着色器,不是吗? 感谢

1 个答案:

答案 0 :(得分:0)

你没有必要创建一个自定义着色器,你可以使用线框材质的网格,并且光线应该仍然是"击中"对象

var mesh = new THREE.Mesh(geometry,new THREE.MeshBasicMaterial({wireframe : true}));

如果由于某种原因没有命中或你想要LineSegments对象,你可以跟踪影响该对象的所有转换,并将它们应用到你不会添加到场景的网格上

var segmentObject = new THREE.LineSegments(geometry,lineMaterial);
scene.add(segmentObject);
var meshNotInScene = new THREE.Mesh(geometry,dummyMaterial);

您将使用网格物体来确定光线投射是否击中了物体

通过这种方式你可以为一个物体设置一个不同的命中箱,例如,如果你有一个飞行的甜甜圈,你可以通过它与圆形网格配对,你可以选择它,即使你点击它的洞等...

请记住,材料有侧面,如果你不关心哪一面是哪一面" side"到THREE.DoubleSide