Three.jsで同じ行列mulitiplyをする必要があります。私はObject3Dを持っていたし、これを行うとき、私はCONSOLE.LOGする権利行列を得る:オブジェクトからTHREE.js行列をコピーしてください
console.log (scene.getObjectByName("Pointer").matrix)
結果は次のようである:
T ... E.Matrix4 {要素:[16] Float32Array} 要素:Float32Array [16] 0:11:02:03:04:05:16:07:08:09:0 10:11 1:0 12:-150 13:0 14:0 15:1
ここで、12番目の要素の値は-150です(obj.translationX(-150)の後)。 identiy行列をバック与える
var newMat = new THREE.Matrix4();
console.log(scene.getObjectByName("Pointer").matrix.elements)
// output: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
newMat = newMat.copy(scene.getObjectByName("Pointer").matrix);
console.log(newMat);
// output:elements: Float32Array[16] 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1
(第12回要素の意味は次のとおりです。0)ここで間違っている
いただきましたか?
更新:内のレンダリングループ... newMat.copy(...)..うまく動作します!
あなたが最初に私はこれがTHREE.Object3D –
のようなコンテナオブジェクトで見ていupdateMatrixを呼び出して、オブジェクト名のポインターであるi)は、(オブジェクトubdateMatrixを試してみました...しかし、このdidntのは助けました。はいポインタはcontainerObjectです..ここで私はloadedJsonObjectを配置します – vagus1975
child_clone.applyMatrix(container [i] .object3d.children [j] .parent.matrix); //これは悪い child_clone.applyMatrix(container [i] .object3d.children [j] .parent.parent.matrix); child_clone.applyMatrix(container [i] .object3d.children [j] .parent.parent.parent.matrix); child_clone.applyMatrix(container [i] .object3d.children [j] .parent.parent.parent.parent.matrix); child_clone.updateMatrixWorld() moralはparentから子のコンテナにマトリックスを適用し、次にupdateMatrixWorldを適用します(実際には私のマトリックスは更新されていません.3つのObject3Dコンテナの代わりに独自のオブジェクトを作成していました) –