Здравствуйте!
У меня возникли проблемы с
MouseEvent3D.MOUSE_MOVE и
object3D.localToGlobal(vector3D).
Помогите пожулуйста разобраться.
Мне необходимо реализовать перетаскивание объектов на плоскости. Из моих тестов я понял, что просто по главному контейнеру scene перетаскивать объекты не получается. Поэтому я создал плоскость, которую в дальнейшем хочу сделать невидимой.
Над плоскостью будут располагаться множество плоскостей с текстурами. Эти плоскости в не должны получать мышиные события, поэтому им я присвоил
mouseEnabled = false;
То есть есть сцена, главный контейнер - scene. Есть плоскость - debugPlane для того, чтобы координаты коректно брались. Без неё не выходит.
И допустим пока 1 объект.
Далее я назначил слушатели на главный контейнер.

Код AS3:
this._scene.addEventListener(MouseEvent3D.MOUSE_DOWN, onMouse3DDown);
this._scene.addEventListener(MouseEvent3D.MOUSE_UP, onMouse3DUp);
this._scene.addEventListener(MouseEvent3D.MOUSE_MOVE, onMouse3DMove);
В обработчике onMouse3DDown я проверяю объект и присваиваю его в
this._selectObject3D.
В обработчике onMouse3DMove я преобразовываю координаты в глобальные.

Код AS3:
(e:MouseEvent3D)
var localVector = new Vector3D( e.localX, e.localY, e.localZ);
var eventObj:Object3D = (e.target as Object3D);
this._direction = eventObj.localToGlobal(localVector);
и присваиваю
this._selectObject3D.
Вроде все просто и должно работать. Но не все так просто.
Видимо мало просто перевести координаты в глобальные.
Также я заметил, что когда курсор на объекте, объект центрируется по курсору.
Но, если курсор на плоскости - объект центрируется по курсору визуально со смещением по оси z.
То есть курсор в ногах объекта. Но по оси z я не смещаю. Координаты x и y задаются не верно.
Видимо нужно как-то дополнительно коректировать координаты?
В чем могут быть ошибки?