OROCHI
 
Loading...
Searching...
No Matches
GxModUnitIK Class Reference

IKモジュール More...

#include <GxModUnitIK.h>

Inheritance diagram for GxModUnitIK:
Collaboration diagram for GxModUnitIK:

Classes

class  IKData
 IK用データ More...
 

Public Member Functions

初期化
 GxModUnitIK (void)
 デフォルトコンストラクタ
 
 ~GxModUnitIK (void) override
 デストラクタ
 
virtual void initialize (GxModUnitMotionBlend *pMotion, GxResMotionIK *pResIK)
 初期化
 
- Public Member Functions inherited from GxModUnitBase
 GxModUnitBase (void)
 デフォルトコンストラクタ
 
 ~GxModUnitBase (void) override
 デストラクタ
 
- Public Member Functions inherited from GxModBase
 GxModBase (void)
 デフォルトコンストラクタ
 
virtual ~GxModBase (void)
 デストラクタ
 
- Public Member Functions inherited from GxClassBase
constexpr GxClassBase (void)
 コンストラクタ
 
constexpr GxClassBase (const GxClassBase &base)
 コピーコンストラクタ
 
 ~GxClassBase (void) override
 デストラクタ
 
- Public Member Functions inherited from GxClassBaseRoot
constexpr GxClassBaseRoot (void)
 コンストラクタ
 
constexpr GxClassBaseRoot (const GxClassBaseRoot &)
 コピーコンストラクタ
 
virtual ~GxClassBaseRoot (void)
 デストラクタ
 
constexpr GxClassBaseRootoperator= (const GxClassBaseRoot &)
 代入演算子
 
virtual GxRttigetRtti (void) const =0
 Rttiの取得
 
virtual GX_FORCE_INLINE const GxTypedObjectgetDefaultObject (void)
 デフォルトオブジェクトを取得
 
GX_FORCE_INLINE b32 isDefaultObject (void)
 デフォルトオブジェクト判定
 

Protected Attributes

メンバ変数
GxModUnitMotionBlend_pMotion
 モーションモジュール

 
GxResMotionIK_pResIK
 IKリソース
 
b32 _isEnableMotion
 現在再生されているモーションに対しIKが有効かどうか
 
f32 _waistJointMaxDrop
 今の姿勢での最大の腰下げ量
 
IKData ** _ppIKObjectData
 IK終端関節用データ
 
s32 _hipJointId
 腰関節Id
 
IKData_pWaistObjectData
 腰関節用IKデータ
 

操作

void preAsyncUpdate (void) override
 並列更新(asyncUpdateの前に実行される)
 
void computeNewMatrices (GxMotionJoint &joint, GxArray &jointsUpToDate)
 指定された関節マトリクスと子関節マトリクスを更新
 
virtual void updateTarget (void)
 目標座標を更新
 
void calcMotionDataMatrices2BonesIK (const u32 chainEndJointNumber, GxVector3 const &ikTargetPosition)
 指定された座標に向けIK開始・中間・終端関節マトリクスとその子関節マトリクスを更新
 
void updateJointMatrices (GxMotionJoint *pJoint)
 指定された関節とその子関節を更新
 

アクセサ

constexpr GxModUnitMotionBlendgetModMotion (void) const
 モーションモジュールを取得
 
constexpr GxResMotionIKgetResMotionIK (void) const
 IKリソースを取得
 
constexpr IKDatagetIKData (u32 index) const
 IK用データを取得
 
GX_FORCE_INLINE b32 isEnableMotion (void) const
 現在再生されているモーションに対しIKが有効か判定
 
void setTarget (IKData *pIKData, f32 const target)
 IK関節目標座標を設定
 
b32 hasFloor (const GxVector3 &position, GxVector3 &collision, GxVector3 &collisionNormal)
 positionの真下に地面があるか判定 地面は5メートル以上遠い場合、ないとみなす
 
f32 getRate (f32 frameElapsed, INTERPOLATE curveType, f32 curveTargetFrameCount, f32 curvature)
 補間比率を取得
 
virtual GxUnitModelBase::GxJointgetModelJoint (GxMotionJoint *pMotionJoint, s32 *pOutMotionJointIndex=nullptr)
 モーション関節から対応するモデル関節を取得(outMotionJointIndex:モーション関節indexが必要な場合は指定する)
 
u32 getModelJointChildrenCount (GxUnitModelBase::GxJoint *pJoint, b32 enumTopBrotherJoint=false)
 特定のGxJoint以下の子関節総数を取得(enumTopBrotherJoint:調べたい関節と同階層の関節も一緒にカウントする場合はtrue)
 
static GX_FORCE_INLINE const GxRttigetOwnerDerivedRtti (void)
 所持者に必要な継承RTTIを取得
 

Additional Inherited Members

- Static Public Member Functions inherited from GxClassBaseRoot
static GX_FORCE_INLINE GxRtti__getStaticRtti (void)
 Rttiの取得
 
- Protected Member Functions inherited from GxModUnitBase
virtual GX_FORCE_INLINE b32 setup (void)
 セットアップ(preAsyncUpdate前に初回のみ実行される)
 
virtual GX_FORCE_INLINE void asyncUpdate (void)
 並列更新
 
