2016-09-28 4 views
0

three.jsとWebSocketsを使ったコンセプトの証明として、1年前に小さなタンクゲームを作成しました。しかし、Three.jsのそれ以降のバージョンでは、クォータニオンを行う方法が変更されました。私は最新のバージョンでそれを行う方法のサンプルコードを見つけることができません。これは私の古いコードである:Three.Jsのクォータニオン - ランドスケープオブジェクトをクローズする

function calculateQuaternions(tankmesh) { 
    var n = getLandscapeNormal(tankmesh); 
    var q1 = new THREE.Quaternion(); 
    q1.setFromAxisAngle(new THREE.Vector3(0, 1, 0), tankmesh.rotation.y); 
    var q2 = new THREE.Quaternion(); 
    var axis = new THREE.Vector3(0, 1, 0); 
    var theta = Math.acos(axis.dot(n)); 
    axis.cross(n).normalize(); 
    q2.setFromAxisAngle(axis, theta); 
    q2.multiply(q1); 
    tankmesh.quaternion = q2; 
} 

getLandscapeNormal機能は、タンク(タンク位置風景の傾きから計算した)傾斜させることschould方向を示す正規化ベクトルを返します。 コードが機能したら、タンクはこのビデオのように動いた:https://www.youtube.com/watch?v=CMNllyqq_O0

誰もこの計算方法を今すぐ手伝ってもらえますか?

答えて

0

答えが見つかりました。

置き換えます:

tankmesh.quaternion = q2; 

で:

tankmesh.setRotationFromQuaternion(q2); 
+0

'tankmesh.quaternion誰がに後で古いThree.JSからquarternionsを移植に問題がある場合、(バージョン81)が行うの方法です.copy(q2);はそれを行う方法です。 – WestLangley

関連する問題