Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > noName

Рейтинг: 4.00. Голосов: 4.

3D фреймворк

Запись от silin размещена 24.10.2009 в 19:43
Обновил(-а) silin 03.02.2010 в 17:42

мини-фреймворк для построения/манипулирования 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 flash33 вне форума
flash33
 
Аватар для flash33
Очень хорошо! А боттом у skybox отсутствует. Очень не хватает.
ЗЫ А, разобрался. У вас там ограничение по вращению setSlopeXLimits(0, 0);... Переписал пример отдельно для скайбокса.
Обновил(-а) flash33 29.10.2009 в 12:42
 
Последние записи от silin

 


Часовой пояс GMT +4, время: 20:54.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.