Преобразования пространства камеры (Direct3D 9)
Вершины в пространстве камеры вычисляются путем преобразования вершин объектов с матрицей представления мира.
V = V * wvMatrix
Нормали вершины в пространстве камеры вычисляются путем преобразования норм объекта с обратным транспонированием матрицы представления мира. Матрица представления мира может быть или не может быть ортогональной.
N = N * (wvMatrix⁻️)T
Матрица инверсии и транспонирование матрицы работают на матрице 4x4. Умножение объединяет норму с 3x3 частью результирующей матрицы 4x4.
Если состояние отрисовки, D3DRENDERSTATE_NORMALIZENORMALS задано значение TRUE, нормальные векторы вершин нормализуются после преобразования в пространство камеры следующим образом:
N = норм(N)
Положение света в пространстве камеры вычисляется путем преобразования положения источника света с матрицей представления.
Lp = Lp * vMatrix
Направление света в пространстве камеры для направления света вычисляется путем умножения направления источника света на матрицу представления, нормализацию и отрицание результата.
Ldir = -norm(Ldir * wvMatrix)
Для D3DLIGHT_POINT и D3DLIGHT_SPOT направление света вычисляется следующим образом:
Ldir = norm(V * Lp), где параметры определены в следующей таблице.
Параметр | Значение по умолчанию | Тип | Описание |
---|---|---|---|
Ldir | N/A | D3DVECTOR | Вектор направления от вершины объекта к свету |
V | N/A | D3DVECTOR | Позиция вершины в пространстве камеры |
wvMatrix | Тождество | D3DMATRIX | Составная матрица, содержащая преобразования мира и представления |
N | N/A | D3DVECTOR | Нормальное вершина |
Lp | N/A | D3DVECTOR | Световая позиция в пространстве камеры |
vMatrix | Тождество | D3DMATRIX | Матрица, содержащая преобразование представления |
Связанные разделы