Показать сообщение отдельно
Старый 18.01.2010, 16:44
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
я понял у perspectiveProjection есть св-во или метод, который определяет расстояние до наблюдателя?
не напрямую, но узнать его координаты в 3D-мире можно
у меня сейчас работает такой вариант:
Код AS3:
/**
 * расстояние до наблюдателя в руте
 */
public function get viewDistance():Number 
{ 
	if (!stage) return Number.MAX_VALUE;
 
 
	//точка наблюдателя в руте
	var projection:PerspectiveProjection = root.transform.perspectiveProjection;
	var viewPoint:Vector3D = new Vector3D(projection.projectionCenter.x, projection.projectionCenter.y, -projection.focalLength);
 
	//расстояния до наблюдателя
	var distance:Number = Vector3D.distance(viewPoint, globalPosition);
 
	return sortingPriority * distance;//sortingPriority - костыль для одного мутного случая, а вообще 1.0
 
}
 
/**
 * координаты в руте
 */
public function get globalPosition():Vector3D 
{ 
	return stage ? Utils3D.projectVector(transform.getRelativeMatrix3D(root), new Vector3D() ) : null;
}