Преобразования пространства камеры (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 | Матрица, содержащая преобразование представления |
Связанные темы