Создание ArrowHelper с правильным вращением


Как я могу создать ArrowHelper в три.js (r58) с правильным вращением?

var point1 = new THREE.Vector3(0, 0, 0);
var point2 = new THREE.Vector3(10, 10, 10);
var direction = new THREE.Vector3().subVectors(point1, point2);
var arrow = new THREE.ArrowHelper(direction.normalize(), point1);
console.log(arrow.rotation);

Я всегда заканчиваю с Object {x: 0, y: 0, z: 0} для вращения стрелки. Что я делаю не так?

1 2

1 ответ:

ArrowHelper использует кватернионы, чтобы определить его ориентацию.

Если вы сделаете это:

var rotation = new THREE.Euler().setFromQuaternion( arrow.quaternion );

Вы увидите эквивалентную ориентацию, выраженную в углах Эйлера, хотя в r.59, arrow.rotation теперь автоматически обновляется, поэтому вы больше не увидите нулей.

Правка: ответ обновлен до трех.Яш Р.59