OROCHI
 
Loading...
Searching...
No Matches
GxMotionDefine.h
Go to the documentation of this file.
1//===========================================================================
10//===========================================================================
11#pragma once
12
13GX_MOTION_NAMESPACE_BEGIN()
14
15
16enum class INTERPOLATE
17{
18 LINEAR,
19 SINE,
20 INVERSE,
21// ATAN, //!< 逆正接補間
22 ROOT,
23};
24#if GX_DEVELOP
25GX_ENUM_BEGIN(INTERPOLATE)
26 GX_ENUM_VALUE("線形補間", INTERPOLATE::LINEAR),
27 GX_ENUM_VALUE("正弦波補間", INTERPOLATE::SINE),
28 GX_ENUM_VALUE("反比例補間", INTERPOLATE::INVERSE),
29 //GX_ENUM_VALUE("逆正接補間", INTERPOLATE::ATAN),
30 GX_ENUM_VALUE("累乗根補間", INTERPOLATE::ROOT),
31GX_ENUM_END()
32#endif //GX_DEVELOP
33
35enum class IK_BLEND
36{
39};
40
41#if GX_DEVELOP
42const GX_ENUM IK_BLEND_ENUM_NAMES[] =
43{
44 {"IK間接のローカル回転をブレンド", static_cast<s32>(IK_BLEND::LOCAL_ROTATE)},
45 {"IK間接のIKエフェクタをブレンド", static_cast<s32>(IK_BLEND::EFFECTOR_POSITION)},
46};
47#endif //GX_DEVELOP
48
49#define GX_ROTBLEND_SPLINESLERP_IMPLEMENTED 0 // 「スプラインでクオターニオンを補間する」ことが実装されたら、このフラグを1にします
50// →cf. "3D Game Engine Design", David Eberly, chapt.9.1.4, also http://embots.dfki.de/doc/seminar_ca/Kremer_Quaternions.pdf http://www.math.utah.edu/~alfeld/papers.html
51
53enum class ROTATE_BLEND
54{
58#if GX_ROTBLEND_SPLINESLERP_IMPLEMENTED
59 LOG_LERP,
60 SPLINE_SLERP,
61#endif //GX_ROTBLEND_SPLINESLERP_IMPLEMENTED
62};
63
64#if GX_DEVELOP
65const GX_ENUM ROT_BLEND_ENUM_NAMES[] =
66{
67 {"オイラー角度の補間" , static_cast<s32>(ROTATE_BLEND::EULER_ANGLES_LERP) },
68 {"クォータ二オンの球形補間" , static_cast<s32>(ROTATE_BLEND::SPHERICAL_LERP) },
69 {"クォータ二オンの線形補間" , static_cast<s32>(ROTATE_BLEND::NORMAL_LERP) },
70#if GX_ROTBLEND_SPLINESLERP_IMPLEMENTED
71 {"クォータ二オンの対数補間" , ROTATE_BLEND::LOG_LERP },
72 {"クォータ二オンのSPLINE補間" , ROTATE_BLEND::SPLINE_SLERP },
73#endif //GX_ROTBLEND_SPLINESLERP_IMPLEMENTED
74};
75#endif //GX_DEVELOP
76
85
86#if GX_DEVELOP
88const GX_ENUM PARTIAL_BLEND_CONTRIB_ENUM_NAMES[] =
89{
90 {"全関節を提供" , static_cast<s32>(PARTIAL_BLEND::ALL_JOINTS) },
91 {"開始関節の下の関節だけ提供" , static_cast<s32>(PARTIAL_BLEND::JOINTS_UNDER_START) },
92 {"開始関節の下以外の関節を提供" , static_cast<s32>(PARTIAL_BLEND::ALL_JOINTS_EXCEPT_UNDER_START)},
93 {"開始と終了の中の関節だけ提供" , static_cast<s32>(PARTIAL_BLEND::JOINTS_BETWEEN_START_END) },
94};
95#endif //GX_DEVELOP
96
99{
104// BLEND_FLAG_BLEND_ALL_JOINT_VALUES = BLEND_FLAG_BLEND_ROTATIONS | MOTION_PLAYBACK_FLAG_INTERPOLATE_POSITIONS | MOTION_PLAYBACK_FLAG_INTERPOLATE_SCALES
105};
106
107#if GX_DEVELOP
109const GX_FLAG BLEND_FLAG_ENUM_NAMES[]=
110{
111 { "回転をブレンド", BLEND_FLAG_BLEND_ROTATIONS },
112 { "位置をブレンド", BLEND_FLAG_BLEND_POSITIONS },
113 { "スケールをブレンド", BLEND_FLAG_BLEND_SCALES },
114 { "ルートロケータもブレンド", BLEND_FLAG_BLEND_ROOT_LOCATOR },
115};
116#endif //GX_DEVELOP
117
118#if GX_DEVELOP
120const GX_FLAG INTERPOLATION_FLAG_ENUM_NAMES[]=
121{
122 { "回転を補間", BLEND_FLAG_BLEND_ROTATIONS },
123 { "位置を補間", BLEND_FLAG_BLEND_POSITIONS },
124 { "スケールを補間", BLEND_FLAG_BLEND_SCALES },
125 { "ルートロケータも補間", BLEND_FLAG_BLEND_ROOT_LOCATOR },
126};
127#endif //GX_DEVELOP
128
150
151#if GX_DEVELOP
153const GX_FLAG MOTION_PLAYBACK_FLAG_ENUM_NAMES[] =
154{
155 { "移動値Xを使う", MOTION_PLAYBACK_FLAG_USE_ROOT_X_TRANSLATE },
156 { "移動値Yを使う", MOTION_PLAYBACK_FLAG_USE_ROOT_Y_TRANSLATE },
157 { "移動値Zを使う", MOTION_PLAYBACK_FLAG_USE_ROOT_Z_TRANSLATE },
158 { "ループする", MOTION_PLAYBACK_FLAG_LOOP },
159// GxModMotionBlendWrapperを使う時、この3つのフラグは効果ありません(GxMotionNodeInterolation,またはGxMotionNodeBlendの_blendFlagsを使います)
160// { "回転を補間", MOTION_PLAYBACK_FLAG_INTERPOLATE_ROTATIONS },
161// { "位置を補間", MOTION_PLAYBACK_FLAG_INTERPOLATE_POSITIONS },
162// { "スケールを補間", MOTION_PLAYBACK_FLAG_INTERPOLATE_SCALES },
163 { "ROT_Yのデータを使う", MOTION_PLAYBACK_FLAG_USE_ROT_Y_DATA },
164 { "補間曲線を全てSTEPとして扱う", MOTION_PLAYBACK_FLAG_FORCE_SLOPE_STEP },
165};
167const GX_FLAG MOTION_PLAYBACK_FLAG_ENUM_NAMES_OLD[] =
168{
169 { "移動値Xを使う", MOTION_PLAYBACK_FLAG_USE_ROOT_X_TRANSLATE },
170 { "移動値Yを使う", MOTION_PLAYBACK_FLAG_USE_ROOT_Y_TRANSLATE },
171 { "移動値Zを使う", MOTION_PLAYBACK_FLAG_USE_ROOT_Z_TRANSLATE },
172 { "ループする", MOTION_PLAYBACK_FLAG_LOOP },
173// GxModMotionBlendWrapperを使う場合はこの3つのフラグは効果がありません(GxMotionNodeInterolation,またはGxMotionNodeBlendの_blendFlagsを使います)
174 { "回転を補間", MOTION_PLAYBACK_FLAG_INTERPOLATE_ROTATIONS },
175 { "位置を補間", MOTION_PLAYBACK_FLAG_INTERPOLATE_POSITIONS },
176 { "スケールを補間", MOTION_PLAYBACK_FLAG_INTERPOLATE_SCALES },
177 { "ROT_Yのデータを使う", MOTION_PLAYBACK_FLAG_USE_ROT_Y_DATA },
178 { "補間曲線を全てSTEPとして扱う", MOTION_PLAYBACK_FLAG_FORCE_SLOPE_STEP },
179};
180#endif //GX_DEVELOP
181
182#define GX_MOTION_MONITOR_CPU 0 // CPU使用率をモニターするフラグ (オーバーヘッドなさそうなので、削除検討)
183
184GX_MOTION_NAMESPACE_END()
PARTIAL_BLEND
パーシャルブレンドのタイプ(関節の「提供」- joint "contribution")
Definition GxMotionDefine.h:79
@ JOINTS_BETWEEN_START_END
開始関節の下以外の関節を提供する
@ JOINTS_UNDER_START
全関節を提供する
@ ALL_JOINTS_EXCEPT_UNDER_START
開始関節の下の関節だけを提供する
BLEND_FLAG
ブレンド関数の設定フラグ
Definition GxMotionDefine.h:99
@ BLEND_FLAG_BLEND_SCALES
拡縮
Definition GxMotionDefine.h:102
@ BLEND_FLAG_BLEND_ROOT_LOCATOR
ルートロケータ
Definition GxMotionDefine.h:103
@ BLEND_FLAG_BLEND_POSITIONS
座標
Definition GxMotionDefine.h:101
@ BLEND_FLAG_BLEND_ROTATIONS
回転
Definition GxMotionDefine.h:100
INTERPOLATE
補間タイプ
Definition GxMotionDefine.h:17
@ INVERSE
反比例補間
@ LINEAR
線形補間
@ ROOT
累乗根補間
@ SINE
正弦波補間
IK_BLEND
IKブレンドのタイプ
Definition GxMotionDefine.h:36
@ EFFECTOR_POSITION
IKデータがある間接のIKエフェクタをブレンドする
@ LOCAL_ROTATE
IKデータがある間接のローカル回転をブレンドする
MOTION_PLAYBACK_FLAG
再生設定フラグ
Definition GxMotionDefine.h:131
@ MOTION_PLAYBACK_FLAG_FORCE_SLOPE_STEP
補間曲線を全てSTEPとして扱う
Definition GxMotionDefine.h:148
@ MOTION_PLAYBACK_FLAG_USE_ROOT_XZ_TRANSLATE
移動値XZを使うか
Definition GxMotionDefine.h:135
@ MOTION_PLAYBACK_FLAG_USE_ROOT_X_TRANSLATE
移動値Xを使うか
Definition GxMotionDefine.h:132
@ MOTION_PLAYBACK_FLAG_USE_ROT_Y_DATA
rot_yのデータを使うか
Definition GxMotionDefine.h:146
@ MOTION_PLAYBACK_FLAG_USE_ROOT_Y_TRANSLATE
移動値Yを使うか
Definition GxMotionDefine.h:133
@ MOTION_PLAYBACK_FLAG_USE_ROOT_Z_TRANSLATE
移動値Zを使うか
Definition GxMotionDefine.h:134
@ MOTION_PLAYBACK_FLAG_INTERPOLATE_ROTATIONS
関節の回転を補間するか
Definition GxMotionDefine.h:141
@ MOTION_PLAYBACK_FLAG_LOOP
ループするか
Definition GxMotionDefine.h:138
@ MOTION_PLAYBACK_FLAG_INTERPOLATE_POSITIONS
関節の位置を補間するか
Definition GxMotionDefine.h:142
@ MOTION_PLAYBACK_FLAG_INTERPOLATE_SCALES
関節の拡縮を補間するか
Definition GxMotionDefine.h:143
@ MOTION_PLAYBACK_FLAG_USE_ROOT_XYZ_TRANSLATE
移動値XYZを使うか
Definition GxMotionDefine.h:136
@ MOTION_PLAYBACK_FLAG_INTERPOLATE_ALL_VALUES
関節の回転、位置、拡縮を補間するか
Definition GxMotionDefine.h:144
ROTATE_BLEND
回転ブレンドのタイプ
Definition GxMotionDefine.h:54
@ SPHERICAL_LERP
クォータ二オン球形補間
@ NORMAL_LERP
クォータ二オン線形補間
@ EULER_ANGLES_LERP
オイラー角度補間
GUI用
Definition GxDefine.h:194
GUI用フラグ型
Definition GxDefine.h:203