Файлы Cinema 4D .obj импортируются неправильно

#parsing #object #wavefront #molehill #cinema-4d

#синтаксический анализ #объект #волновой фронт #кротовая нора #cinema-4d

Вопрос:

У меня есть анализатор, написанный на ActionScript для импорта файлов .obj. Затем я визуализирую их в кротовой норе, что потрясающе. Пока я могу импортировать то, что считаю стандартными файлами .obj с вершинами в порядке x, y, z или порядке z, x, y. Однако любой файл .obj, экспортированный из Cinema 4D, просто завершается ошибкой.
Например, тетраэдр даже не отображает z-компонент (файл .obj имеет индексы с правильной z-глубиной!). У простого куба отсутствует половина граней треугольника. Я слышал, что Cinema 4D экспортирует в порядке x, z, y, и поэтому я попытался учесть и это, но безуспешно. И действительно, порядок вершин в любом случае не должен приводить к отсутствию полигонов.

Кто-нибудь импортировал сетки Cinema 4D из файлов .obj? Есть ли какой-то особый трюк? Просто ли Cinema 4D игнорирует стандарты Wavefront .obj? Заранее спасибо за любую помощь.

Обновление: я считаю, что виновником является то, что индексные данные для полигонов находятся в наборе из 4 вместо 3. Например, я хочу это: 1/1 2/2 3/3, но не это: 1/1 2/2 3/3 4/4. Cinema 4D экспортирует файлы .obj как последние. В любом случае, чтобы решить эту проблему либо на стороне синтаксического анализа, либо на стороне экспорта Cinema 4D?

Update2: теперь индексные данные отображаются так, как я хочу, но я все равно не могу правильно отобразить. Следующее относится к обычному тетраэдру. Когда я пытаюсь отобразить его, отображаются только две из четырех граней:

 # WaveFront *.obj file (generated by CINEMA 4D)
g __
v -70.571068 -100 122.232675
v 141.142136 -100 0
v 0 100 0
v -70.571068 -100 -122.232675
vt 0.666667 0 0
vt 0.5 0.5 0
vt 0 0 0
vt 1 0 0
vt 0 0.5 0
vt 0.333333 1 0
vt 1 1 0
vt 0.666667 1 0
vt 0.333333 0 0
vt 0.75 0.933013 0
f 4/10 2/5 1/2 
f 1/1 3/8 4/9 
f 2/4 3/7 1/1 
f 4/9 3/6 2/3 
 

Есть ли что-нибудь странное в приведенном выше коненте? (Это помогло бы, если бы у меня был файл .obj, экспортированный из другого стандартного 3D-программного обеспечения того же тетраэдра)

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

1. кстати, этот вопрос хорошо подходит для 3D-графики, моделирования и приложений

Ответ №1:

Я не уверен, как вы рисуете сетку с помощью Molehill, но довольно легко выполнить триангуляцию сетки перед экспортом в .obj с помощью Функции> Триангуляция.

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

1. Спасибо, я посоветуюсь с дизайнером и посмотрю, знает ли он, как это сделать. Я предполагаю, что это изменит вывод файла .obj.

2. Выше я упоминал, как это сделать. Допустим, у вас есть примитив (Cube, Platonic и т. Д.), Вам нужно сначала преобразовать его в сетку (нажав C), Затем, непосредственно перед тем, как вы будете готовы к экспорту, триангулируйте сетку, используя Функции> Триангуляция в C4D. Если это поможет, я мог бы создать скрипт на Python для выполнения триангуляции и экспорта за один раз.

3. Я все еще разговариваю с дизайнером. Он дал мне файл, который теперь имеет 3 значения на строку «f», но все равно модели отображаются некорректно. Обычный тетраэдр отображает только две из четырех граней. Конечно, если бы вы дали мне сценарий, я бы передал его ему. Спасибо за помощь. Кстати, я искал в Интернете несколько простых моделей .obj (например, кубы, тетраэдры), но не могу найти ничего подобного. Честно говоря, большинство бесплатных образцов ломаются в моем анализаторе. Я опубликую файл .obj, с которым у меня сейчас возникли проблемы.