2012-07-12 67 views
2

我有一個可能愚蠢的問題。我試圖迭代通過飛機的頂點。 爲什麼不做這項工作。我得到一個「Uncaught TypeError:無法設置未定義的屬性'x'」錯誤。飛機中的頂點沒有位置?

plane = new THREE.Mesh(new THREE.PlaneGeometry(100,100, 10, 10), planeMat); 

//Set up heightmap for plane 
var vertices = plane.geometry.vertices; 
var l = vertices.length; 
for (var i = 0;i < l;i++){ 
    vertices[i].position.x = Math.random()*50; 
} 

scene.add(plane); 

整個代碼會導致http://jsfiddle.net/sJESN/在上面的循環中取消註釋註釋行以獲取錯誤。

感謝您的幫助,我已經爲此瘋狂了3天! 對不起任何noob錯誤。

回答

6

作爲所有幾何對象的一部分的頂點數組沒有位置成員。位置變量是Object3D的成員,它是一個THREE.Vector3。頂點的數組實際上是本身 THREE.Vector3的數組,所以你只需要改變這一行

vertices[i].position.x = Math.random() * 50; 

到...

vertices[i].x = Math.random() * 50; 
+0

哇感謝一個非常快的回覆!它確實有效。 – Tobis 2012-07-12 19:49:51