Логика отражения света для трехмерных зеркальных отражений

Я пытаюсь добавить зеркальные отражения в игру Stage3D, и это ПОЧТИ работает, но я не думаю, что достаточно хорошо разбираюсь в математике, происходящей на этапе фактического отражения.
У меня есть вектор входящего света и у меня лицо нормальное; Я знаю, что делать с результирующим вектором отражения (нормализовать, а затем произвести скалярное произведение с нормализованным вектором, указывающим на «камеру» игрока), но каковы коды операций AGAL для отражения исходного вектора света от лица? Я не могу понять это. Любая помощь приветствуется...


person moosefetcher    schedule 08.10.2013    source источник


Ответы (1)


В отличие от GLSL с функцией Reflect(), в AGAL нет вспомогательных средств для этого. Но вы все равно можете рассчитать вектор отражения самостоятельно - даже справочная страница GLSL для reflect() упоминает формулу, используемую для расчета:

For a given incident vector I and surface normal N reflect returns the reflection direction calculated as I - 2.0 * dot(N, I) * N.
person Varnius    schedule 08.10.2013
comment
Спасибо за это. Мне также пришлось ограничить конечный скалярный продукт между 0 и 1; отрицательные значения по какой-то причине вызывали второй набор отражений. - person moosefetcher; 09.10.2013