4-х мерное удаление скрытой поверхности - PullRequest
2 голосов
/ 25 августа 2011

Я пытаюсь запрограммировать маленькую 4d игру.Я использую C ++ и OpenGL.Этот веб-сайт предлагает хорошее объяснение того, как улучшить 4d изображения:
http://eusebeia.dyndns.org/4d/vis/07-hsr.html#Enhancing_4D_Projection_Images

они советуют применять алгоритм 4d Hidden Surface Removal (HSR).
Я должен сказать, что я новичокв программировании и алгоритмах, и я на самом деле не знаю, с чего начать собирать 4d HSR или 3d.
Если кто-то имеет опыт работы с такими алгоритмами, может объяснить мне, как его перевести наC ++?

Кстати: я проецирую 4-мерное пространство в 3d, поэтому мне понадобится алгоритм удаления вершин, а не модификация пикселей, или, по крайней мере, я так думаю ... Я могу ошибаться ...

1 Ответ

0 голосов
/ 25 августа 2011

Во многих случаях удаление скрытой поверхности 3d означает, что когда вы рисуете поверхность, вы также запоминаете глубину каждого нарисованного пикселя (расстояние от «глаза»). Когда вы начинаете рисовать поверхность, на которой поверхность уже нарисована, вы рисуете пиксель, только если он ближе к глазу, чем пиксель, который уже существует. В библиотеке 3D-графики OpenGL (проецирует описания 3D-сцен на 2-мерный дисплей) это называется Тест буфера глубины .

Вы также можете отслеживать направление движения поверхности. Если он смотрит в сторону от «глаза», то не рисуйте его вообще. В OpenGL это вызов отбор задней стороны . Если вы хотите создать многослойный прозрачный вид, описанный в вашей статье, то вам нужно отсортировать пиксели по глубине и сначала нарисовать самые глубокие. Затем нарисуйте более близкие сверху, заменив текущий пиксель выпуклой комбинацией цвета старого пикселя и цвета текущей поверхности.

Для вашего случая 4d вам нужно решить, что значит проецировать вещь 4d. Я думаю, что любая 3d модель, которая тоже анимирована, на самом деле является 4d моделью. Вы можете, если хотите, нарисовать все кадры одновременно, как с этим симулятором ракетбола: 4d racquetball player

На этом изображении время здесь представлено значением шкалы яркости. Таким образом, вы можете видеть, как игрок двигается по площадке и бьет по мячу, все в одном статическом изображении. Конечно, правильная проекция 4d на 2d, вероятно, не будет отображать кучу дискретных временных периодов, соединенных вместе, а скорее соединит вершины, которые соединяют время, так что вместо того, чтобы видеть кучу отдельных шариков, вы увидите «трубу». это представляет траекторию шара. Но подобное упомянуто в статье, на которую вы ссылаетесь, в некоторых случаях она может сообщать меньше.

...