как представить вершинно-вершинную сетку и нарисовать ее с помощью OpenGL?

#opengl #plugins #data-structures #mesh #maya

#opengl #Плагины #структуры данных #сетка #maya

Вопрос:

меня просят изменить структуру данных сетки в плагине apiMeshShape в Maya. Итак, теперь я хочу нарисовать 3D-сетку, представленную в структуре вершин-вершин (как вы можете видеть в en.wikipedia.org/wiki/Polygon_mesh ) использование opengl.

1) Во-первых, я не знаю точно, как представлять вершинно-вершинную сетку. Интересно, в порядке ли следующая структура данных?

 MPointArray vertices;    //the position of all the vertices
MIntArray vertices_connects_counts;    //how many other vertices each vertex connect with
MIntArray vertices_connects;    //the index array storing each the vertices' index connected with all the vertices
  

возьмем пример куба в http://en.wikipedia.org/wiki/Polygon_mesh в качестве примера.

 vertices_connects_counts = {5,5,5,5,5,5,5,5,4,4};
vertices_connects = {1,5,4,3,9,
                    2,6,5,0,9,
                    3,7,6,1,9,
                    2,6,7,4,9,
                    5,0,3,7,8,
                    6,1,0,4,8,
                    7,2,1,5,8,
                    4,3,2,6,8,
                    5,6,7,8,                                       
                    0,1,2,3 };
  

2) Во-вторых, если приведенная выше структура данных верна, мне интересно, как нарисовать сетку с помощью OpenGL? Какой параметр я должен передать в glBegin()?

Ответ №1:

1) Это функциональная структура данных для ваших нужд, как описано.

2) Позвольте мне процитировать статью в Википедии, на которую вы ссылались:

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

Это то, что вам нужно сделать. Если вы настаиваете на сохранении этой структуры данных (а я бы этого не сделал), тогда вам придется пройти график связности и построить список граней вершин. Тогда у вас будут данные для отправки в OpenGL.

Комментарии:

1. Тогда как насчет второй структуры «грань-вершина»? Это проще реализовать? Спасибо!

2. @yvetterowe: Вопрос не в том, что проще или сложнее реализовать. Вопрос в том, что делает то, что вам нужно. И это совсем другой вопрос.