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

Мне говорят, что для простого куба мне нужно 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 Ответ

3 голосов
/ 20 февраля 2011

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

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

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

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

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



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

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

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

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

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

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

вершин в форме:
v x, y, z
v x, y, z

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

индексы в виде:
f i / j k / l m / n
f i / j k / l m / n

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

...