Как графический движок определяет, как разместить пиксели для создания трехмерного изображения?

Мне было интересно, какую процедуру использует простая 3D-программа для рисования 2D-пикселей, чтобы они выглядели 3D. Я действительно заинтересован в этом для рисования, поскольку, если программа может понять, как использовать плоский экран для создания изображений с глубиной, возможно, я мог бы использовать эти методы в своем рисовании.

Есть ли какой-нибудь базовый 3D-движок, на который я могу взглянуть? Без каких-либо абстракций от 2d до 3d?


person user1824469    schedule 23.05.2013    source источник


Ответы (1)


Вас могут заинтересовать два понятия:

  • Перспективная проекция, представляющая собой математическое преобразование, которое берет 3D-точки (или вершины) и характеристики вашей камеры (положение, ориентация, конус усечения и т. д.) и дает вам двухмерная проекция точки на выбранный вами носитель (экран).

  • Алгоритм художника (поскольку вы, кажется, спрашиваете о методах рисования), метод рендеринга, который сортирует по глубине все элементы вашей сцены после их проекции и рисует их. на вашем носителе, уменьшая глубину, чтобы обеспечить реалистичный результат ("дальние объекты скрыты за более близкими" - метод имитации художников). Этот алгоритм, однако, имеет некоторые ограничения (далеко неэффективен в своей базовой реализации, не может легко справляться с элементами, пересекающимися или циклически перекрывающими друг друга), поэтому в большинстве случаев используется более эффективный метод, Z-буферизация< /strong>, который обрабатывает конфликты глубины на попиксельной основе.

Объединив эти понятия, вы действительно можете реализовать свой собственный простой 3D-движок (в другой ветке StackOverflow, на которую я указываю, я дал ссылку на статью, которую я сделал о том, как легко создать такой движок).

Если вы хотите взглянуть на более сложные движки и понятия, вы можете взглянуть, например, на GPU Gems 3 от Nvidia или посмотреть статьи об OpenGL.

Надеюсь помог, до свидания!

person benjaminplanche    schedule 25.05.2013