reckfellENGINE

Transform3D

Basis и перенос для локального/мирового преобразования.

На этой странице
struct Transform3DReckfellSharpНаследует ValueType

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 перегрузки
# Transform3D · 1/4
C#
public Transform3D(Basis basis, Vector3 origin);

Строит a Transform3D от четырех Vector3 Значения (называемые также столбцами матрицы). Первые три аргумента состоят в следующем: Transform3D.Basisосей (ось)Basis.X, Basis.Y, и Basis.Z).

Параметры
ИмяТипПо умолчанию
basisBasis—
originVector3—
basis

:: Basis чтобы создать основу.

origin

Вектор происхождения или указатель колонки 3.

# Transform3D · 2/4
C#
public Transform3D(Projection projection);

Строит a Transform3D от четырех Vector3 Значения (называемые также столбцами матрицы). Первые три аргумента состоят в следующем: Transform3D.Basisосей (ось)Basis.X, Basis.Y, и Basis.Z).

Параметры
ИмяТипПо умолчанию
projectionProjection—
projection

:: Projection чтобы создать трансформацию.

# Transform3D · 3/4
C#
public Transform3D(Vector3 column0, Vector3 column1, Vector3 column2, Vector3 origin);

Строит a Transform3D от четырех Vector3 Значения (называемые также столбцами матрицы). Первые три аргумента состоят в следующем: Transform3D.Basisосей (ось)Basis.X, Basis.Y, и Basis.Z).

Параметры
ИмяТипПо умолчанию
column0Vector3—
column1Vector3—
column2Vector3—
originVector3—
column0

Вектор Х, или указатель колонки 0.

column1

Вектор Y, или указатель колонки 1.

column2

Вектор Z, или индекс колонки 2.

origin

Вектор происхождения или указатель колонки 3.

# Transform3D · 4/4
C#
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).

Параметры
ИмяТипПо умолчанию
xxfloat—
yxfloat—
zxfloat—
xyfloat—
yyfloat—
zyfloat—
xzfloat—
yzfloat—
zzfloat—
oxfloat—
oyfloat—
ozfloat—
xx

X компонент вектора X, доступ через t.Basis.X.X или [0][0].

yx

Компонент X вектора Y, доступ через t.Basis.Y.X или [1][0].

zx

X компонент вектора Z, доступ через t.Basis.Z.X или [2][0].

xy

Y компонент вектора X, доступ через t.Basis.X.Y или [0][1].

yy

Y компонент вектора Y, доступ к которому обеспечивается через t.Basis.Y.Y или [1][1].

zy

Y компонент столбца Z, доступ через t.Basis.Y.Y или [2][1].

xz

Z компонент вектора X, доступ через t.Basis.X.Y или [0][2].

yz

Z компонент вектора Y, доступ через t.Basis.Y.Y или [1][2].

zz

Z компонент столбца Z, доступ через t.Basis.Y.Y или [2][2].

ox

X компонент вектора происхождения, доступ через t.Origin.X или [2][0].

oy

Компонент Y вектора происхождения, доступ через t.Origin.Y или [2][1].

oz

Z компонент вектора происхождения, доступ через t.Origin.Z или [2][2].

Свойства6

FlipXСвойство
# FlipX
C#
public static Transform3D FlipX { get; }

Transform3D с зеркальным отражением, примененным перпендикулярно плоскости YZ. Его Transform3D.Basis равен Basis.FlipX.

FlipYСвойство
# FlipY
C#
public static Transform3D FlipY { get; }

Transform3D с зеркальным отражением, примененным перпендикулярно плоскости XZ. Его Transform3D.Basis равен Basis.FlipY.

FlipZСвойство
# FlipZ
C#
public static Transform3D FlipZ { get; }

Transform3D с зеркальным отражением, примененным перпендикулярно плоскости XY. Его Transform3D.Basis равен Basis.FlipZ.

IdentityСвойство
# Identity
C#
public static Transform3D Identity { get; }

