2017-08-29 66 views
0

我有這一點的代碼是拋出一個錯誤。不過,它在這個jsfiddle中工作得很好。我試圖旋轉一個立方體,並用軌跡球控制平移它。這在小提琴中起作用,但是當我將它帶入視覺工作室時,它會將此錯誤顯示爲鑲邊,「無法讀取屬性 '未定義的multiplyQuaternions'。正確的方式實現這個較舊的R70 threejs代碼與新版本一起工作

https://jsfiddle.net/perrinprograms/n6u6asza/668/

這就是我想實現的代碼。我猜這是因爲小提琴使用的是舊版本的three.js,而我在我的項目中使用了更新的版本。有誰知道是否有一種方法可以正確書寫這一行,「geometry.quaternion」?謝謝。

var geometry = new THREE.Geometry(); 

deltaRotationQuaternion = new THREE.Quaternion() 
        .setFromEuler(new THREE.Euler(
         toRadians(deltaMove.y * 0.4), 
         toRadians(deltaMove.x * 0.4), 
         0, 
         'XYZ' 
        )); 
      geometry.quaternion.multiplyQuaternions(deltaRotationQuaternion, geometry.quaternion); 
     } 

回答

1

THREE.Geometry沒有quaternion屬性(從我可以告訴,R70沒有,要麼)。

THREE.Object3D確實有一個屬性,是THREE.Mesh的基類,所以你可以使用它像這樣:

var myMesh = new THREE.Mesh(geometry, material); 
myMesh.quaternion.multiplyQuaternions(deltaRotationQuaternion, myMesh.quaternion); 

編輯:看你的小提琴,它看起來像你已經想通那個,對嗎?

three.js r87

+0

OH!是啊。由於我的項目中存在一些令人困惑的命名約定,並且還因爲我還沒有吃午餐,所以我忽略了這一點。謝謝吉姆! – totallytypicalcow

相關問題