virtual GX_FORCE_INLINE void postAsyncUpdate (void)
 並列更新(asyncUpdateの後に実行される)
 
virtual GX_FORCE_INLINE void sequentialUpdate (void)
 逐次更新
 
virtual GX_FORCE_INLINE void forceAsyncUpdate (void)
 強制並列更新(pause中も実行)
 
virtual GX_FORCE_INLINE void render (void)
 描画
 
virtual GX_FORCE_INLINE b32 setRenderMaterial (GxRenderMaterial *)
 マテリアルの描画設定
 
GX_FORCE_INLINE GxUnitBasegetOwner (void) const
 所持者を取得
 
GX_FORCE_INLINE GxFlag32Index< UPDATE_TYPEgetUpdateEnable (void) const
 更新を呼ぶかを取得
 
GX_FORCE_INLINE void setUpdateEnable (UPDATE_TYPE updateType, b32 enable)
 更新を呼ぶかを設定
 
- Protected Member Functions inherited from GxModBase
constexpr GxClassBaseRootgetOwner (void) const
 所持者を取得
 
virtual GX_FORCE_INLINE void setOwner (GxClassBaseRoot *pOwner)
 所持者を設定
 
- Static Protected Member Functions inherited from GxModUnitBase
static const GxRttigetOwnerDerivedRtti (void)
 所持者に必要な継承RTTIを取得
 

Detailed Description

IKモジュール

Member Function Documentation

◆ calcMotionDataMatrices2BonesIK()

void GxModUnitIK::calcMotionDataMatrices2BonesIK ( const u32 chainEndJointNumber,
GxVector3 const & ikTargetPosition )
protected

指定された座標に向けIK開始・中間・終端関節マトリクスとその子関節マトリクスを更新

Parameters
chainEndJointNumber[in] IKチェーンの終了関節番号
ikTargetPosition[in] IKのターゲット座標
Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeNewMatrices()

void GxModUnitIK::computeNewMatrices ( GxMotionJoint & joint,
GxArray & jointsUpToDate )
protected

指定された関節マトリクスと子関節マトリクスを更新

Parameters
joint[in] 下のヒエラルキを更新したい関節
jointsUpToDate[in] 下のヒエラルキのすでに更新された関節の配列
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getModelJoint()

GxUnitModelBase::GxJoint * GxModUnitIK::getModelJoint ( GxMotionJoint * pMotionJoint,
s32 * pOutMotionJointIndex = nullptr )
protectedvirtual

モーション関節から対応するモデル関節を取得(outMotionJointIndex:モーション関節indexが必要な場合は指定する)

Parameters
pMotionJoint[in] モーション関節
pOutMotionJointIndex[out] モデル関節インデックス
Returns
モデル関節
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getModelJointChildrenCount()

u32 GxModUnitIK::getModelJointChildrenCount ( GxUnitModelBase::GxJoint * pJoint,
b32 enumTopBrotherJoint = false )
protected

特定のGxJoint以下の子関節総数を取得(enumTopBrotherJoint:調べたい関節と同階層の関節も一緒にカウントする場合はtrue)

Parameters
pJoint[in] 関節
enumTopBrotherJoint[out] 兄弟関節を含めるならtrue
Returns
子関節の数
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getRate()

f32 GxModUnitIK::getRate ( f32 frameElapsed,
INTERPOLATE curveType,
f32 curveTargetFrameCount,
f32 curvature )
protected

補間比率を取得

Parameters
frameElapsed[in] 経過フレーム
curveType[in] カーブタイプ
curveTargetFrameCount[in] カーブ目標フレーム
curvature[in] 曲率
Returns
比率
Here is the call graph for this function:
Here is the caller graph for this function:

◆ hasFloor()

b32 GxModUnitIK::hasFloor ( const GxVector3 & position,
GxVector3 & collision,
GxVector3 & collisionNormal )
protected

positionの真下に地面があるか判定 地面は5メートル以上遠い場合、ないとみなす

Parameters
position[in] 座標
collision[out] 地面がある場合のみ:地面に当たる所の座標
collisionNormal[out] 地面がある場合のみ:地面に当たる所の法線 -------> 現在無効!!!
Returns
負:地面がない 正:地面がある
Here is the call graph for this function:
Here is the caller graph for this function:

◆ initialize()

void GxModUnitIK::initialize ( GxModUnitMotionBlend * pMotion,
GxResMotionIK * pResIK )
virtual

初期化

Parameters
pMotion[in] モーションモジュール
pResIK[in] リソース
Here is the call graph for this function:

◆ preAsyncUpdate()

void GxModUnitIK::preAsyncUpdate ( void )
overridevirtual

並列更新(asyncUpdateの前に実行される)

Reimplemented from GxModUnitBase.

Here is the call graph for this function:

◆ setTarget()

void GxModUnitIK::setTarget ( IKData * pIKData,
f32 const target )
protected

IK関節目標座標を設定

Parameters
pIKData[in] IKデータ
target[in] ターゲット値
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateJointMatrices()

void GxModUnitIK::updateJointMatrices ( GxMotionJoint * pJoint)
protected

指定された関節とその子関節を更新

Parameters
pJoint[in] 更新元の関節(この関節以下の全関節を更新します)
Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following files: