2013-11-22 117 views
29

我在一個項目中使用ThreeJS,並注意到舊版本渲染線框的方式與新版本不同,我無法弄清楚如何還原(我會喜歡)。Three.JS線框材質 - 所有多邊形與邊緣對比

這撥弄使用發行54只渲染對象的外部邊緣與線框材料得出:http://jsfiddle.net/ksRyQ/ 或在這裏描繪的情況下,這是平臺特定的(我在Mac上的鍍鉻):

enter image description here

在另一方面,當我運行相同的代碼在本地使用的是新版R61我看到每個多邊形的邊緣,如:

enter image description here

在這兩種情況下的代碼很簡單:

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

我敢肯定,我可以讓立方體出來線什麼的,但我寧願真正瞭解這個問題。

任何線索?有沒有設置這個或可以調整的東西?其次,你會注意到,現在代碼使用畫布渲染器,儘管我打算使用webGL渲染器,但是兩者(即使存在其他差異)也是如此。

回答

48

如果你想呈現給定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

+7

只是爲了詳細說明,你看到的對角線,因爲四邊面支持從three.js所下降,所以CubeGeometry和其他人現在用三角形來實現。 – yaku

+0

明白了,謝謝雅庫,肯定回答了我的基本問題 - 如果我想要別的東西,我只需要以不同的方式繪製它。 – tekunokurato

+0

我在第71版上,沒有EdgesGeometry或WireframeGeometry,我可以用什麼來代替? – shinzou