2012-10-11 259 views
0

我從github和其他關於在stackoverflow上旋轉對象的問題找到了參考代碼。three.js - 未捕獲TypeError:無法讀取未定義的屬性'x'

var vector = new THREE.Vector3(1, 0, 0); 
     var axis = new THREE.Vector3(1, 0, 0).normalize(); 
     var angle = Math.PI/2;     

     function rotateAroundWorldAxis(object, axis, angle) {            
      var matrix = new THREE.Matrix4().makeRotationAxis(axis, angle); 
      matrix.multiplyVector3(vector); 
      object.matrix = matrix; 
      object.rotation.setEulerFromRotationMatrix(object.matrix); 
     } 

     function render() {      
      rotateAroundWorldAxis(tubeMesh, axis, angle); 
      renderer.render(scene, camera); 
     } 

我找不出可能是錯誤的原因「Uncaught TypeError:無法讀取未定義的屬性'x'」。 在谷歌瀏覽它顯示爲

  • 遺漏的類型錯誤:無法讀取屬性 'X' 的未定義在three.min.js:在three.min.js 56個
  • THREE.Matrix4.makeRotationAxis:56
  • rotateAroundWorldAxis在my_model.htm:290
  • 呈現在my_model.htm:297
  • 有生

的錯誤是在three.min.js在行號。我正在使用three.js庫的r51。

+1

嗨。不知道你現在是否已經完成了它,但你可能想嘗試使用ThreeJS的未壓縮版本(即three.js而不是three.min.js)。然後你就可以看到錯誤發生的位置,以及它試圖做什麼。我最近自己也有這個相同的錯誤,但我認爲它與從Blender導出的模型中的頂點組被分配到不再存在的骨骼有關。我刪除並重新創建了我的頂點組,並解決了問題。 – null

回答

0

在情況下,我們有同樣的問題(three.js所想讀入UV-映射陣列),您可以通過解決它:

加入UV-mapping(在攪拌機)到您的模型。
它基本上需要:

  1. 標記在對象上的接縫。
  2. 展開模型。
  3. 導出啓用UV的模型。

對於步驟1和2,您可以按照this好步行。
(注意:除了文章中的步驟,在我的版本(2.59)中,我不得不先創建材質和紋理。)

相關問題