Тождество Transform3D. Это преобразование без перемещения, без вращения и масштабом Vector3.One. Его Transform3D.Basis равен Basis.Identity. Это также означает, что:

Если a Vector3, a Aabb, a Plane, a Vector3[], или что-то еще Transform3D Преобразуется (многократно) на эту постоянную, не происходит никакой трансформации. Примечание: В C# эта константа эквивалентна созданию a [конструктор Transform3D] без каких-либо аргументов. Он может быть использован для того, чтобы сделать ваш код более ясным и чтобы он соответствовал C#.

Item2 перегрузки
# Item · 1/2
C#
public Vector3 this[int column] { get; set; }

Целые колонки в виде Vector3. Четвертая колонка: Transform3D.Origin Вектор.

# Item · 2/2
C#
public float this[int column, int row] { get; set; }

Элементы матрицы доступа в основном столбце. Четвертая колонка: Transform3D.Origin Вектор.

Методы30

AffineInverseTransform3D
# AffineInverse
C#
public Transform3D AffineInverse();

Обращает Basis и перенос, включая масштаб. При точном нулевом определителе Basis выбрасывает InvalidOperationException. Для преобразования нормали используйте обратный транспонированный Basis, без переноса.

Возвращает Transform3D

Обратное значение. При точном нулевом определителе результат не возвращается: выбрасывается InvalidOperationException.

Equals2 перегрузки
# Equals · 1/2
C#
public bool Equals(Transform3D other);

Returns (Возврат) true если преобразования в точности равны. Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании Transform3D.IsEqualApprox вместо этого, что более надежно.

Параметры
ИмяТипПо умолчанию
otherTransform3D—
other

Другая трансформация для сравнения.

Возвращает bool

Точно ли матрицы равны.

# Equals · 2/2
C#
public override bool Equals(object? obj);

Returns (Возврат) true если преобразование точно равно к данному объектуobj). Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании Transform3D.IsEqualApprox вместо этого, что более надежно.

Параметры
ИмяТипПо умолчанию
objobject—
obj

Объект, с которым можно сравниться.

Возвращает bool

Преобразование или нет, и объект абсолютно равны.

GetHashCodeint
# GetHashCode
C#
public override int GetHashCode();

Выполняет функцию хеширования Transform3D.

Возвращает int

Код хэша для этого преобразования.

InterpolateWithTransform3D
# InterpolateWith
C#
public Transform3D InterpolateWith(Transform3D transform, float weight);

Возвращает результат линейной интерполяции между этим преобразованием и xform по заданному weight. weight должен быть между 0.0 и 1.0 (включительно). Значения вне этого диапазона разрешены и могут использоваться для выполнения экстраполяции.

Параметры
ИмяТипПо умолчанию
transformTransform3D—
weightfloat—
transform

Другая трансформация.

weight

Значение на диапазоне от 0,0 до 1,0, представляющее собой величину интерполяции.

Возвращает Transform3D

Интерполярная трансформация.

InverseTransform3D
# Inverse
C#
public Transform3D Inverse();

Использует транспонированный Basis и предполагает ортонормированность. Не заменяет AffineInverse под неравномерным масштабом.

Возвращает Transform3D

Обратная матрица.

IsEqualApproxbool
# IsEqualApprox
C#
public bool IsEqualApprox(Transform3D other);

Возвращает true, если это преобразование и xform приблизительно равны, путем запуска @GlobalScope.is_equal_approx для каждого компонента.

Параметры
ИмяТипПо умолчанию
otherTransform3D—
other

Другая трансформация для сравнения.

Возвращает bool

Является ли матрица приблизительно равной.

IsFinitebool
# IsFinite
C#
public bool IsFinite();

Возвращает true, если это преобразование конечно, вызывая @GlobalScope.is_finite для каждого компонента.

Возвращает bool

Является ли этот вектор конечным или нет.

LookingAt2 перегрузки
# LookingAt · 1/2
C#
public Transform3D LookingAt(Vector3 target, Vector3 up);

