我在一个项目中使用ThreeJS,并注意到较旧的版本与较新的版本呈现不同的线框,而且我不知道如何还原(我希望这样做)。

使用版本54进行的这种提琴演奏仅渲染了使用线框 Material 绘制的对象的外部边缘:http://jsfiddle.net/ksRyQ/
或如图所示,以防这是特定于平台的(我在Mac chrome上):

另一方面,当我使用较新的版本r61在本地运行相同的代码时,我看到了每个多边形的边缘,如下所示:

两种情况下的代码都很简单:

material = new THREE.MeshBasicMaterial({
    color: 0xff0000,
    wireframe: true
});

我确定我可以使多维数据集脱颖而出,但是我宁愿真正理解该问题。

有什么线索吗?是否有此设置或可以调整的内容?其次,您会注意到,尽管我计划使用webGL渲染器,但是现在该代码正在使用canvas渲染器,但是两者都存在相同的现象(即使存在其他差异)。

最佳答案

如果要渲染给定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

10-04 23:02