Projection
Матрица 4×4 для проективных преобразований с четырьмя столбцами Vector4.
Структура C#, представляющая матрицу 4×4 с четырьмя столбцами Vector4: X, Y, Z и W. Используется для проективных преобразований и настройки проекции камеры. Присваивание копирует значение матрицы.
Projection.Identity — единичная матрица; default(Projection) имеет нулевые коэффициенты и не равен Identity. Ни одно из этих значений не является true или false в C#: преобразования Projection в bool нет. Явное сравнение с Identity проверяет коэффициенты, а не пригодность матрицы для конкретной камеры.
Выбирайте конструктор проекции по задаче и соблюдайте его ограничения для ближней и дальней границ, углов и размеров. Обычное преобразование положения, поворота и масштаба объекта описывается Transform3D, а не автоматически подставляется в любую камеру.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы3
Projection3 перегрузки
public Projection(Transform3D transform);Строит a Projection от четырех Vector4 Значения (колонки матриц).
| Имя | Тип | По умолчанию |
|---|---|---|
transform | Transform3D | — |
transform:: Transform3D.
public Projection(Vector4 x, Vector4 y, Vector4 z, Vector4 w);Строит a Projection от четырех Vector4 Значения (колонки матриц).
| Имя | Тип | По умолчанию |
|---|---|---|
x | Vector4 | — |
y | Vector4 | — |
z | Vector4 | — |
w | Vector4 | — |
xКолонка Х или указатель колонки 0.
yКолонка Y или указатель колонки 1.
zКолонка Z или указатель колонки 2.
wКолонка W или указатель колонки 3.
public Projection(float xx, float xy, float xz, float xw, float yx, float yy, float yz, float yw, float zx, float zy, float zz, float zw, float wx, float wy, float wz, float ww);Строит a Projection от четырех Vector4 Значения (колонки матриц).
| Имя | Тип | По умолчанию |
|---|---|---|
xx | float | — |
xy | float | — |
xz | float | — |
xw | float | — |
yx | float | — |
yy | float | — |
yz | float | — |
yw | float | — |
zx | float | — |
zy | float | — |
zz | float | — |
zw | float | — |
wx | float | — |
wy | float | — |
wz | float | — |
ww | float | — |
xxКомпонент X вектора X, доступ через p.X.X или [0][0].
xyКомпонент Y вектора X, доступ через p.X.Y или [0][1].
xzКомпонент Z вектора X, доступ через p.X.Z или [0][2].
xwКомпонент W вектора X, доступ через p.X.W или [0][3].
yxВектор Y, компонент X, доступ через p.Y.X или [1][0].
yyВектор Y, компонент Y, доступ через p.Y.Y или [1][1].
yzКомпонент Z вектора Y, доступ через p.Y.Z или [1][2].
ywКомпонент W вектора Y, доступ к которому можно получить через p.Y.W или [1][3].
zxКомпонент X вектора Z, доступ через p.Z.X или [2][0].
zyКомпонент Y вектора Z, доступ к которому можно получить через p.Z.Y или [2][1].
zzКомпонент Z вектора Z, доступ через p.Z.Z или [2][2].
zwКомпонент W вектора Z, доступ через p.Z.W или [2][3].
wxВектор W, компонент X, доступ через p.W.X или [3][0].
wyВектор W, компонент Y, доступ через p.W.Y или [3][1].
wzКомпонент Z вектора W, доступ через p.W.Z или [3][2].
wwКомпонент W вектора W, доступ через p.W.W или [3][3].
Свойства4
IdentityСвойство
public static Projection Identity { get; }Projection без определенного преобразования. При применении к другим структурам данных преобразование не выполняется.
Item2 перегрузки
public Vector4 this[int column] { get; set; }Целые колонки в виде Vector4.
public float this[int column, int row] { get; set; }Доступ к единичным значениям.
ZeroСвойство
public static Projection Zero { get; }Projection со всеми значениями, инициализированными до 0. При применении к другим структурам данных они будут обнулены.
Методы38
CreateDepthCorrectionProjection
public static Projection CreateDepthCorrection(bool flipY);Создает новую Projection, которая проецирует позиции из диапазона глубины от -1 до 1 в диапазон от 0 до 1, и переворачивает спроецированные позиции вертикально в соответствии с flip_y.
| Имя | Тип | По умолчанию |
|---|---|---|
flipY | bool | — |
flipYЕсли проекция должна быть перевернута вертикально.
ProjectionСозданная проекция.
CreateFitAabbProjection
public static Projection CreateFitAabb(Aabb aabb);Создает новую Projection, которая масштабирует заданную проекцию так, чтобы она соответствовала заданному Aabb в пространстве проекции.
| Имя | Тип | По умолчанию |
|---|---|---|
aabb | Aabb | — |
aabb:: Aabb Чтобы вписаться в проекцию.
ProjectionСозданная проекция.
CreateForHmdProjection
public static Projection CreateForHmd(int eye, float aspect, float intraocularDist, float displayWidth, float displayToLens, float oversample, float zNear, float zFar);Создает новую Projection для проецирования позиций на шлем виртуальной реальности с заданным соотношением сторон X:Y, расстоянием между глазами, шириной дисплея, расстоянием до линзы, коэффициентом передискретизации и плоскостями отсечения глубины.
eye создает проекцию для левого глаза, если установлено значение 1, или для правого глаза, если установлено значение 2.
| Имя | Тип | По умолчанию |
|---|---|---|
eye | int | — |
aspect | float | — |
intraocularDist | float | — |
displayWidth | float | — |
displayToLens | float | — |
oversample | float | — |
zNear | float | — |
zFar | float | — |
eyeГлаза, чтобы создать проекцию для. Левый глаз, когда установлен на 1, правый глаз, если установлен на 2.
aspectСоотношение сторон.
intraocularDistРасстояние между глазами.
displayWidthШирина дисплея.
displayToLensРасстояние до линзы.
oversampleСверхвыборочный фактор.
zNearБлижайшее расстояние.
zFarДалеко отрезок.
ProjectionСозданная проекция.
CreateFrustumProjection
public static Projection CreateFrustum(float left, float right, float bottom, float top, float depthNear, float depthFar);Создает новую Projection, которая проецирует положения в усеченной пирамиде с заданными плоскостями отсечения.
| Имя | Тип | По умолчанию |
|---|---|---|
left | float | — |
right | float | — |
bottom | float | — |
top | float | — |
depthNear | float | — |
depthFar | float | — |
leftРасстояние слева.
rightПравильная дистанция.
bottomРасстояние между нижними точками.
topЛучшая дистанция вырезки.
depthNearБлижайшее расстояние.
depthFarДалеко отрезок.
ProjectionСозданная проекция.
CreateFrustumAspectProjection
public static Projection CreateFrustumAspect(float size, float aspect, Vector2 offset, float depthNear, float depthFar, bool flipFov);Создает новую Projection, которая проецирует позиции в усеченном пространстве с заданным размером, соотношением сторон X:Y, смещением и плоскостями отсечения.
flip_fov определяет, переворачивается ли поле зрения проекции по диагонали.
| Имя | Тип | По умолчанию |
|---|---|---|
size | float | — |
aspect | float | — |
offset | Vector2 | — |
depthNear | float | — |
depthFar | float | — |
flipFov | bool | — |
sizeРазмер фрустума.
aspectСоотношение сторон.
offsetКомпенсация подлежит применению.
depthNearБлижайшее расстояние.
depthFarДалеко отрезок.
flipFovЕсли поле обзора перевернуто по диагонали проекции.
ProjectionСозданная проекция.
CreateLightAtlasRectProjection
public static Projection CreateLightAtlasRect(Rect2 rect);Создает новую Projection, которая проецирует позиции в заданный Rect2.
| Имя | Тип | По умолчанию |
|---|---|---|
rect | Rect2 | — |
rect:: Rect2 на проектные должности.
ProjectionСозданная проекция.
CreateOrthogonalProjection
public static Projection CreateOrthogonal(float left, float right, float bottom, float top, float zNear, float zFar);Создает новую Projection, которая проецирует положения с использованием ортогональной проекции с заданными плоскостями отсечения.
| Имя | Тип | По умолчанию |
|---|---|---|
left | float | — |
right | float | — |
bottom | float | — |
top | float | — |
zNear | float | — |
zFar | float | — |
leftРасстояние слева.
rightПравильная дистанция.
bottomРасстояние между нижними точками.
topЛучшая дистанция вырезки.
zNearБлижайшее расстояние.
zFarДалеко отрезок.
ProjectionСозданная проекция.
CreateOrthogonalAspectProjection
public static Projection CreateOrthogonalAspect(float size, float aspect, float zNear, float zFar, bool flipFov);Создает новую Projection, которая проецирует позиции с использованием ортогональной проекции с заданным размером, соотношением сторон X:Y и плоскостями отсечения.
flip_fov определяет, перевернуто ли поле зрения проекции по диагонали.
| Имя | Тип | По умолчанию |
|---|---|---|
size | float | — |
aspect | float | — |
zNear | float | — |
zFar | float | — |
flipFov | bool | — |
sizeРазмер фрустума.
aspectСоотношение сторон.
zNearБлижайшее расстояние.
zFarДалеко отрезок.
flipFovЕсли поле обзора перевернуто по диагонали проекции.
ProjectionСозданная проекция.
CreatePerspectiveProjection
public static Projection CreatePerspective(float fovyDegrees, float aspect, float zNear, float zFar, bool flipFov);Создает новую Projection, которая проецирует позиции с использованием перспективной проекции с заданным полем зрения оси Y (в градусах), соотношением сторон X:Y и плоскостями отсечения.
flip_fov определяет, перевернуто ли поле зрения проекции по диагонали.
| Имя | Тип | По умолчанию |
|---|---|---|
fovyDegrees | float | — |
aspect | float | — |
zNear | float | — |
zFar | float | — |
flipFov | bool | — |
fovyDegrees- вертикальное поле обзора (в градусах).
aspectСоотношение сторон.
zNearБлижайшее расстояние.
zFarДалеко отрезок.
flipFovЕсли поле обзора перевернуто по диагонали проекции.
ProjectionСозданная проекция.
CreatePerspectiveHmdProjection
public static Projection CreatePerspectiveHmd(float fovyDegrees, float aspect, float zNear, float zFar, bool flipFov, int eye, float intraocularDist, float convergenceDist);Создает новую Projection, которая проецирует положения с использованием перспективной проекции с заданным полем зрения оси Y (в градусах), соотношением сторон X:Y и расстояниями отсечения. Проекция настраивается для головного дисплея с заданным расстоянием между глазами и расстоянием до точки, на которой можно сфокусироваться.
eye создает проекцию для левого глаза, если установлено значение 1, или для правого глаза, если установлено значение 2.
flip_fov определяет, переворачивается ли поле зрения проекции по диагонали.
| Имя | Тип | По умолчанию |
|---|---|---|
fovyDegrees | float | — |
aspect | float | — |
zNear | float | — |
zFar | float | — |
flipFov | bool | — |
eye | int | — |
intraocularDist | float | — |
convergenceDist | float | — |
fovyDegrees- вертикальное поле обзора (в градусах).
aspectСоотношение сторон.
zNearБлижайшее расстояние.
zFarДалеко отрезок.
flipFovЕсли поле обзора перевернуто по диагонали проекции.
eyeГлаза, чтобы создать проекцию для. Левый глаз, когда установлен на 1, правый глаз, если установлен на 2.
intraocularDistРасстояние между глазами.
convergenceDistРасстояние до точки конвергенции, на которой можно сосредоточиться.
ProjectionСозданная проекция.
Determinantfloat
public float Determinant();Возвращает скалярное значение, которое является знаковым множителем, на который масштабируются площади этой матрицей. Если знак отрицательный, матрица меняет ориентацию площади. Определитель можно использовать для вычисления обратимости матрицы или решения линейных систем уравнений, включающих матрицу, среди других приложений.
floatОпределяющее значение, рассчитанное по этой проекции.
Equals2 перегрузки
public bool Equals(Projection other);Returns (Возврат) true если прогнозы в точности равны.
| Имя | Тип | По умолчанию |
|---|---|---|
other | Projection | — |
otherДругая проекция.
boolСравняются ли проекции.
public override bool Equals(object? obj);Returns (Возврат) true если проекция точно равна
к данному объектуobj).
| Имя | Тип | По умолчанию |
|---|---|---|
obj | object | — |
objОбъект, с которым можно сравниться.
boolРавно ли вектор и объект равны.
FlippedYProjection
public Projection FlippedY();Возвращает копию этой Projection с перевернутыми знаками значений столбца Y.
ProjectionПроекция перевернулась.
GetAspectfloat
public float GetAspect();Возвращает соотношение сторон X:Y области просмотра Projection.
floatСоотношение сторон в этом проекции.
GetFarPlaneHalfExtentsVector2
public Vector2 GetFarPlaneHalfExtents();Возвращает размеры дальней плоскости отсечения проекции, деленные на два.
Vector2Полушазы для этой проекции.
GetFovfloat
public float GetFov();Возвращает горизонтальное поле зрения проекции (в градусах).
floatГоризонтальное поле обзора этой проекции.
GetFovyfloat
public static float GetFovy(float fovx, float aspect);Возвращает вертикальное поле обзора проекции (в градусах), связанной с данным горизонтальным полем обзора (в градусах) и соотношением размеров.
Примечание: В отличие от большинства методов Projection, aspect Предполагается, что 1 будет разделен на соотношение размеров X:Y.
| Имя | Тип | По умолчанию |
|---|---|---|
fovx | float | — |
aspect | float | — |
fovxГоризонтальное поле обзора (в градусах).
aspectСоотношение сторон.
floatВертикальное поле обзора этой проекции.
GetHashCodeint
public override int GetHashCode();Выполняет функцию хеширования Projection.
intКод хэша для этой проекции.
GetLodMultiplierfloat
public float GetLodMultiplier();Возвращает коэффициент, на который масштабируется видимый уровень детализации этой Projection.
floatУровень детализации для данного прогноза.
GetPixelsPerMeterint
public int GetPixelsPerMeter(int forPixelWidth);Возвращает for_pixel_width, деленный на ширину области просмотра, измеренную в метрах на ближней плоскости, после применения этой Projection.
| Имя | Тип | По умолчанию |
|---|---|---|
forPixelWidth | int | — |
forPixelWidthШирина для каждого пикселя (в метрах).
intКоличество пикселей на метр.
GetProjectionPlanePlane
public Plane GetProjectionPlane(Projection.Planes plane);Возвращает плоскость отсечения этой Projection, индекс которой задан plane.
plane должен быть равен одному из Projection.Planes.Near, Projection.Planes.Far, Projection.Planes.Left, Projection.Planes.Top, Projection.Planes.Right или Projection.Planes.Bottom.
| Имя | Тип | По умолчанию |
|---|---|---|
plane | Projection.Planes | — |
planeТип вырезки из проекции.
PlaneВырезка этой проекции.
GetViewportHalfExtentsVector2
public Vector2 GetViewportHalfExtents();Возвращает размеры плоскости области просмотра, на которую проецируются позиции этой Projection, деленные на два.
Vector2Полушазы для проекции проспекта.
GetZFarfloat
public float GetZFar();Возвращает расстояние для данной Projection, за пределами которого позиции обрезаются.
floatРасстояние, за которое вырезаются позиции.
GetZNearfloat
public float GetZNear();Возвращает расстояние для данной Projection, перед которым позиции обрезаются.
floatРасстояние, перед которым вырезаются позиции.
InverseProjection
public Projection Inverse();Возвращает Projection, которая выполняет обратное проективное преобразование данной Projection.
ProjectionПеревернутая проекция.
IsOrthogonalbool
public bool IsOrthogonal();Возвращает true, если эта Projection выполняет ортогональную проекцию.
boolЕсли проекция выполняет ортогональную проекцию.
JitterOffsetedProjection
public Projection JitterOffseted(Vector2 offset);Возвращает Projection со значениями X и Y из заданного Vector2, добавленными к первому и второму значениям конечного столбца соответственно.
| Имя | Тип | По умолчанию |
|---|---|---|
offset | Vector2 | — |
offsetСмещение, применяемое к прогнозу.
ProjectionПрогнозируемый прогноз.
PerspectiveZNearAdjustedProjection
public Projection PerspectiveZNearAdjusted(float newZNear);Возвращает Projection с ближним расстоянием отсечения, настроенным на new_znear.
Примечание: Исходная Projection должна быть перспективной проекцией.
| Имя | Тип | По умолчанию |
|---|---|---|
newZNear | float | — |
newZNearБлижайшее расстояние вырезки для корректировки проекции.
ProjectionСкорректированный прогноз.
ToString2 перегрузки
public override string ToString();Преобразует это Projection к а string.
stringA string представление этого прогноза.
public string ToString(string? format);Преобразует это Projection к а string с указанным format.
| Имя | Тип | По умолчанию |
|---|---|---|
format | string | — |
stringA string представление этого прогноза.
op_Equalitybool
public static bool operator ==(Projection left, Projection right);Returns (Возврат) true если прогнозы в точности равны.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Projection | — |
right | Projection | — |
leftЛевую проекцию.
rightПравильная проекция.
boolСравняются ли проекции.
op_ExplicitTransform3D
public static explicit operator Transform3D(Projection proj);Построить новый Transform3D от Projection.
| Имя | Тип | По умолчанию |
|---|---|---|
proj | Projection | — |
proj:: Projection.
Transform3Dop_Inequalitybool
public static bool operator !=(Projection left, Projection right);Returns (Возврат) true если прогнозы не совсем равны.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Projection | — |
right | Projection | — |
leftЛевую проекцию.
rightПравильная проекция.
boolНезависимо от того, равны ли прогнозы.
op_Multiply4 перегрузки
public static Projection operator *(Projection left, Projection right);Составляет эти два проекции, умножая их Это имеет своим следствием применение этого права. а затем левую проекцию.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Projection | — |
right | Projection | — |
leftРодитель преобразуется.
rightРебёнок преобразуется.
ProjectionСоставная проекция.
public static Vector3 operator *(Projection proj, Vector3 vector);Возвращается a Vector3 изменяется (многократно) проекцией.
| Имя | Тип | По умолчанию |
|---|---|---|
proj | Projection | — |
vector | Vector3 | — |
projПроекция, которая будет применяться.
vectorA Vector3 Преобразовать.
Vector3Преобразованные Vector3.
public static Vector4 operator *(Projection proj, Vector4 vector);Возвращается a Vector4 изменяется (многократно) проекцией.
| Имя | Тип | По умолчанию |
|---|---|---|
proj | Projection | — |
vector | Vector4 | — |
projПроекция, которая будет применяться.
vectorA Vector4 Преобразовать.
Vector4Преобразованные Vector4.
public static Vector4 operator *(Vector4 vector, Projection proj);Возвращается a Vector4 Преобразование (многократное) путем транспонирования проекции.
Для преобразования в обратном направлении проекции projection.Inverse() * vector вместо этого можно использовать. См. Projection.Inverse.
| Имя | Тип | По умолчанию |
|---|---|---|
vector | Vector4 | — |
proj | Projection | — |
vectorA Vector4 Преобразовать.
projПроекция, которая будет применяться.
Vector4Обратно преобразующиеся Vector4.
Поля и константы4
WПоле
public Vector4 W;Вектор W матрицы проекции (столбец 3). Эквивалентно индексу массива 3.
XПоле
public Vector4 X;Вектор X матрицы проекции (столбец 0). Эквивалентно индексу массива 0.
YПоле
public Vector4 Y;Вектор Y матрицы проекции (столбец 1). Эквивалентно индексу массива 1.
ZПоле
public Vector4 Z;Вектор Z матрицы проекции (столбец 2). Эквивалентно индексу массива 2.
Projection.Planes
| Значение | Описание |
|---|---|
Bottom = 5 | Значение индекса нижней плоскости отсечения проекции. |
Far = 1 | Значение индекса дальней плоскости отсечения проекции. |
Left = 2 | Значение индекса левой плоскости отсечения проекции. |
Near = 0 | Значение индекса ближней плоскости отсечения проекции. |
Right = 4 | Значение индекса правой плоскости отсечения проекции. |
Top = 3 | Значение индекса левой плоскости отсечения проекции. |