Реализация графа сцены для Papervision? - PullRequest
1 голос
/ 06 февраля 2009

Я пытаюсь использовать Papervision для Flash, для этого моего проекта, который включает в себя 3D-модель механической рамки, состоящей из нескольких соединенных частей. Перемещение одной из частей приводит к соответствующему изменению ориентации и положения других частей рамы. Насколько я понимаю, использование графа сцены для обработки такого рода связанных движений было бы идеальным способом, по крайней мере, если бы я реализовал один из более устоявшихся вариантов 3D-разработки, таких как OpenGL или DirectX. У меня вопрос, есть ли существующая реализация графа сцены для Papervision? Или альтернативный способ создания необходимого трехмерного движения?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 06 февраля 2009

Я думал, что Papervision - это движок 3D-рендеринга на основе Flash, поэтому он должен содержать свой собственный граф сцены.

См. org.papervision3d.scenes.Scene3D в API .

И посмотрите эту статью для более подробного объяснения различных объектов в Papervision. Одна вещь, которую вы можете сделать, - это поиск статей с ключевыми объектами в P3D, такими как EngineManager, Viewport3D, BasicRenderEngine, Scene3D и Camera3D, в Google.

Что касается «генерации движения», то это зависит от того, чего именно вы пытаетесь достичь. Либо вы сами кодируете это и изменяете сцену, либо используете стороннюю библиотеку, например, физическую библиотеку, чтобы вам не приходилось кодировать все это самостоятельно.

0 голосов
/ 06 февраля 2009

Вы можете честно построить его за то время, которое потребуется вам для его поиска:

Создайте класс с именем Node с помощью виртуального метода Render (matrix: Matrix), который содержит массив дочерних узлов. Создайте подкласс Node с именем TransformNode, который принимает ссылку на матрицу. Создайте подкласс Node с именем ModelNode, который принимает ссылку на модель.

Метод Render объекта TransformNode умножает входящую матрицу на собственную, а затем вызывает метод визуализации своих дочерних элементов с полученной матрицей.

Метод Render для ModelNode отправляет свою модель в модуль визуализации в месте, указанном входящей матрицей.

Вот и все. Вы можете улучшить вещи с помощью BoundsNode, который не вызывает своих дочерних элементов, если его ограничивающая форма не видна в окне просмотра.

...