Возвращает копию этого преобразования, повернутую так, чтобы прямая ось (-Z) указывала на позицию target. Верхняя ось (+Y) указывает как можно ближе к вектору up, оставаясь перпендикулярной прямой оси. Результирующее преобразование ортонормализовано. Существующая информация о вращении, масштабе и наклоне из исходного преобразования отбрасывается. Векторы target и up не могут быть нулевыми, не могут быть параллельны друг другу и определены в глобальном/родительском пространстве. Если use_model_front равно true, ось +Z (фронт актива) рассматривается как прямая (подразумевается, что +X слева) и указывает на позицию target. По умолчанию ось -Z (камера впереди) рассматривается как прямая (подразумевается, что +X справа).

Параметры
ИмяТипПо умолчанию
targetVector3—
upVector3—
Возвращает Transform3D
# LookingAt · 2/2
C#
public 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 справа).

Параметры
ИмяТипПо умолчанию
targetVector3—
upVector3?default
useModelFrontboolfalse
target

Объект, на который стоит смотреть.

up

Относительное направление вверх.

useModelFront

Если это так, то модель ориентирована наоборот, в направлении передней оси модели (+Z, Vector3. Модель " Передний край &quuot; , которая более полезна для ориентации 3D моделей.

Возвращает Transform3D

В результате происходит преобразование.

OrthonormalizedTransform3D
# Orthonormalized
C#
public Transform3D Orthonormalized();

Возвращает копию этого преобразования с его Transform3D.Basis ортонормированным. Ортонормированный базис является как перпендикулярный (оси перпендикулярны друг другу), так и нормализованным (оси имеют длину 1.0), что также означает, что он может представлять только поворот. См. также Basis.Orthonormalized.

Возвращает Transform3D

Ортонормализованное преобразование.

RotatedTransform3D
# Rotated
C#
public Transform3D Rotated(Vector3 axis, float angle);

Вращает преобразование во внешнем пространстве, включая Origin вокруг внешнего начала. axis должна иметь длину 1, angle задаётся в радианах. Возвращает копию; исходное значение не изменяет.

Параметры
ИмяТипПо умолчанию
axisVector3—
anglefloat—
axis

Единичная ось во внешнем пространстве.

angle

Угол в радианах; для градусов используйте Mathf.DegToRad.

Возвращает Transform3D

Копия с новым Basis и повёрнутым Origin.

RotatedLocalTransform3D
# RotatedLocal
C#
public Transform3D RotatedLocal(Vector3 axis, float angle);

Вращает в локальном базисе и сохраняет Origin. axis должна иметь длину 1, angle задаётся в радианах. Возвращает копию; исходное значение не изменяет.

Параметры
ИмяТипПо умолчанию
axisVector3—
anglefloat—
axis

Единичная ось в локальном пространстве.

angle

Угол в радианах; для градусов используйте Mathf.DegToRad.

Возвращает Transform3D

Копия с новым Basis и прежним Origin.

ScaledTransform3D
# Scaled
C#
public Transform3D Scaled(Vector3 scale);

Возвращает копию этого преобразования, масштабированную заданным коэффициентом scale. Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее масштабирующее преобразование S слева, т. е. S * X. Это можно рассматривать как преобразование относительно глобального/родительского кадра.

Параметры
ИмяТипПо умолчанию
scaleVector3—
scale

Масштаб для введения.

Возвращает Transform3D

Расширенная матрица преобразований.

ScaledLocalTransform3D
# ScaledLocal
C#
public Transform3D ScaledLocal(Vector3 scale);

Возвращает копию этого преобразования, масштабированную заданным коэффициентом scale. Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее масштабирующее преобразование S справа, т. е. X * S. Это можно рассматривать как преобразование относительно локального кадра.

Перевод:

Параметры
ИмяТипПо умолчанию
scaleVector3—
scale

Масштаб для введения.

Возвращает Transform3D

Расширенная матрица преобразований.

ToString2 перегрузки
# ToString · 1/2
C#
public override string ToString();

Преобразует это Transform3D к а string.

Возвращает string

A string :: представление этого преобразования.

# ToString · 2/2
C#
public string ToString(string? format);

Преобразует это Transform3D к а string с указанным format.

Параметры
ИмяТипПо умолчанию
formatstring—
Возвращает string

A string :: представление этого преобразования.

TranslatedTransform3D
# Translated
C#
public Transform3D Translated(Vector3 offset);

Возвращает копию этого преобразования, переведенную на заданное offset. Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее преобразование перевода T слева, т. е. T * X. Это можно рассматривать как преобразование относительно глобального/родительского фрейма.

Параметры
ИмяТипПо умолчанию
offsetVector3—
offset

Компенсация на перевод.

Возвращает Transform3D

Переведенная матрица.

TranslatedLocalTransform3D
# TranslatedLocal
C#
public Transform3D TranslatedLocal(Vector3 offset);

Возвращает копию этого преобразования, переведенную на заданное offset. Этот метод является оптимизированной версией умножения заданного преобразования X на соответствующее преобразование перевода T справа, т. е. X * T. Это можно рассматривать как преобразование относительно локального фрейма.

Параметры
ИмяТипПо умолчанию
offsetVector3—
offset

Компенсация на перевод.

Возвращает Transform3D

Переведенная матрица.

op_Equalitybool
# op_Equality
C#
public static bool operator ==(Transform3D left, Transform3D right);

Returns (Возврат) true если преобразования в точности равны. Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании Transform3D.IsEqualApprox вместо этого, что более надежно.

Параметры
ИмяТипПо умолчанию
leftTransform3D—
rightTransform3D—
left

Левую трансформацию.

right

Правильное преобразование.

Возвращает bool

Точно ли равны трансформации.

op_Inequalitybool
# op_Inequality
C#
public static bool operator !=(Transform3D left, Transform3D right);

Returns (Возврат) true если преобразования не равны. Примечание: Из-за ошибок в точности в плавающей точке рассмотреть вопрос об использовании Transform3D.IsEqualApprox вместо этого, что более надежно.

Параметры
ИмяТипПо умолчанию
leftTransform3D—
rightTransform3D—
left

Левую трансформацию.

right

Правильное преобразование.

Возвращает bool

Не равны ли трансформации?

op_Multiply9 перегрузок
# op_Multiply · 1/9
C#
public static Aabb operator *(Aabb aabb, Transform3D transform);

Возвращает AABB преобразованный (многократный) матрицей обратного преобразования, при том предположении, что основа преобразования является ортопедической (т.е. вращение/отражение)

  • в порядке, масштабирование/скайв - нет). aabb * transform эквивалентен transform.Inverse() * aabbСм. Transform3D.Inverse. Преобразование в обратном направлении аффилированного преобразования (например, при масштабировании) transform.AffineInverse() * aabb вместо этого можно использовать. См. Transform3D.AffineInverse.
