pub struct Bone {
pub name: String<32>,
pub position: Vector3<f32>,
pub rotation: UnitQuaternion<f32>,
pub scale: Vector3<f32>,
pub parent: Option<BoneId>,
pub local_transform: Matrix4<f32>,
pub world_transform: Matrix4<f32>,
pub inverse_bind_pose: Matrix4<f32>,
}Expand description
A single bone in a skeleton hierarchy.
Each bone has a local transform relative to its parent, and a computed world transform used for skinning.
Fields§
§name: String<32>Bone name for debugging
position: Vector3<f32>Local position relative to parent
rotation: UnitQuaternion<f32>Local rotation relative to parent
scale: Vector3<f32>Local scale
parent: Option<BoneId>Parent bone ID (None for root)
local_transform: Matrix4<f32>Local transform matrix (position + rotation + scale)
world_transform: Matrix4<f32>World transform matrix (accumulated from root)
inverse_bind_pose: Matrix4<f32>Inverse bind pose matrix (transforms from model space to bone space)
Implementations§
Source§impl Bone
impl Bone
Sourcepub fn with_position(self, position: Vector3<f32>) -> Self
pub fn with_position(self, position: Vector3<f32>) -> Self
Set the bone’s local position.
Sourcepub fn with_rotation(self, rotation: UnitQuaternion<f32>) -> Self
pub fn with_rotation(self, rotation: UnitQuaternion<f32>) -> Self
Set the bone’s local rotation.
Sourcepub fn with_scale(self, scale: Vector3<f32>) -> Self
pub fn with_scale(self, scale: Vector3<f32>) -> Self
Set the bone’s local scale.
Sourcepub fn update_local_transform(&mut self)
pub fn update_local_transform(&mut self)
Update the local transform matrix from position, rotation, and scale.
Sourcepub fn set_position(&mut self, position: Vector3<f32>)
pub fn set_position(&mut self, position: Vector3<f32>)
Set the position and update transform.
Sourcepub fn set_rotation(&mut self, rotation: UnitQuaternion<f32>)
pub fn set_rotation(&mut self, rotation: UnitQuaternion<f32>)
Set the rotation and update transform.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Bone
impl RefUnwindSafe for Bone
impl Send for Bone
impl Sync for Bone
impl Unpin for Bone
impl UnsafeUnpin for Bone
impl UnwindSafe for Bone
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Casts the value.
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Casts the value.
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Casts the value.
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Casts the value.
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.Source§impl<T> UnwrappedAs for T
impl<T> UnwrappedAs for T
Source§fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
Casts the value.
Source§impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
Source§fn unwrapped_cast_from(src: Src) -> Dst
fn unwrapped_cast_from(src: Src) -> Dst
Casts the value.
Source§impl<T> WrappingAs for T
impl<T> WrappingAs for T
Source§fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
Source§fn wrapping_cast_from(src: Src) -> Dst
fn wrapping_cast_from(src: Src) -> Dst
Casts the value.