Поделиться через


Преобразования пространства камеры (Direct3D 9)

Вершины в пространстве камеры вычисляются путем преобразования вершин объекта с помощью матрицы представления реального мира.

V = V * wvMatrix

Нормали вершин в пространстве камеры вычисляются путем преобразования нормалей объекта с обратной перестановкой матрицы представления реального мира. Матрица представления реального мира может быть ортогональной, однако это не обязательно.

N = N * (wvMatrix⁻¹)T

Инверсия и перестановка матрицы выполняются в матрице 4x4. При умножении нормаль объединяется с частью 3x3 получившейся матрицы 4x4.

Если состояние отрисовки, D3DRENDERSTATE_NORMALIZENORMALS имеет значение TRUE, векторы нормальной вершины нормализуются после преобразования в пространство камеры следующим образом:

N = norm(N)

Положение источника света в пространстве камеры вычисляется путем преобразования положения источника света с матрицей представления.

Lp = Lp * vMatrix

Направление к свету в пространстве камеры (для направленного света) вычисляется путем умножения направления источника света и матрицы представления. В результате происходит нормализация и инверсия результата.

Ldir = -norm(Ldir * wvMatrix)

Для D3DLIGHT_POINT и D3DLIGHT_SPOT направление освещения вычисляется следующим образом:

Ldir = norm(V * Lp), где параметры определены в следующей таблице.

Параметр Значение по умолчанию Тип Описание
Ldir Н/Д D3DVECTOR Вектор направления от вершины объекта до света
V Н/Д D3DVECTOR Положение вершины в пространстве камеры
wvMatrix Идентификация D3DMATRIX Составная матрица, содержащая преобразования реального мира и представления
Нет Н/Д D3DVECTOR Нормаль вершины
Lₚ Н/Д D3DVECTOR Положение света в пространстве камеры
vMatrix Идентификация D3DMATRIX Матрица, содержащая преобразование представления

 

Математика освещения