среда, 30 ноября 2011 г.

COLLADA. С чего начинать.

COLLADA - формат для обмена данными между 3d-приложениями, основан на XML. Подробнее можно посмотреть, например здесь.
Если говорить менее абстрактно, то можно сказать, что сабж может хранить в себе огромное количество информации о состоянии сцены. Вряд ли есть смысл использования этого формата как основного ввиду избыточности данных и запутанности. Тем не менее использование COLLADA по прямому назначению является альтернативой написанию экспорта\импорта с помощью того же MaxScript или написанию плагинов.
Для написания своего формата файла для начала необходимо решить вопрос с получением данных из файла *.dae. В Delphi есть несколько путей :
  • Написание своего парсера наиболее важных категорий. Для парсинга XML можно использовать, например, NativeXML. Реализация не то чтобы сложная, очень нудная. По моим рассчетам это примерно 7-9 килострок кода.
  • Написание парсера под конкретную структуру файла. Теряется гибкость, но работы значительно меньше.
  • Использование XML Data Binding для конкретной структуры файла. То же что и предыдущий пункт, только самому писать почти ничего не надо.
  • Теоретически с помощью XML Data Binding на основе xsd можно получить модуль с классами\интерфейсами для всего формата. У меня эти попытки не увенчались успехом вовсе.
  • В Delphi XE2 есть готовая реализация предыдущего пункта. Модуль классов\интерфейсов содержит ~125 k строк, весит ~4 МБ. Простое консольное приложение на Delphi XE2 весит ~18 МБ. Отключение отладочной информации позволяет уменьшить размер, но не очень сильно. Однако, четырьмя простыми действиями этот модуль переносится под тот же D2006. Консольное приложение при этом занимает уже 3.5 МБ. Уже лучше.
Как бы то ни было, разбор спецификации формата обязателен. Спецификация 1.4.1

Комментариев нет:

Отправить комментарий