Преобразования пространства камерыCamera space transformations

Вершины в пространстве камеры вычисляются путем преобразования вершин объекта с помощью матрицы представления реального мира.Vertices in the camera space are computed by transforming the object vertices with the world view matrix.

V = V * wvMatrixV = V * wvMatrix

Нормали вершин в пространстве камеры вычисляются путем преобразования нормалей объекта с обратной перестановкой матрицы представления реального мира.Vertex normals, in camera space, are computed by transforming the object normals with the inverse transpose of the world view matrix. Матрица представления реального мира может быть ортогональной, однако это не обязательно.The world view matrix may or may not be orthogonal.

N = N * (wvMatrix⁻¹)TN = N * (wvMatrix⁻¹)T

Инверсия и перестановка матрицы выполняются в матрице 4x4.The matrix inversion and matrix transpose operate on a 4x4 matrix. При умножении нормаль объединяется с частью 3x3 получившейся матрицы 4x4.The multiply combines the normal with the 3x3 portion of the resulting 4x4 matrix.

Если состояние отрисовки настроено с нормализацией нормалей, векторы нормали вершины нормализуются после преобразования в пространство камеры следующим образом:If the render state is set to normalize normals, vertex normal vectors are normalized after transformation to camera space as follows:

N = norm(N)N = norm(N)

Положение источника света в пространстве камеры вычисляется путем преобразования положения источника света с матрицей представления.Light position in camera space is computed by transforming the light source position with the view matrix.

Lₚ = Lₚ * vMatrixLₚ = Lₚ * vMatrix

Направление к свету в пространстве камеры (для направленного света) вычисляется путем умножения направления источника света и матрицы представления. В результате происходит нормализация и инверсия результата.The direction to the light in camera space for a directional light is computed by multiplying the light source direction by the view matrix, normalizing, and negating the result.

Ldir = - нормы (Ldir * wvMatrix)Ldir = -norm(Ldir * wvMatrix)

Для точечного освещения и вспышки направление к свету вычисляется следующим образом:For a point light and a spotlight, the direction to light is computed as follows:

Ldir = норма (V * Lₚ), где параметры определены в следующей таблице.Ldir = norm(V * Lₚ), where the parameters are defined in the following table.

ПараметрParameter Значение по умолчаниюDefault value ТипType ОписаниеDescription
LdirLdir Н/ДN/A Трехмерный вектор (значения с плавающей запятой x, y и z)3D vector (x, y, and z floating-point values) Вектор направления от вершины объекта до светаDirection vector from object vertex to the light
VV Н/ДN/A Трехмерный вектор (значения с плавающей запятой x, y и z)3D vector (x, y, and z floating-point values) Положение вершины в пространстве камерыVertex position in camera space
wvMatrixwvMatrix УдостоверениеIdentity Матрица 4x4 значений с плавающей запятой4x4 matrix of floating-point values Составная матрица, содержащая преобразования реального мира и представленияComposite matrix containing the world and view transforms
NN Н/ДN/A Трехмерный вектор (значения с плавающей запятой x, y и z)3D vector (x, y, and z floating-point values) Нормаль вершиныVertex normal
LₚLₚ Н/ДN/A Трехмерный вектор (значения с плавающей запятой x, y и z)3D vector (x, y, and z floating-point values) Положение света в пространстве камерыLight position in camera space
vMatrixvMatrix УдостоверениеIdentity Матрица 4x4 значений с плавающей запятой4x4 matrix of floating-point values Матрица, содержащая преобразование представленияMatrix containing the view transform

 

Связанные разделыRelated topics

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