|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jun 2008
Сообщений: 283
|
сортировка 3d объектов если fieldOfView больше 1
День добрый.
Есть вопрос по поводу одной особенности в perspectiveProjection. Прикрепил файл что бы было понятно о чём пойдёт речь (Test_3D.swf). Зажмите на клавиатуре кнопку "ctrl", нажмите правую кнопку мышки и ведите ей влево (3d объект начнёт вращаться). И практически сразу вы увидите как правая плоскость перекроет другу (хотя по логике она этого делать не должна). Но по расчётам сортировки, всё верно. Сортирую стандартно (по _length каждого элемента): root3d - родительский объект всех 3d объектов, в котором настроен perspectiveProjection. var vector3D:Vector3D = элемент_сортировки.transform.getRelativeMatrix3D(root3d).position.clone(); vector3D.z += root3d.transform.perspectiveProjection.focalLength; var _length :Number = vector3D.length; В данном случаи: На ум приходит идея вывести некую корректирующую переменную, которая бы зависила от fieldOfView и значений координат объекта. Но пока не получается. Может кто сталкивался с этой проблемой и может подсказать решение? Спасибо. |
|
|||||
Я не думаю, что тут причина в fieldOfView. И скорее всего всё в вашей сортировке правильно. Просто все эти манипуляции с 3d (rotationX,Y,Z, и т.п) это просто имитация искажения объектов как бы в перспективе. И объект можно расположить либо "за", либо "перед" другим. Там нет разбивки на полигоны, просчёта отсечения поверхностей при перекрытии друг другом и т.п, как происходит в программах с 3d графикой. И если у вас какой-то большой цельный объект, на фоне других объектов и всё это крутиться, то такие глюки будут в любом случае.
Можно попробовать разбить большой прямоугольник на несколько частей, возможно сортировка даст результат получше. Последний раз редактировалось samana; 21.11.2013 в 02:54. |
Часовой пояс GMT +4, время: 20:38. |
|
« Предыдущая тема | Следующая тема » |
|
|