我正在尝试在 three.js 中创建特定类型的 3D 对象。例如,我想要一个处于线框模式的立方体(所以只显示边缘)。但我希望后面的边缘是虚线的。插图:
我不知道这对于three.js 是否可行,或者我是否应该直接尝试使用webgl。我应该THREE.Mesh
在线框中THREE.Line
使用还是同时使用,LineDashedMaterial
或者两者都在彼此之上?
我正在尝试在 three.js 中创建特定类型的 3D 对象。例如,我想要一个处于线框模式的立方体(所以只显示边缘)。但我希望后面的边缘是虚线的。插图:
我不知道这对于three.js 是否可行,或者我是否应该直接尝试使用webgl。我应该THREE.Mesh
在线框中THREE.Line
使用还是同时使用,LineDashedMaterial
或者两者都在彼此之上?
我设法做到了。您需要创建三个对象。
第一个对象:实体 3d 对象(我的意思是面而不是边缘)
第二个对象:所有边缘,但虚线
第三个对象:所有边缘,但正常(不是虚线)
对于第一个对象,使用 设置材质color: false, side: THREE.DoubleSide, depthTest: true
。
第二对象材料:color: (whatever you like), depthTest: false
.
第三对象材料:color: (whatever you like), depthTest: true
。
我还设置了所有材料polygonOffset: true, polygonOffsetFactor: 1, polygonOffsetUnits: 1
以摆脱 z-fighting。