Pull to refresh

Comments 6

По мне, если не экономить память, куда быстрее строить отраженные объекты в том же пространстве с отраженным источником освещения. И все проблемы с отсечением исчезнут.
Возможно, я не вполне понял Ваше замечание, но техника отсечения как раз и применяется к пространству камеры отражения (?). Как раз в ней и строятся «отраженные объекты с отраженным источником света». Конечная растеризация осуществляется по совокупности фрагментов от матриц отражения и основной. Для каждого отражения — своя матрица (если их более одного). На рисунке, предваряющем статью, два отражения, одно из них — во фронтально стоящем зеркале, другое — в поверхности стола, для сохранения реалистичности «резы» неизбежны.
Нет, я говорю о варианте без камеры отражения. Объекты отражаются в реальном пространстве относительно плоскости отражения и строятся в общем z-буффере. Но это конечно работает для несложных сцен — типа 4 кубиков)
Мне кажется такая техника довольно трудоемкой (если я правильно Вас понял, то предлагается продублировать объекты в сцене в соответствующем отражению координатном представлении), хотя, вероятно, применимой в некоторых ситуациях, но в случае, например, динамических сцен, придется геометрию каждого входящего в сцену объекта (псевдоотраженного) править (если этот объект должен лишь некоторой своей частью быть видимым в сцене), искажая его геометрию подобно «отсечению» (а самая эта «геометрия» может быть довольно сложной). Ничего нереального, конечно, в этом нет, но затраты могут быть много выше, чем «колдовство» с плоскостями и матрицами.
Движок компьютерной игры может быть оптимизирован таким способом, чтобы заранее просчитать порядок прорисовки объектов и составить для них дерево. В таком случае расчёт видимости/невидимости полигонов объектов из отражённой сцены на лету оказывается абсолютно невозможным. С другой стороны этот порядок очень просто наследуется при отражении камеры.
Вообще, считаю, что такие основополагающий вещи, как Oblique Frustum должны быть известны, понятны (и, по моему мнению, интересны) любому программисту, несмотря на то, владеет ли он замечательным коммерческим движком, в котором реализовано все мыслимое и предвосхищающее его фантазии, или обладает ограниченным инструментарием для воплощения своих планов. Для более выразительной иллюстрации применения отсекающих плоскостей, прилагаю рисунок:



Специально убрал первый кубик, оставив только его отражения в столе и фронтально стоящем зеркале. Геометрия в обоих случаях обрезается способом, описанным в статье.
Sign up to leave a comment.

Articles