2013-05-02 4 views
2

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

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} для вращения стрелки. Что я делаю не так?

+0

Я просто хотел бы добавить, что я пытаюсь что-то вроде [это (см ответ есть)] (http://stackoverflow.com/questions/15316127/ три-js-line-vector-to-cylinder), но, похоже, что ротация уже не установлена ​​на ArrayHelper. – Zardoz

+0

var направление = новый THREE.Vector3(). SubVectors (** point2 **, ** point1 **); – aholub7x

ответ

2

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

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

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

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

EDIT: ответ обновлен до three.js R.59

+1

Большое спасибо, он отлично работает. Также добавлен ответ на старый вопрос [здесь] (http://stackoverflow.com/questions/15316127/three-js-line-vector-to-cylinder/16348610#16348610). – Zardoz

Смежные вопросы