モデル対応シミュレーション、コリジョン統合モジュールクラス More...
#include <GxModUnitSoftbody.h>


Public Member Functions | |
初期化 | |
| GxModUnitSoftbody (void) | |
| デフォルトコンストラクタ | |
| ~GxModUnitSoftbody (void) override | |
| デストラクタ | |
操作 | |
| virtual u32 | initialize (GxUnitModelBase *pModelSimulation, GxResSoftbodySimulation *pResourceSimulation, u32 unitProcessNumberSimulation=USBS_DEFAULT_UNIT_PROCESS_NUMBER_SIMULATION, u32 unitListNumberSimulation=USBS_DEFAULT_UNIT_LIST_NUMBER_SIMULATION, GxUnitModelBase *pModelCollision=nullptr, GxResSoftbodyCollision *pResourceCollision=nullptr, u32 unitProcessNumberCollision=USBS_DEFAULT_UNIT_PROCESS_NUMBER_SIMULATION-1, u32 unitListNumberCollision=USBS_DEFAULT_UNIT_LIST_NUMBER_SIMULATION-1, GxRtti &chainUnitRtti=GxUnitChainModel::GX_RTTI, GxRtti &clothUnitRtti=GxUnitClothModel::GX_RTTI) |
| セットアップ | |
| b32 | setupCollision (GxUnitModelBase *pModelCollision, GxResSoftbodyCollision *pResourceCollision, u32 unitProcessNumberCollision=USBS_DEFAULT_UNIT_PROCESS_NUMBER_SIMULATION - 1, u32 unitListNumberCollision=USBS_DEFAULT_UNIT_LIST_NUMBER_SIMULATION - 1) |
| コリジョンの設定(リソースから) | |
| virtual void | cleanup (void) |
| ユニットの破棄 | |
| void | updateLocalMatrixFromWorldMatrix (void) |
| モーション(世界行列)情報をモデル情報にフィードバック | |
アクセサ | |
| GX_FORCE_INLINE b32 | isSetup (void) const |
| セットアップ済みか | |
| constexpr u32 | getChainCount (void) const |
| 鎖ユニットの個数取得 | |
| constexpr GxUnitChainModel * | getChainUnit (u32 index) const |
| 指定番号の鎖ユニット取得 | |
| constexpr GxUnitChainModel * | getChainUnitFromID (u32 id) const |
| 指定番号の鎖ユニット取得 | |
| constexpr u32 | getClothCount (void) const |
| 布ユニットの個数取得 | |
| constexpr GxUnitClothModel * | getClothUnit (u32 index) const |
| 指定番号の布ユニット取得 | |
| constexpr GxUnitClothModel * | getClothUnitFromID (u32 id) const |
| 指定番号の布ユニット取得 | |
| GX_FORCE_INLINE b32 | isSimulation (void) const |
| 有効判定 | |
| GX_FORCE_INLINE void | setIsSimulation (b32 enable) |
| 有効/無効の設定 | |
| GX_FORCE_INLINE b32 | isInterpolateToMotion (void) const |
| シミュレーションからモーションへ補間している状態か判定 | |
| constexpr void | forceDisableSimulation (void) |
| シミュレーションを強制終了してモーションへ(補間しない) | |
| constexpr f32 | getInterpolateTime (void) const |
| 補間時間の取得(シミュレーション→モーションの補間にかける時間) | |
| constexpr void | setInterpolateTime (f32 time) |
| 補間時間の設定(シミュレーション→モーションの補間にかける時間) | |
| GX_FORCE_INLINE b32 | isMotionGravity (void) const |
| 重力を修正してモーションへ収束させているか判定 | |
| GX_FORCE_INLINE void | setIsMotionGravity (b32 enable) |
| 重力を修正してモーションへ収束させるか設定 | |
| GX_FORCE_INLINE void | setMotionGravity (b32 enable, f32 gravityForce, const GxVector3 &gravityDirection=-GxVector3::AXIS_Y) |
| 重力を修正してモーションへ収束させるか設定 - パラメータ変更込み | |
| GX_FORCE_INLINE b32 | isUpdateAllMatrix (void) const |
| すべての行列を更新するフラグ判定 | |
| GX_FORCE_INLINE void | setIsUpdateAllMatrix (b32 is) |
| すべての行列を更新するフラグ設定 | |
| GX_FORCE_INLINE GxVector3 | getGravity (void) const |
| 重力取得 | |
| GX_FORCE_INLINE void | setGravity (const GxVector3 &gravity) |
| 重力設定 | |
| constexpr f32 | getGravityForce (void) const |
| 重力取得(大きさのみ) | |
| constexpr void | setGravityForce (f32 force) |
| 重力設定(大きさのみ) | |
| GX_FORCE_INLINE const GxVector3 & | getGravityDirection (void) const |
| 重力取得(方向のみ) | |
| GX_FORCE_INLINE void | setGravityDirection (const GxVector3 &direction) |
| 重力設定(方向のみ) | |
| GX_FORCE_INLINE GxVector3 | getWind (void) const |
| 風取得 | |
| GX_FORCE_INLINE void | setWind (const GxVector3 &wind) |
| 風設定 | |
| constexpr f32 | getWindForce (void) const |
| 風力取得 | |
| constexpr void | setWindForce (f32 force) |
| 風力設定 | |
| GX_FORCE_INLINE const GxVector3 & | getWindDirection (void) const |
| 風向取得 | |
| GX_FORCE_INLINE void | setWindDirection (const GxVector3 &direction) |
| 風向設定 | |
| constexpr GxUnitSoftbodyCollision * | getCollisionFromSimulation (void) const |
| コリジョンの取得 | |
| GX_FORCE_INLINE void | setCollisionToSimulation (GxUnitSoftbodyCollision *pCollision) |
| コリジョンの設定 | |
| constexpr GxUnitSoftbodyCollision * | getCollision (void) const |
| コリジョンの取得 | |
| GX_FORCE_INLINE void | setCollision (GxUnitSoftbodyCollision *pCollision) |
| コリジョンの設定 | |
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 GxClassBaseRoot & | operator= (const GxClassBaseRoot &) |
| 代入演算子 | |
| virtual GxRtti & | getRtti (void) const =0 |
| Rttiの取得 | |
| virtual GX_FORCE_INLINE const GxTypedObject * | getDefaultObject (void) |
| デフォルトオブジェクトを取得 | |
| GX_FORCE_INLINE b32 | isDefaultObject (void) |
| デフォルトオブジェクト判定 | |
Protected Attributes | |
メンバ変数 | |
| b32 | _isSetup |
| セットアップ済みフラグ | |
| GxUnitModelBase * | _pParentModelSimulation |
| シミュレートするモデル | |
| GxUnitModelBase * | _pParentModelCollision |
| コリジョン付与するモデル | |
| GxUnitSoftbodySimulation * | _pUnitSimulation |
| シミュレーションユニット | |
| GxUnitSoftbodyCollision * | _pUnitCollision |
| コリジョンユニット | |
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 | preAsyncUpdate (void) |
| 並列更新(asyncUpdateの前に実行される) | |
| 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 GxUnitBase * | getOwner (void) const |
| 所持者を取得 | |
| GX_FORCE_INLINE GxFlag32Index< UPDATE_TYPE > | getUpdateEnable (void) const |
| 更新を呼ぶかを取得 | |
| GX_FORCE_INLINE void | setUpdateEnable (UPDATE_TYPE updateType, b32 enable) |
| 更新を呼ぶかを設定 | |
Protected Member Functions inherited from GxModBase | |
| constexpr GxClassBaseRoot * | getOwner (void) const |
| 所持者を取得 | |
| virtual GX_FORCE_INLINE void | setOwner (GxClassBaseRoot *pOwner) |
| 所持者を設定 | |
Static Protected Member Functions inherited from GxModUnitBase | |
| static const GxRtti & | getOwnerDerivedRtti (void) |
| 所持者に必要な継承RTTIを取得 | |
モデル対応シミュレーション、コリジョン統合モジュールクラス
|
inlineconstexpr |
コリジョンの取得
所有しているコリジョンユニットを取得する
|
inlineconstexpr |
コリジョンの取得
所有しているシミュレーションユニットに登録されているコリジョンユニットを取得する
|
virtual |
セットアップ
| pModelSimulation | [in] シミュレートするモデル |
| pResourceSimulation | [in] シミュレート設定リソース |
| unitProcessNumberSimulation | [in] シミュレートユニットの処理ライン |
| unitListNumberSimulation | [in] シミュレートユニットのリストライン |
| pModelCollision | [in] コリジョンをつけるモデル(nullptrならシミュレーションと同じものを) |
| pResourceCollision | [in] コリジョン設定リソース(nullptrならコリジョンはなし) |
| unitProcessNumberCollision | [in] コリジョンユニットの処理ライン |
| unitListNumberCollision | [in] コリジョンユニットのリストライン |
| chainUnitRtti | [in] チェインユニットのRTTI |
| clothUnitRtti | [in] クロスユニットのRTTI |

