Показать сообщение отдельно
Старый 14.09.2015, 00:27   #76
NB79
Местный
 
Регистрация: 12.07.2015
Сообщений: 417
По умолчанию

Так, я кажется понял, в чём дело.

Похоже, что плагин для Макса (а так-же MeshConverter), с помощью которого obj открывается, не правильно читает фейсы. В спецификации obj для фейсов обязательным параметром задаются только вершины. Текстурные координаты и нормали опциональны.

Цытата из спецификации:

----------------------------------------------------

f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 . . .

Polygonal geometry statement.

Specifies a face element and its vertex reference number. You can
optionally include the texture vertex and vertex normal reference
numbers.

The reference numbers for the vertices, texture vertices, and
vertex normals must be separated by slashes (/). There is no space
between the number and the slash.

v is the reference number for a vertex in the face element. A
minimum of three vertices are required.

vt is an optional argument.

vt is the reference number for a texture vertex in the face
element. It always follows the first slash.

vn is an optional argument.

vn is the reference number for a vertex normal in the face element.
It must always follow the second slash.

----------------------------------------------------

А плагин (как и MeshConverter похоже) требует, чтобы нормали были обязательно определены.

А у нас, в Иловском меше, у теней (а ткже и у коллизий) как раз нормалей и нет. Фейс в obj описывается так:

f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3

Если у нас есть и вершины, и тех. координаты, и нормали, то мы имеем заполненными все три группы. Т.е., например так:

f 3129/2979/2979 3106/2956/2956 3134/2984/2984

Если нет текстурных координат, то эта же строчка будет выглядеть так:

f 3129//2979 3106//2956 3134//2984

Если нет нормалей и тек. координат, то эта же строчка будет выглядеть так:

f 3129// 3106// 3134//

Я написал эту часть экспорта в полном соответствии с спецификацией obj. По этому конвертер для MSFX файл и открывает. У меня тоже есть какой-то вьювер, который этот файл тоже нормально открывает. Придётся для Максовского плагина добавлять пустые нормали если их нет у объекта. Это будет раздувать файл.

Кстати, попробовал открыть MeshConverter-ом ваш файл, который с треугольниками для фейсов. MeshConverter падает с такой-же ошибкой. Тот вьювер, что есть у меня, ваш файл тоже отлично открывает. В MeshConverter-е, похоже, работа с OBJ очень криво прописана.

PS: Вот спецификация для obj, так, на всякий случай : http://www.martinreddy.net/gfx/3d/OBJ.spec
NB79 вне форума   Ответить с цитированием