我在一个项目中使用ThreeJS并注意到旧版本渲染线框与新版本不同,我无法弄清楚如何恢复(我更喜欢)。
使用版本54的这个小提琴仅渲染使用线框材质绘制的对象的外边缘:http://jsfiddle.net/ksRyQ/ 或者如图所示,以防这是特定于平台的(我在mac chrome上):
另一方面,当我使用较新的版本r61在本地运行相同的代码时,我会看到每个多边形的边缘,如:
两种情况下的代码都很简单:
material = new THREE.MeshBasicMaterial({
color: 0xff0000,
wireframe: true
});
我确信我可以用线条或其他东西制作立方体,但我宁愿真正理解这个问题。
任何线索?有没有可以调整的设置?其次,你会注意到,现在代码正在使用画布渲染器,虽然我打算使用webGL渲染器,但两者都是相同的现象(即使存在其他差异)。
答案 0 :(得分:61)
如果要渲染给定geometry
的线框,现在可以使用此模式:
var geo = new THREE.EdgesGeometry( geometry ); // or WireframeGeometry( geometry )
var mat = new THREE.LineBasicMaterial( { color: 0xffffff, linewidth: 2 } );
var wireframe = new THREE.LineSegments( geo, mat );
scene.add( wireframe );
WireframeGeometry
将呈现所有边缘。 EdgesGeometry
仅渲染硬边。
另请参阅this related answer有关如何渲染模型及其线框的信息。
编辑:更新为three.js.r.82