Diligent Engine
Loading...
Searching...
No Matches
Diligent::IRadientSkeletonPose Struct Referenceabstract

#include <RadientSkinning.h>

Inheritance diagram for Diligent::IRadientSkeletonPose:
Diligent.IObject

Public Member Functions

virtual IRadientSkeletonAsset *DILIGENT_CALL_TYPE GetSkeleton () const =0
 Returns a borrowed pointer to the skeleton retained by the pose.
virtual Uint64 DILIGENT_CALL_TYPE GetVersion () const =0
virtual RADIENT_STATUS DILIGENT_CALL_TYPE GetJointLocalTransforms (Uint32 FirstJoint, Uint32 JointCount, RadientTransform *pTransforms) const =0
 Copies JointCount local transforms beginning at FirstJoint.
virtual RADIENT_STATUS DILIGENT_CALL_TYPE GetJointGlobalMatrices (Uint32 FirstJoint, Uint32 JointCount, RadientMatrix4x4 *pMatrices) const =0
virtual RADIENT_STATUS DILIGENT_CALL_TYPE ComputeSkinningMatrices (IRadientSkinAsset *pSkin, RadientMatrix4x4 *pMatrices, Bool TransposeMatrices=False, Bool UpdateGlobalMatrices=True)=0
virtual RADIENT_STATUS DILIGENT_CALL_TYPE UpdateGlobalTransforms ()=0
virtual RADIENT_STATUS DILIGENT_CALL_TYPE CreateWriter (IRadientSkeletonPoseWriter **ppWriter)=0
Public Member Functions inherited from Diligent.IObject
virtual void DILIGENT_CALL_TYPE QueryInterface (const INTERFACE_ID &IID, IObject **ppInterface)=0
 Queries the specific interface.
template<typename DerivedType, typename = typename std::enable_if<std::is_base_of<IObject, DerivedType>::value>::type>
void QueryInterface (const INTERFACE_ID &IID, DerivedType **ppInterface)
virtual ReferenceCounterValueType DILIGENT_CALL_TYPE AddRef ()=0
 Increments the number of strong references by 1.
virtual ReferenceCounterValueType DILIGENT_CALL_TYPE Release ()=0
virtual IReferenceCounters *DILIGENT_CALL_TYPE GetReferenceCounters () const =0

Detailed Description

Mutable local and global transforms for one skeleton.

The pose retains its skeleton. A pose and all writers created from it are not thread-safe and must not be accessed concurrently.

Radient-created poses expose the generic animation destination interface described by RadientAnimation.h. Applying an animation binding sparsely preserves all unmentioned joints and transform components. Direct animation property updates are copied without value validation or normalization; the caller is responsible for finite translations and scales and normalized rotations.

Member Function Documentation

◆ ComputeSkinningMatrices()

virtual RADIENT_STATUS DILIGENT_CALL_TYPE Diligent::IRadientSkeletonPose::ComputeSkinningMatrices ( IRadientSkinAsset * pSkin,
RadientMatrix4x4 * pMatrices,
Bool TransposeMatrices = False,
Bool UpdateGlobalMatrices = True )
pure virtual

Computes the skinning matrices for pSkin and writes pSkin->GetDesc().JointCount elements to pMatrices. Each output matrix combines the skin joint's inverse-bind matrix with the corresponding skeleton-space pose matrix and therefore transforms mesh bind-space vertices into skeleton space. pSkin must reference this pose's skeleton.

If TransposeMatrices is true, every matrix is transposed before it is written to pMatrices.

If UpdateGlobalMatrices is true, dirty global matrices are updated before computing the result. Otherwise, the method returns RADIENT_STATUS_PENDING while global matrices are dirty. The output is not modified unless the method returns RADIENT_STATUS_OK.

◆ CreateWriter()

virtual RADIENT_STATUS DILIGENT_CALL_TYPE Diligent::IRadientSkeletonPose::CreateWriter ( IRadientSkeletonPoseWriter ** ppWriter)
pure virtual

Creates a reusable writer initialized from the current pose. On success, ppWriter receives a strong reference.

◆ GetJointGlobalMatrices()

virtual RADIENT_STATUS DILIGENT_CALL_TYPE Diligent::IRadientSkeletonPose::GetJointGlobalMatrices ( Uint32 FirstJoint,
Uint32 JointCount,
RadientMatrix4x4 * pMatrices ) const
pure virtual

Copies JointCount skeleton-space matrices beginning at FirstJoint. Returns RADIENT_STATUS_PENDING when committed local transforms have not yet been propagated through the skeleton hierarchy.

◆ GetVersion()

virtual Uint64 DILIGENT_CALL_TYPE Diligent::IRadientSkeletonPose::GetVersion ( ) const
pure virtual

Returns the monotonically increasing version of the global transforms. Deferred local-transform commits do not advance the version until UpdateGlobalTransforms() is called.

◆ UpdateGlobalTransforms()

virtual RADIENT_STATUS DILIGENT_CALL_TYPE Diligent::IRadientSkeletonPose::UpdateGlobalTransforms ( )
pure virtual

Propagates committed local transforms through the skeleton hierarchy and advances the pose version. Returns RADIENT_STATUS_NO_CHANGE when the global transforms are already current.