Спецификация формата CSM (Compiled Static Mesh) v. 3
Чтобы максимально облегчить внедрение поддержки формата CSM в ваши приложения и сторонние плагины, я выкладываю не просто заголовок с описанием структур, а готовую мини-утилиту, которая умеет конвертировать smd в csm и обратно. Так же к ней прилагается компактная математическая библиотека, необходимая для работы CSM. Я полагаю, что у вас уже есть спецификация трёхмерного и двухмерного вектора, они вам понадобятся для встраивания. Не стоит рассматривать это как готовый класс для подключения. Исключительно как пример реализации.
У вас в проекте будет другая файловая система, другой менеджер памяти, другой аллокатор массивов. Т.е. переписывать всё равно придётся.
Но имея на руках готовый пример, я полагаю это займет совсем немного времени. Вопросы по спецификации и предложения по дальнейшему расширению можно задавать в этой теме.
По сравнению с предидущей версией, здесь добавилось хранение путей к текстурам для решения извечной проблемы. Практически все игровые движки используют какую-то собственную реализацию системы материалов, которую не понимают сторонние модельвьюверы. В результате чего весьма проблематично отобразить модель с текстурами, если конечно эти самые текстуры не лежат прямо рядом с моделью. В CSM я попытался исправить эту ситуацию. Теперь вы можете сохранять относительные пути до текстур прямо внутрь заголовка модели и вьювер сможет использовать эту информацию, чтобы построить корректный путь до текстуры. Типичный пример:
модель лежит в папке models\props\, а текстуры к ней лежат в папке textures\props. Таким образом, в путь до текстур вам надо записать примерно следующее:
..\..\textures\props
Так же обратите внимание, что путей поиска может быть несколько, разделённых через точку с запятой.
Так же новый формат поддерживает хранение сторон брашей (или просто полигонов), необходимых для построения BSP-дерева и последующей портализации пространства. Так же есть возможность записать собственную развертку лайтмапы, но детально она пока что не тестировалась.