Загрузка файлов .3DS на Android

Данная статья является эдаким приквелом к моему прошлому посту, посвящённому Glow-эффекту. Я обещал рассказать, как загружать файлы .3ds, чтобы отрисовывать их с применением использованных там шейдеров.

Некоторую общую информацию о формате файла можно прочитать, например, в википедии или в demo.design 3D programming FAQ, однако это всё теория (причём, написанная не без ошибок), а здесь мы поговорим о практике, причём применительно к Java и Android.

Что здесь будет:
  • довольно шустрое чтение всего файла (на телефоне двухмегабайтный файл грузится за пару секунд);
  • загрузка всей модели, вычисление нормалей, загрузка текстурных координат;
  • вся информация о материалах, источниках света;
  • загрузка анимации и иерархии объектов.

Чего здесь не будет:
  • загрузки самих текстур (мне пока не понадобилось, хотя реализуется легко);
  • загрузки информации о камерах (опять же, легко добавить, но не пригодилось);
  • использования групп сглаживания для вычисления нормалей (не уверен, что это вообще нужно);
  • использования сплайнов для анимации.

Подробно разжёвывать весь исходник, как в прошлый раз, здесь я не стану (это тысячи 1000 строк), лишь остановлюсь на основных моментах и приведу ссылки на полный исходный код (в конце статьи). Всё ещё интересно? Тогда продолжим.
Читать дальше →

© Habrahabr.ru