6 мая 2013 г.

Продолжаем отдыхать...

Еще один выходной добавил новую фишечку к V-Ray пэйплайну.
Теперь геометрию из *.vrscene можно просматривать в окошке.
Думаю любители Блендера узнают очертания Сюзанны )))
Вообще она там крутится, на скриншоте этого не видно конечно.


Пока очень примитивный шейдинг без освещения.
Дело наживное...
Да и особых красот наводить не планирую. Будет легкая поддержка шейдинга, текстуры и примитивный свет, а всё остальное решит кнопка "рендер".
Самое сложное позади, дольше всего провозился с пониманием HEX формата от Chaos Group

Но когда разобрался - понял на сколько все просто )))

Сейчас у меня есть проблемы с чтением данных, пока не разобрался почему, но файлы *.vrscene у меня пока открываются ужасно медленно. А вот когда открылись, то все работает очень шустро, включая показ моделей. Модели очень быстро подгружаются.
Пока две догадки относительно проблемы:
- "кривые" ручки
- Flex+AIR не совсем C++ )))

Если ручки не "распрямятся", то будет грустно, хотя....
Все наработки можно использовать как тестовое приложение. Это очень большой и интересный опыт.

Будут еще выходные )))

P.S.
О простоте HEX формата, используемого Chaos Group
Вообще у них несколько форматов, они немного отличаются типом данных но главная суть проста.
Восемь символов на байт, байт формируется не с права на лево (как учат в школе), а наоборот, но при этом числа чередуются парами.

Например в привычной записи будет:
FAFF7FBF  ---->   а V-Ray сделает ----->  BF7FFFFA
000080BF  ---->   а V-Ray сделает ----->  BF800000
3F800000  ---->   а V-Ray сделает ----->  0000803F

Это как зеркало, но числа переставляются парами.
Надо заметить, что это не странность разработчиков, а очень даже распространенный метод, просто я с ним столкнулся впервые. И в этом методе, в плане оптимизации и скорости есть свои преимущества. По мере считывания, байт за байтом, пара за парой, просто растет число и количество чисел, последовательно и без перескоков идет чтение данных.

Дело в том, что поток данных всегда читается последовательно, то есть слева на право, а привычная нам кодировка (из курса информатики) переставляет знаки с права на лево - это лишние расходы на ресурсы... То есть надо сначала прочитать 8 символов, и только потом что-то вычислить и при этом в обратной последовательности.

Так что все очень даже правильно :-)