2014-01-23 2 views
5

Я хочу знать методы, используемые для визуализации сложных поверхностей, которые не могут быть представлены математическим уравнением (например, автомобилем) в OpenGL. Создаем ли мы его, объединяя так много основных элементов (сферу, конус, ...)? Или есть другие методы? Я собираюсь приступить к созданию приложения, которое будет отображать 3D-автомобиль и вы хотите знать, с чего начать.Рисование сложных поверхностей в OpenGL

+0

Вы используете многоугольные сетки, которые приблизительно приближаются к поверхности. Однако, поскольку создание/моделирование идет, это можно сделать, выполняя операции с использованием основных элементов, таких как сферы, конусы, коробки и т. Д. Это будет процесс, известный как [Конструктивная сплошная геометрия] (http: // ru. wikipedia.org/wiki/Constructive_solid_geometry), и результаты обычно преобразуются в треугольную сетку для эффективного рендеринга в режиме реального времени. –

+0

Я бы предложил вам изучить [твердотельное моделирование] (http://en.wikipedia.org/wiki/Solid_modeling) для более подробного обзора всех доступных подходов. Просто обратите внимание, что графические процессоры традиционно были разработаны с целью рисования треугольников быстро, так что обычно, как модели заканчиваются независимо от того, как они были созданы изначально. –

ответ

4

Для создания моделей, которые можно экспортировать, а затем визуализировать в OpenGL, вы можете использовать сторонний инструмент, например Blender. Эти модели обычно состоят из треугольников, но нарисованы с помощью 3D-инструментов, аналогичных ручке и бумаге 2D.

Вот учебник по этой теме: OpenGL Model Tutorial

2

Да, OpenGL производит изображения, рисуя множество базовых элементов (известный как «примитивов»).

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

Сложные поверхности аппроксимируются сеткой треугольников или квадрациклов. Скрытое удаление поверхности обычно выполняется с помощью карты глубины: примитивы, направленные ближе к камере, блокируют и переопределяют более отдаленные примитивы на основе каждого пикселя.

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

1

Очень сложно сконструировать объект с нуля. OpenGL - это машина для рендеринга полигонов. Обычные объекты представлены вертеками для их трехмерного положения и индексов для того, как они взаимодействуют с obj file. Вы можете найти некоторые файлы obj, которые представляют собой автомобиль, например, или что-то еще, и сделать его. Также существует альтернативный метод проектирования сложных моделей с использованием патчей. Патчи используются в программах САПР для лучшего контроля над моделью patches. Чтобы создать более сложную модель, вы объединяете множество патчей.

Смежные вопросы