11GX_MOTION_NAMESPACE_BEGIN()
49 virtual void reset(
void);
61 b32 loadBasepose(
void const* pBasePoseData);
63 virtual void allocateJointArray(
void);
79 virtual void updateRootPosition(
void);
84 virtual void calculateInterpolation(
void);
87 void calculateLocalData2BonesIK(u32 chainStartJointNumber);
89 void calculateMotionDataMatrices2BonesIK(u32 chainStartJointNumber);
98 void setMotionNumber(s32 motionNumber);
100 GX_FORCE_INLINE
virtual f32
getFrame(
void)
const {
return _pMotionCurvesContainer ? _pMotionCurvesContainer->getFrame() : 0.0f; }
106 GX_FORCE_INLINE
virtual f32
getMilliSeconds(f32 frameNumber)
const {
return ((frameNumber *
GxMath::MILLI_INVERSE)/(_speed * getGxRenderDevice()->getFrameRateTargetF32())) / _deltaTimeRatio; }
108 GX_FORCE_INLINE
virtual f32
getSpeed(
void)
const {
return _speed; }
110 constexpr void setSpeed(f32 speed){ _speed = speed; }
134 u16 getMotionFrameCount(u32 motionNumber)
const;
140 GX_FORCE_INLINE f32
getFrameMax(u32 motionNumber)
const {
return static_cast<f32
>(getMotionFrameCount(motionNumber) - 1.f);}
142 b32 isFinish(
void)
const;
144 b32 isFinishNextFrame(
void)
const;
146 b32 isLoopTiming(
void)
const;
150 constexpr f32
getMotionRotateY(
void)
const {
return _pMotionCurvesContainer ? _pMotionCurvesContainer->getMotionRotateY() : 0.0f; }
152 constexpr f32
getMotionTranslateY(
void)
const {
return _pMotionCurvesContainer ? _pMotionCurvesContainer->getMotionTranslateY() : 0.0f; }
161 void forceEnableLinearInterpolation(
b32 flag);
165 GX_FORCE_INLINE
virtual GxMotionNamesList
const& getMotionNamesList(
void)
const {
return _motionNamesList; }
172 u32
const* getMotionData(s32 index)
const;
210 virtual void setTranslateRotateToJointArray(
void);
216 f32
const* setTranslateRotateEulerToOneJoint(
GxMotionJointData* pJointToSet, f32
const* pMotionDataReader,
b32 isRootLocator);
224 virtual void changeTransitionSettings(f32 transitionFrameNumber,
INTERPOLATE interpolateType, f32 transitionCurvature);
226 GX_FORCE_INLINE
virtual void setInterpolateFrameNumber(f32 interpolateFrameNumber) { _interpolationSetting._frameNumber = interpolateFrameNumber;}
234 GX_FORCE_INLINE
virtual void setInterpolateCurvature(f32 interpolateCurvature) { _interpolationSetting._curvature = interpolateCurvature;}
242 GX_FORCE_INLINE f32
getInterpolationRatio(f32 frameElapsed) {
return _interpolationSetting.getRatio(frameElapsed); }
256 constexpr void getUpdateIkChain(
void* pValue, u32 index) { *
static_cast<GxIkChain**
>(pValue) = &_pIkChainArray[index]; }
258 constexpr void getPropertyIkEffecterTarget(
void* pValue, u32 index) { *
static_cast<GxVector3**
>(pValue) = &_pIkEffecterTargetArray[index]; }
260 constexpr u32 getUpdateIkChainCount(
void) {
return static_cast<u32
>(_updateIkChainCount); }
262 constexpr u32 getNoRootIkTargetCount(
void) {
return static_cast<u32
>(_ikEffecterTargetCount); }
264 GX_FORCE_INLINE
void getPropertyFrame(
void* pValue) { *
static_cast<f32*
>(pValue) = getFrame(); }
266 GX_FORCE_INLINE
void setPropertyFrame(
const void* pValue) {
setFrame(*
static_cast<f32*
>(
const_cast<void*
>(pValue))); }
268 constexpr void getPropertyMotionNumber(
void* pValue) { *
static_cast<s32*
>(pValue) = _motionNumber; }
270 void setPropertyMotionNumber(
const void* pValue);
298 u32
const* _pMotionPackageData;
300 b32 _isJointLocalDataUpToDate;
302 b32 _isPlayDifferenceMotion;
303 s32 _resourceVersion;
304 b32 _enableInterpolation;
306 GxMotionNamesList _motionNamesList;
328 b32 _isPreviousFrameUpdateLoop;
331 GxGuiPropertySlider* _pGuiFrame;
337GX_MOTION_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
void GxTypedObject
その他
Definition GxDefine.h:213
INTERPOLATE
補間タイプ
Definition GxMotionDefine.h:17
MOTION_PLAYBACK_FLAG
再生設定フラグ
Definition GxMotionDefine.h:131
オブジェクト基底クラス
Definition GxBase.h:88
IKチェイン基礎クラス
Definition GxIkChain.h:20
インナークラス(関節のローカルデータ配列クラス)
Definition GxJointData.h:81
static constexpr u32 MILLI_INVERSE
ミリの逆数
Definition GxMath.h:110
void updateJointMatricesNoIK(u32 jointStartNumber, u32 jointCount)
各関節のモーションマトリクスを更新(IK計算なし)
Definition GxModUnitMotionBase.cpp:109
GxMotionJoint * _pJointArray
関節行列
Definition GxModUnitMotionBase.h:98
s32 _jointCount
モーションデータのなかの関節数
Definition GxModUnitMotionBase.h:99
virtual const GxMotionJoint * getJointArray(void) const
間接配列を取得
Definition GxModUnitMotionBase.cpp:40
virtual s32 getJointCount(void) const
関節数を取得
Definition GxModUnitMotionBase.h:78
virtual const GxMotionJoint * getJoint(const u32 id) const
間接を取得
Definition GxModUnitMotionBase.cpp:50
モーションブレンドシステムの機能を導入するモジュール
Definition GxModUnitMotionBlend.h:18
void initialize(GxResMotionPackage *pResMotPackage) override
初期化
Definition GxModUnitMotionBlend.cpp:87
void setPlaybackFlag(MOTION_PLAYBACK_FLAG flag, b32 value)
再生フラグを設定
Definition GxModUnitMotionBlend.cpp:837
void setFrame(f32 frame)
現在のフレーム値を設定
Definition GxModUnitMotionBlend.cpp:800
b32 change(s32 motionNumber=static_cast< s32 >(MOTION_INDEX::BEGIN), f32 startFrame=0.f, f32 speedRatio=1.f, f32 transitionFrameNb=9.f, u32 playbackFlags=0)
オプションを設定して再生
Definition GxModUnitMotionBlend.cpp:555
b32 changeMotion(s32 motionNumber=static_cast< s32 >(MOTION_INDEX::BEGIN))
モーション番号だけを設定して前のオプションで再生
Definition GxModUnitMotionBlend.cpp:630
void updateJointLocalData(void)
モーションの関節のローカルデータを更新
Definition GxModUnitMotionBlend.cpp:342
void updateJointMatrices(u32 jointStartNumber, u32 jointCount)
各関節のモーションマトリクスを更新
Definition GxModUnitMotionBlend.cpp:356
void setPlaybackFlags(u32 playbackFlags)
再生フラグを設定
Definition GxModUnitMotionBlend.cpp:824
void updateFrame(void)
モーションフレームの更新
Definition GxModUnitMotionBlend.cpp:331
モーションの曲線関数を管理するクラス(インターフェイス)
Definition GxMotionCurvesContainer.h:20
モーションの曲線関数を管理するクラス(クォータニオンベース)
Definition GxMotionCurvesContainer.h:297
DECODE_TYPE
モーションデータ展開のタイプ
Definition GxMotionCurvesContainer.h:317
GxMotionJointのローカルデータだけを保存するクラス
Definition GxMotionJoint.h:22
GX_FORCE_INLINE const GxVector3 & getScale(void) const
スケールを取得
Definition GxMotionJoint.h:103
GxMotionが使う関節クラス
Definition GxMotionJoint.h:150
モーション再生クラス
Definition GxMotionPlayer.h:22
GX_FORCE_INLINE b32 isJointArrayUpToDate(void) const
関節配列が更新されたか判定
Definition GxMotionPlayer.h:219
GX_FORCE_INLINE void enableLinearInterpolation(b32 flag)
フレーム間のsrt各要素の線形補間をon offできるAPI。デフォルトはtrue, モーションの初期化(setMotionNumber)前のみ有効
Definition GxMotionPlayer.h:159
virtual GX_FORCE_INLINE b32 isPlaybackFlag(MOTION_PLAYBACK_FLAG flag) const
再生フラグの判定
Definition GxMotionPlayer.h:114
constexpr f32 getMotionRotateY(void) const
rot_y関節の回転値を取得
Definition GxMotionPlayer.h:150
GX_FORCE_INLINE void getUpdateJoint(void *pValue, u32 index)
関節配列を取得
Definition GxMotionPlayer.h:203
s32 _ikChainCount
モーションデータのなかのIKチェーン数
Definition GxMotionPlayer.h:310
virtual GX_FORCE_INLINE f32 getFrameNumber(f32 milliSeconds) const
ミリ秒からフレーム数を取得
Definition GxMotionPlayer.h:104
GX_FORCE_INLINE u16 getMotionFrameCount(void) const
設定中モーションのフレーム数を取得
Definition GxMotionPlayer.h:136
constexpr void setDecodeType(GxMotionCurvesContainerQuaternion::DECODE_TYPE type)
データの展開タイプを設定(GxMotionCurvesContainerQuaternionのときのみ有効)
Definition GxMotionPlayer.h:157
constexpr f32 getMotionTranslateY(void) const
rot_y関節の移動値を取得
Definition GxMotionPlayer.h:152
constexpr GxResMotionInterpolationSettings const * getInterpolationSettings(void) const
モーション補間設定リソースを取得
Definition GxMotionPlayer.h:238
constexpr void setDeltaTimeRatio(f32 deltaTimeRatio)
デルタタイム比率を設定
Definition GxMotionPlayer.h:126
constexpr void setDeltaTime(f32 deltaTime)
デルタタイムを設定
Definition GxMotionPlayer.h:124
virtual GX_FORCE_INLINE void setInterpolateType(INTERPOLATE interpolateType)
補間のタイプを設定
Definition GxMotionPlayer.h:230
GX_FORCE_INLINE void setPlayDifferenceMotion(b32 isPlayDifferenceMotion)
差分モーションを再生中かどうかを設定
Definition GxMotionPlayer.h:176
GxVector3 * _pIkEffecterTargetArray
IKエフェクタのターゲット配列
Definition GxMotionPlayer.h:313
constexpr f32 getDeltaTime(void) const
デルタタイムを取得
Definition GxMotionPlayer.h:120
GX_FORCE_INLINE GxMotionJoint & getJointRaw(const u32 id) const
間接を取得(更新チェックなしの生アクセス用)
Definition GxMotionPlayer.h:193
constexpr void setDummyValueIndex(const void *, u32)
ダミー値インデックスを設定
Definition GxMotionPlayer.h:280
constexpr void setSpeed(f32 speed)
スピードを設定
Definition GxMotionPlayer.h:110
constexpr void setInterpolationSettings(GxResMotionInterpolationSettings const *pResInterpolateSettings)
モーション補間設定リソースを設定
Definition GxMotionPlayer.h:240
u32 _ikEffecterTargetCount
IKエフェクタのターゲット数
Definition GxMotionPlayer.h:312
virtual GX_FORCE_INLINE f32 getFrame(void) const
現在のフレーム数を取得
Definition GxMotionPlayer.h:100
GxJointDataArray _interpolateDataArray
補間された関節データを保存する行列
Definition GxMotionPlayer.h:321
constexpr u32 getMotionNumberMax(void) const
最大番号を取得
Definition GxMotionPlayer.h:132
virtual GX_FORCE_INLINE b32 isExistScale(const GxMotionJointData *pJoint) const
関節にスケールがあるか無いかの判定
Definition GxMotionPlayer.h:58
virtual GX_FORCE_INLINE f32 getSpeed(void) const
スピードを取得
Definition GxMotionPlayer.h:108
constexpr void setInterpolateFrameElapsed(f32 value)
補間フレーム数の設定
Definition GxMotionPlayer.h:276
u32 _updateIkChainCount
取得したい関節のIKチェーンだけの数
Definition GxMotionPlayer.h:311
constexpr u32 const * getMotionPackageData(void) const
モーションアドレスを取得
Definition GxMotionPlayer.h:170
GX_FORCE_INLINE GxIkChain const * getIkChain(u32 index) const
IKチェーンの取得(const あり)
Definition GxMotionPlayer.h:248
virtual GX_FORCE_INLINE u32 getPlaybackFlags(void) const
再生フラグを取得
Definition GxMotionPlayer.h:112
virtual GX_FORCE_INLINE void setInterpolateCurvature(f32 interpolateCurvature)
補間の曲率を設定
Definition GxMotionPlayer.h:234
virtual GX_FORCE_INLINE INTERPOLATE getInterpolateType(void)
補間のタイプを取得
Definition GxMotionPlayer.h:232
virtual GX_FORCE_INLINE void setInterpolateFrameNumber(f32 interpolateFrameNumber)
補間フレーム数を設定
Definition GxMotionPlayer.h:226
b32 _interpolatingMotion
モーション補間中かどうか
Definition GxMotionPlayer.h:322
GxJointDataArray _originDataArray
補間の前の関節データを保存する行列
Definition GxMotionPlayer.h:320
constexpr void setDummySize(u32)
ダミーサイズを設定
Definition GxMotionPlayer.h:282
GX_FORCE_INLINE GxJointDataArray * getInterpolationOriginArray(void)
補間前行列の取得
Definition GxMotionPlayer.h:274
GX_FORCE_INLINE f32 getInterpolationRatio(f32 frameElapsed)
比率を計算
Definition GxMotionPlayer.h:242
GxVector3 _rootPosition
ユーザーが欲しいルート座標
Definition GxMotionPlayer.h:326
constexpr f32 getDeltaTimeRatio(void) const
デルタタイム比率を取得
Definition GxMotionPlayer.h:122
GX_FORCE_INLINE f32 getFrameMax(u32 motionNumber) const
指定モーションの最大フレーム数を取得
Definition GxMotionPlayer.h:140
constexpr GxResMotionPackage * getResMotionPackage(void)
モーションアドレスを取得
Definition GxMotionPlayer.h:179
f32 _interpolateFrameElapsed
補間のフレームカウント
Definition GxMotionPlayer.h:323
GX_FORCE_INLINE GxIkChain * getIkChain(u32 index)
IKチェーンの取得(const なし)
Definition GxMotionPlayer.h:250
constexpr u32 getIkChainCount(void) const
IKチェーンの数を取得
Definition GxMotionPlayer.h:252
GxIkChain * _pIkChainArray
IKチェーン配列
Definition GxMotionPlayer.h:314
b32 _isEnableInterpolateDataArray
_interpolateDataArray配列に入っている値が有効かどうか
Definition GxMotionPlayer.h:324
GX_FORCE_INLINE b32 isPlayDifferenceMotion(void)
差分モーションを再生中かどうかを取得
Definition GxMotionPlayer.h:174
virtual GX_FORCE_INLINE f32 getMilliSeconds(f32 frameNumber) const
フレーム数からミリ秒を取得
Definition GxMotionPlayer.h:106
constexpr s32 getMotionNumber(void) const
現在のモーション番号を取得
Definition GxMotionPlayer.h:128
virtual GX_FORCE_INLINE f32 getInterpolateCurvature(void) const
補間の曲率を取得
Definition GxMotionPlayer.h:236
constexpr GxIkChain * getIkChainArray(void)
関節ポインタの取得
Definition GxMotionPlayer.h:208
constexpr f32 getStartFrame(void) const
モーション再生を開始したフレームを取得
Definition GxMotionPlayer.h:154
constexpr u32 getMotionNumberMin(void) const
最小番号を取得
Definition GxMotionPlayer.h:130
virtual GX_FORCE_INLINE f32 getInterpolateFrameNumber(void) const
補間フレーム数を取得
Definition GxMotionPlayer.h:228
GX_FORCE_INLINE void checkJointsLocalData(void)
テストをして関節配列を更新
Definition GxMotionPlayer.h:221
constexpr GxIkChain const * getIkChainArray(void) const
IKチェーン配列の取得
Definition GxMotionPlayer.h:246
constexpr s32 getJointCount(void) const
関節数を取得
Definition GxMotionPlayer.h:201
constexpr u32 getMotionCount(void) const
モーション数を取得
Definition GxMotionPlayer.h:148
GX_FORCE_INLINE f32 getFrameMax(void) const
設定中モーションの最大フレーム数を取得
Definition GxMotionPlayer.h:138
GX_FORCE_INLINE void updateJoints(void)
各関節を更新
Definition GxMotionPlayer.h:76
プロパティクラス
Definition GxProperty.h:48
f32 getFrameRateTargetF32(void)
目標フレームレートの取得(f32)
Definition GxRenderDevice.cpp:3100
モーション補間設定リソースクラス
Definition GxResMotionInterpolationSettings.h:19
モーションパッケージリソース
Definition GxResMotionPackage.h:20
実行時型情報クラス
Definition GxRtti.h:154
補間の設定を保持するクラス
Definition GxInterpolationSetting.h:19
アフィン変換行列(行優先)
Definition GxMatrix.h:330
3次元ベクトル
Definition GxVector.h:245
static const GxVector3 ONE
(1, 1, 1)
Definition GxVector.h:258
32bitブーリアン
Definition GxDefine.h:173