Мне просто интересно, как создать зеркало в 3D игре? Мое предложение заключается в том, чтобы / было отслеживать лучи, ударяя объект «зеркало», а затем рисуя изображение второго кулачка на объект «зеркало», который расположен в зеркальной «точке» оригинальной камеры, используя сторону удара объекта зеркала в качестве зеркальная плоскость.
Нам пришлось бы использовать один луч, исходящий из центра исходной камеры, чтобы определить точку, в которой центр зрения расположен на плоскости зеркала.
graphics-programming
daemonfire300
источник
источник
Ответы:
Если вы используете OpenGL, в разделе 9 часто задаваемых вопросов по OpenGL: Преобразования описывается, как именно это сделать. И нет, это не связано с трассировкой лучей, поскольку это понятно, что это очень неэффективный (но качественный) способ сделать это.
9.170 Как мне сделать зеркало?
Вот, по сути, то, что написано в FAQ, и пример кода демонстрирует:
Очевидно, что есть много возможностей для оптимизации. При рендеринге отраженной сцены вы, вероятно, должны делать как можно больше отборов, так как зеркала, как правило, маленькие, и отбор по умолчанию за кадром не учитывает геометрию, которая отображается на экране, но не видна через зеркало. Вы также можете визуализировать упрощенную версию сцены через зеркало. Для эффектов и для того, чтобы пользователь мог не заметить снижение качества, вы можете применить шейдер (например, размытие, или, может быть, яркий / размытый), когда вы делаете зеркальный рендеринг.
Я полагаю, если вы используете DirectX, процедура будет такой же.
источник