Как построить сетку из набора вершин

Я делаю импортером OBJ, и я застрял на том, как построить сетку из набора заданных вершин. Рассмотрим куб с этими вершинами (формат OBJ, грани — это треугольники:

v -2.767533 -0.000000 2.927381

v 3.017295 -0.000000 2.927381

v -2.767533 6.311718 2.927381

v 3.017295 6.311718 2.927381

v -2.767533 6.311718 -2.845727

v 3.017295 6.311718 -2.845727

v -2.767533 -0.000000 -2.845727

v 3.017295 -0.000000 -2.845727

Я знаю, как создавать сетки, используя GLUT (чтобы я мог вызывать GlBegin (GL_TRIANGLES), glVertex3f (x, y, z), glEnd () и т. Д.). Просто я не знаю, как объединить вершины для воссоздания предмет. Я думал, что это будет идти v1, v2, v3, затем v2, v3, v4 и т. Д., Пока я не сделаю достаточно треугольников (и что-то вроде v7, v8, v1 (потому что это возвращается к началу)). Таким образом, 8 вершин — это 12 треугольников для куба, и, скажем, для сферы с 108 треугольниками и 56 вершинами это (56 вершин * 2) — 4. Для куба я делаю 12 треугольников, это нормально, но для сферы, Я делаю 108 треугольников с 56 вершинами, это не работает. Итак, как мне объединить вершины в моих вызовах glVertex, чтобы они работали для любого меша? Спасибо!

0

Решение

В файле должно быть несколько «граней» линий (строки, начинающиеся с буквы «f»), которые говорят вам, как объединить вершины в объект. Например,

f 1 2 3

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

f 1/1 2/2 3/3

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

f 1//1 2//2 3//3

который включает нормальные векторы вершин, или

f 1/1/1 2/2/2 3/3/3

который включает в себя оба.

В Википедии есть статья, которая включает обзор формата: https://en.wikipedia.org/wiki/Wavefront_.obj_file

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]