我在一个项目中使用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