Как получить правильное количество вершин в файле OBJ из инструментов DCC, таких как Blender, для использования в OpenGL ES?

Мне говорят, что для простого куба мне нужно 36 вершин, когда я хочу иметь цвета / текстуры и т. Д. Для приложения OpenGL ES, но когда я экспортирую цветной куб в формат OBJ с помощью Blender, я получаю только 8 вершин, а также я не даже получить данные о цвете в OBJ, не говоря уже о том, что я получаю только 8 нормалей в файле OBJ, но мне нужно нормаль для каждой вершины в каждом треугольнике (всего 36 нормалей).

Вот что я получаю в качестве содержимого файла OBJ для куба, который был окрашен разными цветами на всех гранях:

# Blender v2.56 (sub 0) OBJ File: ''
# www.blender.org
mtllib untitled.mtl
o Cube
v 1.000000 1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v -1.000000 -1.000000 -1.000000
v -1.000000 1.000000 -1.000000
v 1.000000 0.999999 1.000000
v 0.999999 -1.000001 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 1.000000 1.000000
vn 0.666646 0.666646 0.333323
vn 0.408246 0.408246 -0.816492
vn -0.408246 0.816492 -0.408246
vn -0.666646 0.333323 0.666646
vn -0.577349 -0.577349 -0.577349
vn -0.577349 -0.577349 0.577349
vn 0.816492 -0.408246 -0.408246
vn 0.333323 -0.666646 0.666646
usemtl Material
s 1
f 5//1 1//2 4//3
f 5//1 4//3 8//4
f 3//5 7//6 8//4
f 3//5 8//4 4//3
f 2//7 6//8 3//5
f 6//8 7//6 3//5
f 1//2 5//1 2//7
f 5//1 6//8 2//7
f 5//1 8//4 6//8
f 8//4 7//6 6//8
f 1//2 2//7 3//5
f 1//2 3//5 4//3

Это содержимое файла MTL:

# Blender MTL File: ''
# Material Count: 1
newmtl Material
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2

1 ответ

Решение

36 вершин для куба это не правильно. Возможно, но не нужно.

Вершина - это некая координата в пространстве, состоящая из 3 параметров: x, y, z.
Поскольку куб имеет 8 углов, то должно быть только 8 вершин.

После вершин есть текстурные координаты, которые получаются после УФ-картографирования в Blender.

После текстурных координат идут индексы. Это порядок соединения вершин, который определяет, в каком порядке нарисован ваш куб.

И наконец, есть норма для световых эффектов.



При экспорте в Blender убедитесь, что вы выделяете только те:

Контекст:
все сцены

Параметры вывода:
триангуляция, материалы, ультрафиолеты, нормали, HQ

Blender объекты как OBJ:
объекты

Это дает вам два файла: OBJ и MTL

MTL содержит информацию об изображении текстуры
и OBJ содержит:

вершины в виде:
VX, Y, Z
VX, Y, Z

координаты текстуры в виде:
Вт х, у
Вт х, у

индексы в виде:
Fi/ JK / лм / п
Fi/ JK / лм / п

После того, как вы успешно получите свои экспортированные файлы OBJ и MTL, добавьте их в свой проект с изображением текстуры и используйте класс OpenGLOBJLoader для их рендеринга в iOS.

Другие вопросы по тегам