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

モデル対応シミュレーション、コリジョン統合モジュールクラス More...

#include <GxModUnitSoftbody.h>

Inheritance diagram for GxModUnitSoftbody:
Collaboration diagram for GxModUnitSoftbody:

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を取得
 

Detailed Description

モデル対応シミュレーション、コリジョン統合モジュールクラス

Member Function Documentation

◆ getCollision()

GxUnitSoftbodyCollision * GxModUnitSoftbody::getCollision ( void ) const
inlineconstexpr

コリジョンの取得

所有しているコリジョンユニットを取得する

◆ getCollisionFromSimulation()

GxUnitSoftbodyCollision * GxModUnitSoftbody::getCollisionFromSimulation ( void ) const
inlineconstexpr

コリジョンの取得

所有しているシミュレーションユニットに登録されているコリジョンユニットを取得する

◆ initialize()

u32 GxModUnitSoftbody::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 )
virtual

セットアップ

Parameters
pModelSimulation[in] シミュレートするモデル
pResourceSimulation[in] シミュレート設定リソース
unitProcessNumberSimulation[in] シミュレートユニットの処理ライン
unitListNumberSimulation[in] シミュレートユニットのリストライン
pModelCollision[in] コリジョンをつけるモデル(nullptrならシミュレーションと同じものを)
pResourceCollision[in] コリジョン設定リソース(nullptrならコリジョンはなし)
unitProcessNumberCollision[in] コリジョンユニットの処理ライン
unitListNumberCollision[in] コリジョンユニットのリストライン
chainUnitRtti[in] チェインユニットのRTTI
clothUnitRtti[in] クロスユニットのRTTI
Returns
0 : すべてのシミュレーション、もしくはコリジョンの作成に失敗
1 : すべてのシミュレーション、コリジョンの作成に成功(正常終了)
2 : 一部のシミュレーションの作成に失敗
Here is the call graph for this function:

◆ setCollision()

GX_FORCE_INLINE void GxModUnitSoftbody::setCollision ( GxUnitSoftbodyCollision * pCollision)
inline

コリジョンの設定

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

Here is the call graph for this function:

◆ setCollisionToSimulation()

GX_FORCE_INLINE void GxModUnitSoftbody::setCollisionToSimulation ( GxUnitSoftbodyCollision * pCollision)
inline

コリジョンの設定

所有しているシミュレーションユニットにコリジョンユニットを登録する
その後、所有しているコリジョンユニットは破棄し、新しく与えられたポインタを保持する

◆ setIsSimulation()

GX_FORCE_INLINE void GxModUnitSoftbody::setIsSimulation ( b32 enable)
inline

有効/無効の設定

正確には、モーションからシミュレーションに切り替わる際は、モーションの姿勢を初期値とするため補間はない
シミュレーションからモーションへ切り替える場合のみ現在の姿勢からモーションの姿勢まで回転を時間線形に球面補間する

◆ setIsUpdateAllMatrix()

GX_FORCE_INLINE void GxModUnitSoftbody::setIsUpdateAllMatrix ( b32 is)
inline

すべての行列を更新するフラグ設定

枝分かれしているシミュレーション関節があると、 枝分かれ先の行列がシミュレーションにあわせて更新されないため正常な姿勢をとらない
したがって、この関数を posAsyncUpdate ( シミュレーションの更新 ) より後ろで呼ぶことで、枝分かれを含むすべての行列を更新する

◆ setMotionGravity()

GX_FORCE_INLINE void GxModUnitSoftbody::setMotionGravity ( b32 enable,
f32 gravityForce,
const GxVector3 & gravityDirection = -GxVector3::AXIS_Y )
inline

重力を修正してモーションへ収束させるか設定 - パラメータ変更込み

setMotionGravity の第一引数に true を与えると、重力方向は設定パラメータに因らず、 モデル関節のモーションで指定された方向へ重力を向ける
大きさは第二引数で与えられた値を用いる
また、第一引数に false が与えられた場合、第三引数で鉛直方向以外の重力方向を設定可能
この方向は、すべての質点に同等の向きを与える(個別設定不可)

◆ setupCollision()

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 )

コリジョンの設定(リソースから)

Parameters
pModelCollision[in] コリジョンをつけるモデル
pResourceCollision[in] コリジョン設定リソース
unitProcessNumberCollision[in] コリジョンユニットのプロセスライン番号
unitListNumberCollision[in] コリジョンユニットのユニットライン番号
Returns
成功ならtrue
Here is the call graph for this function:

◆ updateLocalMatrixFromWorldMatrix()

void GxModUnitSoftbody::updateLocalMatrixFromWorldMatrix ( void )

モーション(世界行列)情報をモデル情報にフィードバック

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

Here is the call graph for this function:

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