Отображение файлов .obj, которые не все являются треугольниками или четырехугольниками

Я понимаю, что должна быть какая-то магия индекса, чтобы преобразовать файл obj в правильный формат вершин/индексов для OpenGL, но рассмотрим следующий файл .obj:

# WaveFront *.obj file (generated by CINEMA 4D)

g Polygon
v -136.714894 0 -169.395745
v 134.53617 0 -224.953191
v 321.906383 0 -87.693617
v 358.944681 0 182.468085
v 49.565957 0 264.170213
v -340.425532 0 165.038298

f 6 5 4 3 2 1 

Лицо не треугольник и не квадрат, значит ли это, что мне придется делать какую-то тесселяцию на процессоре или графическом процессоре? Будет ли это стандартным методом работы с таким типом описания геометрии?

РЕДАКТИРОВАТЬ: Кроме того, есть ли библиотека, которая будет выполнять триангуляцию без ограничительной лицензии?


person grivescorbett    schedule 14.08.2012    source источник


Ответы (2)


Надеюсь, что это плоские многоугольники и триангуляция выбранным вами методом.

Если они не являются плоскими, вам может сойти с рук PCA измерение и триангуляция результата.

person genpfault    schedule 15.08.2012
comment
Да, я понимаю, что когда точки не компланарны, это не ясно. Я даже пробовал делать форму в Cinema 4D, экспортировать в OBJ, импортировать в Blender, и они интерпретировали их по-разному. - person grivescorbett; 15.08.2012

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

Если вы используете фиксированную функцию, это "glBegin(GL_POLYGON)"

person zero298    schedule 14.08.2012
comment
@grivescorbett: Нет, это удалено из основного профиля. Под устаревшим подразумевается удаление в будущем. Удалено значит удалено. - person Nicol Bolas; 15.08.2012
comment
GL_POLYGON действителен только для выпуклых многоугольников. Спецификация OBJ не делает таких ограничений. - person genpfault; 15.08.2012