|
inline |
コリジョンの設定
所有しているコリジョンユニットを破棄し、新規に設定する

|
inline |
コリジョンの設定
所有しているシミュレーションユニットにコリジョンユニットを登録する
その後、所有しているコリジョンユニットは破棄し、新しく与えられたポインタを保持する
|
inline |
有効/無効の設定
正確には、モーションからシミュレーションに切り替わる際は、モーションの姿勢を初期値とするため補間はない
シミュレーションからモーションへ切り替える場合のみ現在の姿勢からモーションの姿勢まで回転を時間線形に球面補間する
|
inline |
すべての行列を更新するフラグ設定
枝分かれしているシミュレーション関節があると、 枝分かれ先の行列がシミュレーションにあわせて更新されないため正常な姿勢をとらない
したがって、この関数を posAsyncUpdate ( シミュレーションの更新 ) より後ろで呼ぶことで、枝分かれを含むすべての行列を更新する
|
inline |
重力を修正してモーションへ収束させるか設定 - パラメータ変更込み
setMotionGravity の第一引数に true を与えると、重力方向は設定パラメータに因らず、 モデル関節のモーションで指定された方向へ重力を向ける
大きさは第二引数で与えられた値を用いる
また、第一引数に false が与えられた場合、第三引数で鉛直方向以外の重力方向を設定可能
この方向は、すべての質点に同等の向きを与える(個別設定不可)
| b32 GxModUnitSoftbody::setupCollision | ( | GxUnitModelBase * | pModelCollision, |
| GxResSoftbodyCollision * | pResourceCollision, | ||
| u32 | unitProcessNumberCollision = USBS_DEFAULT_UNIT_PROCESS_NUMBER_SIMULATION - 1, | ||
| u32 | unitListNumberCollision = USBS_DEFAULT_UNIT_LIST_NUMBER_SIMULATION - 1 ) |
コリジョンの設定(リソースから)
| pModelCollision | [in] コリジョンをつけるモデル |
| pResourceCollision | [in] コリジョン設定リソース |
| unitProcessNumberCollision | [in] コリジョンユニットのプロセスライン番号 |
| unitListNumberCollision | [in] コリジョンユニットのユニットライン番号 |

| void GxModUnitSoftbody::updateLocalMatrixFromWorldMatrix | ( | void | ) |
モーション(世界行列)情報をモデル情報にフィードバック
Gx では、モーションがモデルの世界行列しか更新しないため、 局所行列を使用しているクロスシミュレーションは正常に動作しない
したがって、この関数をモーション更新後に呼ぶことで、世界行列から局所行列へ情報をフィードバックさせる
シミュレーションするモデルはモーション更新後に必ずこの関数を呼ばなければならない
