Introduce Trs type.
Combines a translation, rotation, and size into a single struct. PiperOrigin-RevId: 902620586 Change-Id: I628bfdedebde8c83239215efe0bee4a338eabd06
This commit is contained in:
committed by
Copybara-Service
parent
35f7db8e91
commit
cad734ae70
@@ -46,15 +46,31 @@ inline filament::math::float4 ReadFloat4(const T* arr, int index = 0) {
|
|||||||
|
|
||||||
// Reads a mat3 from an array buffer in the model/scene.
|
// Reads a mat3 from an array buffer in the model/scene.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline filament::math::mat3 ReadMat3(const T* arr, int index = 0) {
|
inline filament::math::mat3f ReadMat3(const T* arr, int index = 0) {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
const T* ptr = arr + (9 * index);
|
const T* ptr = arr + (9 * index);
|
||||||
return filament::math::mat3(ptr[0], ptr[3], ptr[6],
|
return filament::math::mat3f(ptr[0], ptr[3], ptr[6],
|
||||||
ptr[1], ptr[4], ptr[7],
|
ptr[1], ptr[4], ptr[7],
|
||||||
ptr[2], ptr[5], ptr[8]);
|
ptr[2], ptr[5], ptr[8]);
|
||||||
// clang-format on
|
// clang-format on
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A tuple of translation, rotation, and size.
|
||||||
|
struct Trs {
|
||||||
|
filament::math::float3 translation{0.0f, 0.0f, 0.0f};
|
||||||
|
filament::math::mat3f rotation;
|
||||||
|
// Note: this is _slightly_ different than scale. For example, for capsules,
|
||||||
|
// the size determines the length of the tube and the radius of the domes,
|
||||||
|
// but the shape remains a capsule.
|
||||||
|
filament::math::float3 size{1.0f, 1.0f, 1.0f};
|
||||||
|
|
||||||
|
// Converts the TRS to a transform matrix.
|
||||||
|
filament::math::mat4f ToTransform() const {
|
||||||
|
return filament::math::mat4f(rotation, translation) *
|
||||||
|
filament::math::mat4f::scaling(size);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// Calculates a reflection matrix for a plane defined by its transform.
|
// Calculates a reflection matrix for a plane defined by its transform.
|
||||||
filament::math::mat4 ToReflectionMatrix(const filament::math::mat4& xform);
|
filament::math::mat4 ToReflectionMatrix(const filament::math::mat4& xform);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user