3D фреймворк
мини-фреймворк для построения/манипулирования 3D-модельками на базе нативных методов FP10
что есть:
- сортировка детей в контейнере по расстоянию до наблюдателя
- детекция видимости (лицо/изнанка)
- подсвечивание граней в зависимости от угла наклона к плоскости проекции
- режимы вращения относительно 3D-осей родителя или своих
- отображение анимированных изображений
- примитивы: сфера, куб, кольцо, гексагедрон
не alternativa, конечно, но я как бы и не посягал, задача была в другом, хотелось понять/пощупать, что можно сделать по-простому, на базе нативных методов и что они есть по производительности и удобству
заценить результат можно по демке
собственные ощущения:
достойной производительности не наблюдается - даже на сравнительно простых вещах плеер охотно откликается тормозами,
удобство наблюдается - не нужно погружаться в дебри отображения 3D на плоскости, создал поверхности и методы снабжения их графикой и все, остальное забота плеера
каждый 3D-объект в такой схеме это по сути тот же displayObject со своим местом в экранном списке отображения, отсюда и удобства и недостатки: создать и управлять таким объектом легко, но объект этот 'вещь в себе'.., реализовать, к примеру, пересечение частей разных объектов напрямую уже не реально, только с помощью специальных ухищрений, типа разобрать на детали и свалить части разных объектов в один контейнер, дальше шаманство..
с воспроизведением анимации тоже засада: если для "плоских" поверхностей (грани куба) все хорошо, можно запихнуть в нее мувик так сказать естественным образом, то для "затейливых" (сфера, цилиндр) все равно на каждом кадре надо перерисовывать мувик в битмап и заливать им шейпы плоских сегментов, если учесть, что плеер потом еще должен трансформировать это добро в соответствии с 3D-состоянием, то по сравнению с заливкой в рассчитанные конечные 2D координаты имеем двойную работу/нагрузку..
с камерой и вовсе непонятно как быть, не трогал эту тему совсем..
короче, не видно у такого подхода никаких преимуществ перед чисто "рисовательными" движками, кроме разве что простоты и удобства реализации, но и это не мало совсем
(28.10.09) унифицированное создание примитивов через материалы (цвет, битмапДата, IBitmapDrawable объекты, список дисплейОбжектов)
(30.10.09) почистилась 'внутренняя' логика, добавилось примеров (попроще-поконкретнее)
(2.11.09) утилита управления группой объектов как одним объектом без добавления в контейнер, кубик Рубика в качестве примера
(22.12.09) загрузка моделей OBJ (wavefront)
(03.02.10) внутренняя чистка/оптимизация, архивы обновил
Всего комментариев 1
Комментарии
29.10.2009 11:02 | |
Очень хорошо! А боттом у skybox отсутствует. Очень не хватает.
ЗЫ А, разобрался. У вас там ограничение по вращению setSlopeXLimits(0, 0);... Переписал пример отдельно для скайбокса. |
|
Обновил(-а) flash33 29.10.2009 в 12:42
|
Последние записи от silin
- Equalizer (22.06.2011)
- WaveSynthesizer (05.04.2011)
- ToneGenerator (31.03.2011)
- 3D фреймворк (24.10.2009)
- Глобальный бродкастер (04.07.2009)