Показать сообщение отдельно
Старый 26.08.2010, 12:52
zatoichi вне форума Посмотреть профиль Отправить личное сообщение для zatoichi Найти все сообщения от zatoichi
  № 1  
Ответить с цитированием
zatoichi
 
Аватар для zatoichi

Регистрация: Aug 2010
Адрес: 55.1° с.ш. 82.56° в.д.
Сообщений: 25
По умолчанию Как точно определить позицию на сцене вращающегося 3d объекта!

Доброго времени суток!

У меня не получается точно определить глобальные координаты 3d объекта, являющегося ребенком иерархии нескольких DisplayObjectContainer'ов (точнее Sprite'ов), причем эти родители динамически вращаются в 3d пространстве.
Определяю положение объекта на сцене таким образом:
Код AS3:
var objPoint:Point = obj3D.local3DToGlobal(new Vector3D(0,0,0));
При этом координаты постоянно смещаются в зависимости от поворотов 3d объекта
Пробовал и по-другому:

Код AS3:
var objPoint:Point = obj3D.parent.local3DToGlobal(new Vector3D(obj3D.x,obj3D.y,obj3D.z));
И так:

Код AS3:
var objPoint:Point = obj3D.local3DToGlobal(new Vector3D(obj3D.x,obj3D.y,obj3D.z));
Но последнее это конечно не то, что нужно))
Координаты вроде близко, но не те (отклонения достигают 150 пикселей в зависимости от поворота объекта (точнее его прародителя)). Это можно просмотреть при помощи другого объекта, который я добавляю к root, с заданными координатами objPoint.

Добавлено через 1 час 17 минут
Проблему решил с допустимыми погрешностями в 2-4 пикселя. Проблема была в некотором отставании расчета от времени rendering'а объекта.