Использование Моделей Blender/SketchUp в OpenGL

Тот, который должны поднять другие редакторы: Ctrl + C с ничто не выбрало , скопирует текущую строку.

Большинство других редакторов ничего не сделает. После копирования строки вставка поместит строку перед текущей, , даже если Вы будете посреди строки . Большинство других редакторов начнет вставлять от того, где Вы, который является почти никогда, что Вы хотите.

Дублирование строки справедливо: Держите Ctrl, нажмите c, тогда v. ( Ctrl + C , Ctrl + V )

13
задан genpfault 12 June 2013 в 14:20
поделиться

6 ответов

Если вам удобно разбирать формат .dae, обязательно используйте его. Однако, если вас интересует только экспорт текстурированных треугольных сеток, я бы подумал об использовании формата .obj , который намного проще анализировать. Насколько я могу судить, и Sketchup, и Blender могут экспортировать этот формат.

12
ответ дан 1 December 2019 в 22:39
поделиться

Любой подходящий формат файла, используемый программами моделирования (такими как Blender или Sketchup), будет включать всю информацию, необходимую для воссоздания геометрии, которую вы видите. Это должно включать тип геометрии (например, полосы треугольников, отдельные треугольники и т. Д.), Вершины и нормали для геометрии, используемые свойства материала, а также текстуры, используемые вместе с соответствующими координатами текстуры. Если чего-то не хватает в потенциальном формате файла, выберите другой.

Если вы считаете, что синтаксический анализ XML прост, то я надеюсь, что вы планируете использовать для этого существующие библиотеки, такие как expat, Xerces или некоторые другие. реализация для конкретного языка.

При рассмотрении импорта / экспорта сначала попытайтесь найти библиотеку с открытым исходным кодом, которая может обработать импорт за вас и сделать данные доступными для вашей программы в разумном формате. Если это недоступно, и вы должны написать свой собственный импортер, попробуйте найти простой ASCII (, а не на основе XML ) или двоичный формат, который соответствует вашим потребностям. PLY может подойти. Только в крайнем случае, я бы порекомендовал попробовать реализовать импортер для формата на основе XML.

1
ответ дан 1 December 2019 в 22:39
поделиться

Если вы желая проанализировать файлы .dae , я бы посоветовал изучить парсеры Collada . .dae на самом деле является расширением для файлов Collada, последней попытки группы Khronos (разработчиков OpenGL) создать единый унифицированный формат файла для обмена трехмерными данными.

As для существующих синтаксических анализаторов я нашел вот что:

  • collada-dom , эталонная реализация. Как следует из названия, это просто абстракция дерева XML.
  • FCollada , более приятная абстракция. Однако этот проект мертв уже почти два года, и, судя по тому, что я понял, маловероятно, что мы увидим какие-либо обновления в будущем.
  • OpenCollada , недавняя новая попытка. Не пробовал, но за этим стоит активное сообщество.

При этом, если ваша единственная цель - загрузить простой фрагмент геометрии с вершинами, нормалями и координатами текстуры, используйте .

2
ответ дан 1 December 2019 в 22:39
поделиться

Если двоичные форматы вас не пугают, я бы посоветовал написать плагин Blender & Sketchup и экспортировать предварительно запеченную геометрию в упакованные массивы вершин.

Самое прекрасное в этом. этот метод заключается в том, что в вашем приложении нет синтаксического анализа или преобразования типов. Все готово к отправке на GPU в простых непрерывных копиях памяти. Отлично подходит для статической геометрии.

Урезанный модуль экспорта блендера выглядит примерно так:


#!BPY
import bpy, struct
from Blender import *

self.fh = open("MyFileName", "w")
m = bpy.data.meshes["MyMeshName"]
faces = m.faces
for face in faces:
    for (vertex, uv) in zip(face.verts, face.uv):
        self.fh.write(struct.pack('<fff', *vertex.co)) # coords
        self.fh.write(struct.pack('<fff', *vertex.no)) # normals
        self.fh.write(struct.pack('<ff',  uv.x, uv.y)) # uvs

self.fh.close()
5
ответ дан 1 December 2019 в 22:39
поделиться

Вам следует взглянуть на:

http://sketchup.google.com/community/developers.html

Команда sketchup бесплатно предоставляет COM-сервер C ++. Используя это, вы можете получить доступ к большому количеству информации о файле .skp.

Вы должны иметь возможность использовать этот COM-сервер для написания импортера .skp для вашего приложения.

Вам следует попытаться получить .tlb файл, если можете. Это даст вам доступ к интеллектуальным указателям, которые упростят ваш импортер (клиент COM)

Я использовал SDK версии 6 (который включал файл tlb). Текущая версия SDK, похоже, не включает этот файл.

Кто-то разместил решение (для отсутствующего файла TLB) на форумах разработчиков: http://groups.google.com/group/su-sdk-fileshare/topics

0
ответ дан 1 December 2019 в 22:39
поделиться

There's also: Lib3DS - http://www.lib3ds.org/ LibOBJ (won't let me post link)

1
ответ дан 1 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: