0
2つの単位ベクトル(私は 'Ox'と 'Oy'と呼ばれています)、1つの挿入ポイント、常に{0 0 1}と思われるOz 'ベクトルを生成する。例えばthree.js:2 x 3回転ベクトルまたはマトリックスへの方向ベクトル
(2回転後):
Ox:{x: 0.956304755963036, y: -0.292371704722735, z: 0}
Oy:{x: -0.250611464938861, y: -0.819713166317425, z: 0.51503807491006}
move:{x: 889.08282028218, y: -845.071708420642, z: -396.787982804802}
問題がある:three.js内このシステムにmy_meshを整列する方法?
私は実際にそれが突き出方法を見つけ出すことはできませんが、this answerのおかげで私はこれに来た:解決に近づくように思わ
if('Ox' in align && 'Oy' in align){
var mx = new THREE.Matrix4().lookAt(align.Ox , new THREE.Vector3(0,0,0), new THREE.Vector3(0,1,0));
var my = new THREE.Matrix4().lookAt(align.Oy , new THREE.Vector3(0,0,0), new THREE.Vector3(1,0,0));
mx.multiply(my);
var qt = new THREE.Quaternion().setFromRotationMatrix(mx);
my_mesh.matrix.makeRotationFromQuaternion(qt);
}
// move
mesh.matrix.setPosition(align.move);
mesh.matrixAutoUpdate = false;
?西の答えの後
EDIT
、私はベクトルが直交していないので、私はこの「座標システム」と呼ばれていてはならないことを実現します。以下は
は、回転後にいくつかのレコード(「Z30」という意味がオズの周りに30度回転)である..私はオズが常に{x: 0, y: 0, z: 1}
// base
Ox: {x: 1, y: 0, z: 0}
Oy: {x: 0, y: 1, z: 0}
move: {x: 6.42995404746696, y: -500, z: -268.028464077285}
// base x45
Ox: {x: 1, y: 0, z: 0}
Oy: {x: 0, y: -0.707106781186548, z: 0.707106781186547}
move: {x: 6.42995404746696, y: -73.2233047033605, z: -444.805159373921}
// base y60
Ox: {x: 0.500000000000001, y: 0, z: 0.866025403784438}
Oy: {x: 0, y: 1, z: 0}
move: {x: 6.42995404746766, y: -500, z: -268.028464077285}
// base z30
Ox: {x: 0.866025403784439, y: 0.5, z: 0}
Oy: {x: 0.5, y: -0.866025403784439, z: 0}
move: {x: -118.570045952533, y: -33.4936490538881, z: -268.028464077284}
// base z30 x45
Ox: {x: 0.866025403784439, y: 0.353553390593274, z: -0.353553390593273}
Oy: {x: 0.5, y: -0.612372435695795, z: 0.612372435695794}
move: {x: -118.570045952533, y: -96.9068910760492, z: -421.1215730}
// base z30 x45 y60
Ox: {x: 0.739198919740117, y: 0.353553390593274, z: 0.573223304703363}
Oy: {x: 0.28033008588991, y: 0.612372435695795, z: -0.739198919740117}
move: {x: -63.6525674250102, y: -403.093108923947, z: -83.228734142255}
'ox'、' oy'、 'oz'は相互に直交しているようには見えません。そのような場合は、純粋なローテーションについては説明していません。たぶん、「オズ」はあなたが思うものではないでしょうか? – WestLangley
いいえ、彼らはothogonalではない、このコーディングについてのEDITを加えました。 – jeum