2013-06-05 161 views
1

我一直在使用THREE.JS在WebGL中使用這個小型游泳池遊戲。使用THREE.JS滾動球

現在我有一個問題,從一個位置滾動球,說Vector3(0, 0, 0)到另一個位置Vector3(10, 50, 200)。這個動作不是問題,但我無法解決旋轉問題。下面是我如何做到這一點,或者嘗試:

首先,我得到的距離:

var movement = new THREE.Vector3(); 
movement.subVectors(to, from); 
var distance = movement.length(); 

接下來,我計算角度

var angle = (distance/(radius * 2 * Math.PI)); 

在那之後,事情變得有點混亂,我不知道用什麼方法來旋轉實際的物體 - 我試過四元數:

var quaternion = new THREE.Quaternion().setFromAxisAngle(movement.normalize(), angle); 
mesh.rotation.setEulerFromQuaternion(quaternion); 

做一個你知道如何實現這種輪換?

感謝您的幫助!

+1

這個例子有幫助嗎? https://bl.ocks.org/duhaime/801daaa005c373eab6847741bd3f497a – duhaime

+1

我自己解決了這個問題,忘了自己回答,但是,這會有所幫助。 –

回答

0
mesh.rotation.set(along_x, along_y, along_z); 
mesh.rotation.z += 0.1; 

你可以在網使用applyTransformation,之後,你應該有你的lookAt矢量指向to載體,然後應用簡單的動畫旋轉圍繞x軸的(因爲對象的lookAt矢量= z軸)。

希望這會有所幫助。

+0

我真的不知道你的意思,我怎麼會對齊球體,使z方向指向目標? –