Получите 3D-модель, используя 2D горизонтальные многоугольники, отсортированные по оси Z - PullRequest
0 голосов
/ 19 февраля 2020

Пожалуйста, сообщите мне.
Я хочу построить трехмерную модель в C ++, используя 2D горизонтальные многоугольники (фактически набор 2D точек, которые образуют замкнутый контур), отсортированные по оси z (с использованием каркасов, таких как OpenGL).
Как я мог это сделать?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

Вы можете взглянуть на DOOM engine от id Software, в котором они использовали очень похожий принцип для отображения 3D-сцен. Кроме того, взгляните на Черную книгу игрового движка: DOOM

Вкратце, 2D-полигоны преобразуются в BSP дерево для создания набора выпуклых узлов, которые затем используются для рендеринга. Существуют и другие ресурсы для подобных методов, например, Build engine , использующий рендеринг портала.

Обратите внимание, что этот метод, который вы пытаетесь использовать, имеет некоторые ограничения.

0 голосов
/ 19 февраля 2020

Трехмерная модель обычно состоит из массива вершин и массива треугольников. Вершины - это ваши точки, где порядок не имеет значения. Массив треугольников тогда содержит только индексы из массива вершин и описывает треугольники таким образом. Например, если ваши точки равны pA, pB, p C и хранятся в указанном порядке в массиве вершин, то ваш массив треугольников содержит 0, 1, 2.

Однако фактические детали во многом зависят от вашего среда реализации. Посмотрите несколько примеров в желаемом вами движке.

Кстати, если это для исследовательского проекта или чего-то подобного, я бы порекомендовал движок более высокого уровня, чем OpenGL. Я выполнил дипломный проект о проекте сгенерированного кода 3D-моделей с использованием Unity. Это C# вместо C ++, но если вам не нужно создавать большие модели в реальном времени, скорости достаточно, и вы будете разрабатывать гораздо эффективнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...