Я настоятельно рекомендую использовать какой-нибудь формат обмена ASCII, их много. Я обычно использую следующие:
*.x
объект DirectX (это исходный код C++)
это проще всего реализовать!!! Но не так много инструментов, которые могут справиться с ними. Если вы не хотите тратить слишком много времени на кодирование, то это правильный выбор. Просто скопируйте шаблоны (в начале) из любого *.x
файла, чтобы начать.
здесь некоторые характеристики
*.iges
распространено и импортируется на большинство платформ CAD/CAM (включая Catia)
это немного сложно, но для целей экспорта это не так уж плохо. Он поддерживает операции Volume, такие как +,-,&,^
, которые ОЧЕНЬ СЛОЖНО реализовать правильно, но вам не обязательно их использовать :)
*.dxf
Формат обмена AutoCAD
это еще сложнее, чем IGES. не рекомендую его использовать
*.ac
AC3D
Я впервые увидел его в летном снаряжении.
здесь некоторые характеристики
на первый взгляд это довольно просто, но реализация подобъекта действительно сложна. Если вы не используете его, вы должны быть в порядке.
Этот подход легко проверить в блокноте или загрузив в какую-нибудь программу просмотра 3D моделей. Выберите тот, который больше всего подходит для ваших нужд, и кодируйте save/load
функцию для внутренней модели ваших приложений class/struct
. Таким образом, вы будете совместимы с другим программным обеспечением и устраните проблемы несовместимости, характерные для создания «почти известных» двоичных форматов, таких как 3ds
,...
В вашем случае я бы использовал IGES (начальная спецификация обмена графикой)
Для экспорта вам не нужно реализовывать все несколько основных форм, так что это не будет слишком сложно. Я кодирую импортеры, которые намного сложнее. Мой класс загрузчика IGES составляет около 30KB
исходного кода C++, выглядящего здесь для получения дополнительной информации
Вы не предоставили никакой информации о структуре и возможностях вашей 3D модели сетки.
например, какие примитивы вы используете, ваш объект простой или в иерархии скелета, используете ли вы текстуры и многое другое ... так что невозможно ответить
В любом случае экспорт часто выглядит так:
- создать заголовок и структуру целевого формата файла
если формат имеет какую-либо структуру каталогов, заполните ее и напишите (IGES)
для подобъектов не забудьте добавить матрицы трансформации...
напишите нужные фрагменты (список точек, список граней, нормали,...)
В форматах ASCII вы можете сделать это внутри переменной String, чтобы вы могли легко вставлять или изменять ее. Делайте все в памяти и записывайте все это в файл в конце, что быстро, а также добавляете возможность работать с памятью, а не с файлами. Это удобно, если вы хотите упаковать много файлов в один файл пакета, например *.pak
, или отправить/получить файлы через IPC или LAN...
[Edit1] подробнее о IGES
спецификации формата файла
Я узнал IGES из этого pdf... Понятия не имею, откуда я это взял, но это была первая действующая ссылка, которую я сегодня нашел в Google. Я уверен, что там тоже есть какая-то ссылка без регистрации. Это около 13,7 МБ и оригинальное имя IGES5-3_forDownload.pdf
.
программа просмотра win32
это бесплатная программа просмотра IGES. Мне не нравится интерфейс и обработка, но это работает. Необходимо иметь функциональный просмотрщик для тестирования своего...
примеры
здесь много учебных файлов для многих сущностей, есть 3 подссылки (igs,peek,gif
), где вы можете увидеть пример файла другими способами для лучшего понимания.
экспорт в IGES
вы не предоставили никакой информации о внутренней структуре вашей 3D сетки, поэтому я не могу помочь с экспортом. Существует множество способов экспорта, поэтому выберите тот, который наиболее близок к вашему представлению сетки App 3D. Например, вы можете использовать:
- облако точек
- поверхности вращения
- прямоугольные (QUAD) поверхности
- представление линий границ (не сплошные)
- отделка поверхности и многое другое...
person
Spektre
schedule
30.05.2014