Параметры
ИмяТипПо умолчанию
aabbAabb—
transformTransform3D—
aabb

AABB для обратного преобразования.

transform

Преобразование будет применяться.

Возвращает Aabb

Обратно преобразованный AABB.

# op_Multiply · 2/9
C#
public static Plane operator *(Plane plane, Transform3D transform);

Возвращается a Plane Преобразован (многократно) в матрицу обратного преобразования. plane * transform эквивалентен transform.AffineInverse() * planeСм. Transform3D.AffineInverse.

Параметры
ИмяТипПо умолчанию
planePlane—
transformTransform3D—
plane

A Plane Чтобы обратно преобразоваться.

transform

Преобразование будет применяться.

Возвращает Plane

Обратно преобразующиеся Plane.

# op_Multiply · 3/9
C#
public static Aabb operator *(Transform3D transform, Aabb aabb);

Возвращает AABB преобразованный (многократный) матрицей преобразования.

Параметры
ИмяТипПо умолчанию
transformTransform3D—
aabbAabb—
transform

Преобразование будет применяться.

aabb

AABB для преобразования.

Возвращает Aabb

Преобразованный AABB.

# op_Multiply · 4/9
C#
public static Plane operator *(Transform3D transform, Plane plane);

Возвращается a Plane Преобразован (многократно) в матрицу преобразования.

