[Three.js] 쿼터니언을 사용하여 임의의 방향으로 객체를 향합니다.
4443 단어 three.jsWebGL3DQuaternion
법선 자체는 곧바로 취할 수 있었지만, Plane을 어떻게 그 법선 방향으로 향하게 할까, 하는 것을 이 기사 를 참고로 해 만들어 보았다.
테스트용으로 법선 방향과 오브젝트의 방향을 테스트하는 것을 만들었으므로, 그것을 베이스에 메모를 남겨 둔다.
샘플
htp : // js. t / ed_m18 / tfJW
샘플은 이런 느낌으로, 머리를 임의의 벡터에 따르게 한다, 라고 하는 것.
x, y, z 축의 위치에서 슬라이더를 만지면 그에 따라 객체가 회전합니다.
흐름
먼저 흐름을 쓰면,
라는 흐름.
「위」라고 쓴 것은 반드시 하늘 방향이 아니고, 오브젝트의 「상」이 되는 벡터.
Three.js를 사용한 샘플 코드를 발췌하면 다음과 같다.
샘플 코드
Threejs-sample.js
//「上」方向のベクトルを生成。サンプルでは「空」方向。
var up = new THREE.Vector3(0, 1, 0);
//法線ベクトルを取得。サンプルではinput要素から取得。
var normalAxis = new THREE.Vector3(+xInp.value, +yInp.value, +zInp.value).normalize();
//回転軸用のベクトルを生成
var dir = new THREE.Vector3();
//「上」方向と法線ベクトルとの外積を計算。正規化。
dir.crossVectors(up, normalAxis).normalize();
//上記ベクトルとの内積(cosθ)
var dot = up.dot(normalAxis);// / (up.length() * normalAxis.length());
//acos関数を使ってラジアンに変換。
var rad = Math.acos(dot);
//クォータニオンオブジェクトを生成
var q = new THREE.Quaternion();
//計算した回転軸と角度を元にクォータニオンをセットアップ
q.setFromAxisAngle(dir, rad);
//適用したいオブジェクトに回転を適用
mesh.rotation.setFromQuaternion(q);
Three.js를 사용하면 쿼터니언이라든지 그 외 여러가지의 귀찮은 계산을 해 주는 클래스가 있으므로, 이 정도의 행수로 간단하게 할 수 버립니다.
Reference
이 문제에 관하여([Three.js] 쿼터니언을 사용하여 임의의 방향으로 객체를 향합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/edo_m18/items/ba2d58f7a0dda4bd8827텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)