Данная статья является эдаким приквелом к моему прошлому посту, посвящённому Glow-эффекту. Я обещал рассказать, как загружать файлы .3ds, чтобы отрисовывать их с применением использованных там шейдеров.
Некоторую общую информацию о формате файла можно прочитать, например, в википедии или в demo.design 3D programming FAQ, однако это всё теория (причём, написанная не без ошибок), а здесь мы поговорим о практике, причём применительно к Java и Android.
Что здесь будет:
- довольно шустрое чтение всего файла (на телефоне двухмегабайтный файл грузится за пару секунд);
- загрузка всей модели, вычисление нормалей, загрузка текстурных координат;
- вся информация о материалах, источниках света;
- загрузка анимации и иерархии объектов.
Чего здесь не будет:
- загрузки самих текстур (мне пока не понадобилось, хотя реализуется легко);
- загрузки информации о камерах (опять же, легко добавить, но не пригодилось);
- использования групп сглаживания для вычисления нормалей (не уверен, что это вообще нужно);
- использования сплайнов для анимации.
Подробно разжёвывать весь исходник, как в прошлый раз, здесь я не стану (это тысячи 1000 строк), лишь остановлюсь на основных моментах и приведу ссылки на полный исходный код (в конце статьи). Всё ещё интересно? Тогда продолжим.
Читать полностью »