Параметры
ИмяТипПо умолчанию
transformTransform3D—
planePlane—
transform

Преобразование будет применяться.

plane

A Plane Преобразовать.

Возвращает Plane

Преобразованные Plane.

# op_Multiply · 5/9
C#
public static Transform3D operator *(Transform3D left, Transform3D right);

Составляет эти две матрицы преобразования, умножая их Это приводит к преобразованию второго преобразования. Клянусь ребёнком!

Параметры
ИмяТипПо умолчанию
leftTransform3D—
rightTransform3D—
left

Родитель преобразуется.

right

Ребёнок преобразуется.

Возвращает Transform3D

Составная трансформация.

# op_Multiply · 6/9
C#
public static Vector3 operator *(Transform3D transform, Vector3 vector);

Возвращается a Vector3 Преобразован (многократно) в матрицу преобразования.

Параметры
ИмяТипПо умолчанию
transformTransform3D—
vectorVector3—
transform

Преобразование будет применяться.

vector

A Vector3 Преобразовать.

Возвращает Vector3

Преобразованные Vector3.

# op_Multiply · 7/9
C#
public static Vector3[] operator *(Transform3D transform, Vector3[] array);

Возвращает копию данного документа Vector3[] преобразуется (многократно) в матрицу преобразования.

Параметры
ИмяТипПо умолчанию
transformTransform3D—
arrayVector3[]—
transform

Преобразование будет применяться.

array

A Vector3[] преобразовать.

Возвращает Vector3[]

Преобразованная копия Vector3[].

# op_Multiply · 8/9
C#
public static Vector3 operator *(Vector3 vector, Transform3D transform);

Возвращается a Vector3 преобразованная (многократно) матрицей обратного преобразования, при том предположении, что основа преобразования является ортопедической (т.е. вращение/отражение)

  • в порядке, масштабирование/скайв - нет). vector * transform эквивалентен transform.Inverse() * vectorСм. Transform3D.Inverse. Преобразование в обратном направлении аффилированного преобразования (например, при масштабировании) transform.AffineInverse() * vector вместо этого можно использовать. См. Transform3D.AffineInverse.
Параметры
ИмяТипПо умолчанию
vectorVector3—
transformTransform3D—
vector

A Vector3 Чтобы обратно преобразоваться.

transform

Преобразование будет применяться.

Возвращает Vector3

Обратно преобразующиеся Vector3.

# op_Multiply · 9/9
C#
public static Vector3[] operator *(Vector3[] array, Transform3D transform);

Возвращает копию данного документа Vector3[] преобразуется (многократно) в матрицу обратного преобразования, при том предположении, что основа преобразования является ортопедической (т.е. вращение/отражение)

  • в порядке, масштабирование/скайв - нет). array * transform эквивалентен transform.Inverse() * arrayСм. Transform3D.Inverse. Преобразование в обратном направлении аффилированного преобразования (например, при масштабировании) transform.AffineInverse() * array вместо этого можно использовать. См. Transform3D.AffineInverse.
Параметры
ИмяТипПо умолчанию
arrayVector3[]—
transformTransform3D—
array

A Vector3[] обратную трансформацию.

transform

Преобразование будет применяться.

Возвращает Vector3[]

Обратно преобразованная копия Vector3[].

Поля и константы2

BasisПоле
# Basis
C#
public Basis Basis;

Basis этого преобразования. Он состоит из 3 осей (Basis.X, Basis.Y и Basis.Z). Вместе они представляют вращение, масштаб и сдвиг преобразования.

OriginПоле
# Origin
C#
public Vector3 Origin;

Смещение трансляции этого преобразования. В трехмерном пространстве это можно рассматривать как позицию.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.