Transform3D
Basis и перенос для локального/мирового преобразования.
transform × point учитывает Basis и Origin; Basis × direction не добавляет перенос. parent × child сначала применяет child. У Entity3D с родителем Entity3D и TopLevel = false мировой трансформ обычно равен parent.GlobalTransform × Transform. TopLevel отключает наследование. При пересчёте с включённым SetDisableScale(true) мировой Basis ортонормируется; сам флаг не обновляет уже рассчитанный трансформ.
Inverse и point × transform корректны для ортонормированного базиса; для масштаба нужен AffineInverse при ненулевом определителе. Rotated вращает также Origin вокруг внешнего начала, RotatedLocal сохраняет Origin. Интерполяция преобразования не является физическим перемещением с проверкой столкновений.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы4
Transform3D4 перегрузки
public Transform3D(Basis basis, Vector3 origin);Строит a Transform3D от четырех Vector3 Значения (называемые также столбцами матрицы).
Первые три аргумента состоят в следующем: Transform3D.Basisосей (ось)Basis.X, Basis.Y, и Basis.Z).
| Имя | Тип | По умолчанию |
|---|---|---|
basis | Basis | — |
origin | Vector3 | — |
basis:: Basis чтобы создать основу.
originВектор происхождения или указатель колонки 3.
public Transform3D(Projection projection);Строит a Transform3D от четырех Vector3 Значения (называемые также столбцами матрицы).
Первые три аргумента состоят в следующем: Transform3D.Basisосей (ось)Basis.X, Basis.Y, и Basis.Z).
| Имя | Тип | По умолчанию |
|---|---|---|
projection | Projection | — |
projection:: Projection чтобы создать трансформацию.
public Transform3D(Vector3 column0, Vector3 column1, Vector3 column2, Vector3 origin);Строит a Transform3D от четырех Vector3 Значения (называемые также столбцами матрицы).
Первые три аргумента состоят в следующем: Transform3D.Basisосей (ось)Basis.X, Basis.Y, и Basis.Z).
| Имя | Тип | По умолчанию |
|---|---|---|
column0 | Vector3 | — |
column1 | Vector3 | — |
column2 | Vector3 | — |
origin | Vector3 | — |
column0Вектор Х, или указатель колонки 0.
column1Вектор Y, или указатель колонки 1.
column2Вектор Z, или индекс колонки 2.
originВектор происхождения или указатель колонки 3.
public Transform3D(float xx, float yx, float zx, float xy, float yy, float zy, float xz, float yz, float zz, float ox, float oy, float oz);Строит a Transform3D от четырех Vector3 Значения (называемые также столбцами матрицы).
Первые три аргумента состоят в следующем: Transform3D.Basisосей (ось)Basis.X, Basis.Y, и Basis.Z).
| Имя | Тип | По умолчанию |
|---|---|---|
xx | float | — |
yx | float | — |
zx | float | — |
xy | float | — |
yy | float | — |
zy | float | — |
xz | float | — |
yz | float | — |
zz | float | — |
ox | float | — |
oy | float | — |
oz | float | — |
xxX компонент вектора X, доступ через t.Basis.X.X или [0][0].
yxКомпонент X вектора Y, доступ через t.Basis.Y.X или [1][0].
zxX компонент вектора Z, доступ через t.Basis.Z.X или [2][0].
xyY компонент вектора X, доступ через t.Basis.X.Y или [0][1].
yyY компонент вектора Y, доступ к которому обеспечивается через t.Basis.Y.Y или [1][1].
zyY компонент столбца Z, доступ через t.Basis.Y.Y или [2][1].
xzZ компонент вектора X, доступ через t.Basis.X.Y или [0][2].
yzZ компонент вектора Y, доступ через t.Basis.Y.Y или [1][2].
zzZ компонент столбца Z, доступ через t.Basis.Y.Y или [2][2].
oxX компонент вектора происхождения, доступ через t.Origin.X или [2][0].
oyКомпонент Y вектора происхождения, доступ через t.Origin.Y или [2][1].
ozZ компонент вектора происхождения, доступ через t.Origin.Z или [2][2].
Свойства6
FlipXСвойство
public static Transform3D FlipX { get; }Transform3D с зеркальным отражением, примененным перпендикулярно плоскости YZ. Его Transform3D.Basis равен Basis.FlipX.
FlipYСвойство
public static Transform3D FlipY { get; }Transform3D с зеркальным отражением, примененным перпендикулярно плоскости XZ. Его Transform3D.Basis равен Basis.FlipY.
FlipZСвойство
public static Transform3D FlipZ { get; }Transform3D с зеркальным отражением, примененным перпендикулярно плоскости XY. Его Transform3D.Basis равен Basis.FlipZ.
IdentityСвойство
public static Transform3D Identity { get; }Тождество Transform3D. Это преобразование без перемещения, без вращения и масштабом Vector3.One. Его Transform3D.Basis равен Basis.Identity. Это также означает, что:
- Его
Basis.Xуказывает вправо (Vector3.Right); - Его
Basis.Yуказывает вверх (Vector3.Up); - Его
Basis.Zуказывает назад (Vector3.Back).
Если a Vector3, a Aabb, a Plane, a Vector3[], или что-то еще Transform3D Преобразуется (многократно) на эту постоянную, не происходит никакой трансформации.
Примечание: В C# эта константа эквивалентна созданию a [конструктор Transform3D] без каких-либо аргументов. Он может быть использован для того, чтобы сделать ваш код более ясным и чтобы он соответствовал C#.
Item2 перегрузки
public Vector3 this[int column] { get; set; }Целые колонки в виде Vector3.
Четвертая колонка: Transform3D.Origin Вектор.
public float this[int column, int row] { get; set; }Элементы матрицы доступа в основном столбце.
Четвертая колонка: Transform3D.Origin Вектор.
Методы30
AffineInverseTransform3D
public Transform3D AffineInverse();Обращает Basis и перенос, включая масштаб. При точном нулевом определителе Basis выбрасывает InvalidOperationException. Для преобразования нормали используйте обратный транспонированный Basis, без переноса.
Transform3DОбратное значение. При точном нулевом определителе результат не возвращается: выбрасывается InvalidOperationException.
Equals2 перегрузки
public bool Equals(Transform3D other);Returns (Возврат) true если преобразования в точности равны.
Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании
Transform3D.IsEqualApprox вместо этого, что более надежно.
| Имя | Тип | По умолчанию |
|---|---|---|
other | Transform3D | — |
otherДругая трансформация для сравнения.
boolТочно ли матрицы равны.
public override bool Equals(object? obj);Returns (Возврат) true если преобразование точно равно
к данному объектуobj).
Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании
Transform3D.IsEqualApprox вместо этого, что более надежно.
| Имя | Тип | По умолчанию |
|---|---|---|
obj | object | — |
objОбъект, с которым можно сравниться.
boolПреобразование или нет, и объект абсолютно равны.
GetHashCodeint
public override int GetHashCode();Выполняет функцию хеширования Transform3D.
intКод хэша для этого преобразования.
InterpolateWithTransform3D
public Transform3D InterpolateWith(Transform3D transform, float weight);Возвращает результат линейной интерполяции между этим преобразованием и xform по заданному weight.
weight должен быть между 0.0 и 1.0 (включительно). Значения вне этого диапазона разрешены и могут использоваться для выполнения экстраполяции.
| Имя | Тип | По умолчанию |
|---|---|---|
transform | Transform3D | — |
weight | float | — |
transformДругая трансформация.
weightЗначение на диапазоне от 0,0 до 1,0, представляющее собой величину интерполяции.
Transform3DИнтерполярная трансформация.
InverseTransform3D
public Transform3D Inverse();Использует транспонированный Basis и предполагает ортонормированность. Не заменяет AffineInverse под неравномерным масштабом.
Transform3DОбратная матрица.
IsEqualApproxbool
public bool IsEqualApprox(Transform3D other);Возвращает true, если это преобразование и xform приблизительно равны, путем запуска @GlobalScope.is_equal_approx для каждого компонента.
| Имя | Тип | По умолчанию |
|---|---|---|
other | Transform3D | — |
otherДругая трансформация для сравнения.
boolЯвляется ли матрица приблизительно равной.
IsFinitebool
public bool IsFinite();Возвращает true, если это преобразование конечно, вызывая @GlobalScope.is_finite для каждого компонента.
boolЯвляется ли этот вектор конечным или нет.
LookingAt2 перегрузки
public Transform3D LookingAt(Vector3 target, Vector3 up);Возвращает копию этого преобразования, повернутую так, чтобы прямая ось (-Z) указывала на позицию target.
Верхняя ось (+Y) указывает как можно ближе к вектору up, оставаясь перпендикулярной прямой оси. Результирующее преобразование ортонормализовано. Существующая информация о вращении, масштабе и наклоне из исходного преобразования отбрасывается. Векторы target и up не могут быть нулевыми, не могут быть параллельны друг другу и определены в глобальном/родительском пространстве.
Если use_model_front равно true, ось +Z (фронт актива) рассматривается как прямая (подразумевается, что +X слева) и указывает на позицию target. По умолчанию ось -Z (камера впереди) рассматривается как прямая (подразумевается, что +X справа).
| Имя | Тип | По умолчанию |
|---|---|---|
target | Vector3 | — |
up | Vector3 | — |
Transform3Dpublic Transform3D LookingAt(Vector3 target, Vector3? up = default, bool useModelFront = false);Возвращает копию этого преобразования, повернутую так, чтобы прямая ось (-Z) указывала на позицию target.
Верхняя ось (+Y) указывает как можно ближе к вектору up, оставаясь перпендикулярной прямой оси. Результирующее преобразование ортонормализовано. Существующая информация о вращении, масштабе и наклоне из исходного преобразования отбрасывается. Векторы target и up не могут быть нулевыми, не могут быть параллельны друг другу и определены в глобальном/родительском пространстве.
Если use_model_front равно true, ось +Z (фронт актива) рассматривается как прямая (подразумевается, что +X слева) и указывает на позицию target. По умолчанию ось -Z (камера впереди) рассматривается как прямая (подразумевается, что +X справа).
| Имя | Тип | По умолчанию |
|---|---|---|
target | Vector3 | — |
up | Vector3? | default |
useModelFront | bool | false |
targetОбъект, на который стоит смотреть.
upОтносительное направление вверх.
useModelFrontЕсли это так, то модель ориентирована наоборот, в направлении передней оси модели (+Z, Vector3. Модель " Передний край &quuot; , которая более полезна для ориентации 3D моделей.
Transform3DВ результате происходит преобразование.
OrthonormalizedTransform3D
public Transform3D Orthonormalized();Возвращает копию этого преобразования с его Transform3D.Basis ортонормированным. Ортонормированный базис является как перпендикулярный (оси перпендикулярны друг другу), так и нормализованным (оси имеют длину 1.0), что также означает, что он может представлять только поворот. См. также Basis.Orthonormalized.
Transform3DОртонормализованное преобразование.
RotatedTransform3D
public Transform3D Rotated(Vector3 axis, float angle);Вращает преобразование во внешнем пространстве, включая Origin вокруг внешнего начала. axis должна иметь длину 1, angle задаётся в радианах. Возвращает копию; исходное значение не изменяет.
| Имя | Тип | По умолчанию |
|---|---|---|
axis | Vector3 | — |
angle | float | — |
axisЕдиничная ось во внешнем пространстве.
angleУгол в радианах; для градусов используйте Mathf.DegToRad.
Transform3DКопия с новым Basis и повёрнутым Origin.
RotatedLocalTransform3D
public Transform3D RotatedLocal(Vector3 axis, float angle);Вращает в локальном базисе и сохраняет Origin. axis должна иметь длину 1, angle задаётся в радианах. Возвращает копию; исходное значение не изменяет.
| Имя | Тип | По умолчанию |
|---|---|---|
axis | Vector3 | — |
angle | float | — |
axisЕдиничная ось в локальном пространстве.
angleУгол в радианах; для градусов используйте Mathf.DegToRad.
Transform3DКопия с новым Basis и прежним Origin.
ScaledTransform3D
public Transform3D Scaled(Vector3 scale);Возвращает копию этого преобразования, масштабированную заданным коэффициентом scale.
Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее масштабирующее преобразование S слева, т. е. S * X.
Это можно рассматривать как преобразование относительно глобального/родительского кадра.
| Имя | Тип | По умолчанию |
|---|---|---|
scale | Vector3 | — |
scaleМасштаб для введения.
Transform3DРасширенная матрица преобразований.
ScaledLocalTransform3D
public Transform3D ScaledLocal(Vector3 scale);Возвращает копию этого преобразования, масштабированную заданным коэффициентом scale.
Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее масштабирующее преобразование S справа, т. е. X * S.
Это можно рассматривать как преобразование относительно локального кадра.
Перевод:
| Имя | Тип | По умолчанию |
|---|---|---|
scale | Vector3 | — |
scaleМасштаб для введения.
Transform3DРасширенная матрица преобразований.
ToString2 перегрузки
public override string ToString();Преобразует это Transform3D к а string.
stringA string :: представление этого преобразования.
public string ToString(string? format);Преобразует это Transform3D к а string с указанным format.
| Имя | Тип | По умолчанию |
|---|---|---|
format | string | — |
stringA string :: представление этого преобразования.
TranslatedTransform3D
public Transform3D Translated(Vector3 offset);Возвращает копию этого преобразования, переведенную на заданное offset.
Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее преобразование перевода T слева, т. е. T * X.
Это можно рассматривать как преобразование относительно глобального/родительского фрейма.
| Имя | Тип | По умолчанию |
|---|---|---|
offset | Vector3 | — |
offsetКомпенсация на перевод.
Transform3DПереведенная матрица.
TranslatedLocalTransform3D
public Transform3D TranslatedLocal(Vector3 offset);Возвращает копию этого преобразования, переведенную на заданное offset.
Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее преобразование перевода T справа, т. е. X * T.
Это можно рассматривать как преобразование относительно локального фрейма.
| Имя | Тип | По умолчанию |
|---|---|---|
offset | Vector3 | — |
offsetКомпенсация на перевод.
Transform3DПереведенная матрица.
op_Equalitybool
public static bool operator ==(Transform3D left, Transform3D right);Returns (Возврат) true если преобразования в точности равны.
Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании
Transform3D.IsEqualApprox вместо этого, что более надежно.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Transform3D | — |
right | Transform3D | — |
leftЛевую трансформацию.
rightПравильное преобразование.
boolТочно ли равны трансформации.
op_Inequalitybool
public static bool operator !=(Transform3D left, Transform3D right);Returns (Возврат) true если преобразования не равны.
Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании
Transform3D.IsEqualApprox вместо этого, что более надежно.
| Имя | Тип | По умолчанию |
|---|---|---|
left | Transform3D | — |
right | Transform3D | — |
leftЛевую трансформацию.
rightПравильное преобразование.
boolНе равны ли трансформации?
op_Multiply9 перегрузок
public static Aabb operator *(Aabb aabb, Transform3D transform);Возвращает AABB преобразованный (многократный) матрицей обратного преобразования, при том предположении, что основа преобразования является ортопедической (т.е. вращение/отражение)
- в порядке, масштабирование/скайв - нет).
aabb * transformэквивалентенtransform.Inverse() * aabbСм.Transform3D.Inverse. Преобразование в обратном направлении аффилированного преобразования (например, при масштабировании)transform.AffineInverse() * aabbвместо этого можно использовать. См.Transform3D.AffineInverse.
| Имя | Тип | По умолчанию |
|---|---|---|
aabb | Aabb | — |
transform | Transform3D | — |
aabbAABB для обратного преобразования.
transformПреобразование будет применяться.
AabbОбратно преобразованный AABB.
public static Plane operator *(Plane plane, Transform3D transform);Возвращается a Plane Преобразован (многократно) в матрицу обратного преобразования.
plane * transform эквивалентен transform.AffineInverse() * planeСм. Transform3D.AffineInverse.
| Имя | Тип | По умолчанию |
|---|---|---|
plane | Plane | — |
transform | Transform3D | — |
planeA Plane Чтобы обратно преобразоваться.
transformПреобразование будет применяться.
PlaneОбратно преобразующиеся Plane.
public static Aabb operator *(Transform3D transform, Aabb aabb);Возвращает AABB преобразованный (многократный) матрицей преобразования.
| Имя | Тип | По умолчанию |
|---|---|---|
transform | Transform3D | — |
aabb | Aabb | — |
transformПреобразование будет применяться.
aabbAABB для преобразования.
AabbПреобразованный AABB.
public static Plane operator *(Transform3D transform, Plane plane);Возвращается a Plane Преобразован (многократно) в матрицу преобразования.
| Имя | Тип | По умолчанию |
|---|---|---|
transform | Transform3D | — |
plane | Plane | — |
transformПреобразование будет применяться.
planeA Plane Преобразовать.
PlaneПреобразованные Plane.
public static Transform3D operator *(Transform3D left, Transform3D right);Составляет эти две матрицы преобразования, умножая их Это приводит к преобразованию второго преобразования. Клянусь ребёнком!
| Имя | Тип | По умолчанию |
|---|---|---|
left | Transform3D | — |
right | Transform3D | — |
leftРодитель преобразуется.
rightРебёнок преобразуется.
Transform3DСоставная трансформация.
public static Vector3 operator *(Transform3D transform, Vector3 vector);Возвращается a Vector3 Преобразован (многократно) в матрицу преобразования.
| Имя | Тип | По умолчанию |
|---|---|---|
transform | Transform3D | — |
vector | Vector3 | — |
transformПреобразование будет применяться.
vectorA Vector3 Преобразовать.
Vector3Преобразованные Vector3.
public static Vector3[] operator *(Transform3D transform, Vector3[] array);Возвращает копию данного документа Vector3[] преобразуется (многократно) в матрицу преобразования.
| Имя | Тип | По умолчанию |
|---|---|---|
transform | Transform3D | — |
array | Vector3[] | — |
transformПреобразование будет применяться.
arrayA Vector3[] преобразовать.
Vector3[]Преобразованная копия Vector3[].
public static Vector3 operator *(Vector3 vector, Transform3D transform);Возвращается a Vector3 преобразованная (многократно) матрицей обратного преобразования, при том предположении, что основа преобразования является ортопедической (т.е. вращение/отражение)
- в порядке, масштабирование/скайв - нет).
vector * transformэквивалентенtransform.Inverse() * vectorСм.Transform3D.Inverse. Преобразование в обратном направлении аффилированного преобразования (например, при масштабировании)transform.AffineInverse() * vectorвместо этого можно использовать. См.Transform3D.AffineInverse.
| Имя | Тип | По умолчанию |
|---|---|---|
vector | Vector3 | — |
transform | Transform3D | — |
vectorA Vector3 Чтобы обратно преобразоваться.
transformПреобразование будет применяться.
Vector3Обратно преобразующиеся Vector3.
public static Vector3[] operator *(Vector3[] array, Transform3D transform);Возвращает копию данного документа Vector3[] преобразуется (многократно) в матрицу обратного преобразования, при том предположении, что основа преобразования является ортопедической (т.е. вращение/отражение)
- в порядке, масштабирование/скайв - нет).
array * transformэквивалентенtransform.Inverse() * arrayСм.Transform3D.Inverse. Преобразование в обратном направлении аффилированного преобразования (например, при масштабировании)transform.AffineInverse() * arrayвместо этого можно использовать. См.Transform3D.AffineInverse.
| Имя | Тип | По умолчанию |
|---|---|---|
array | Vector3[] | — |
transform | Transform3D | — |
arrayA Vector3[] обратную трансформацию.
transformПреобразование будет применяться.
Vector3[]Обратно преобразованная копия Vector3[].
Поля и константы2
BasisПоле
OriginПоле
public Vector3 Origin;Смещение трансляции этого преобразования. В трехмерном пространстве это можно рассматривать как позицию.