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 GxUnitChainModelgetChainUnit (u32 index) const
 指定番号の鎖ユニット取得
 
constexpr GxUnitChainModelgetChainUnitFromID (u32 id) const
 指定番号の鎖ユニット取得
 
constexpr u32 getClothCount (void) const
 布ユニットの個数取得
 
constexpr GxUnitClothModelgetClothUnit (u32 index) const
 指定番号の布ユニット取得
 
constexpr GxUnitClothModelgetClothUnitFromID (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 GxVector3getGravityDirection (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 GxVector3getWindDirection (void) const
 風向取得
 
GX_FORCE_INLINE void setWindDirection (const GxVector3 &direction)
 風向設定
 
constexpr GxUnitSoftbodyCollisiongetCollisionFromSimulation (void) const
 コリジョンの取得
 
GX_FORCE_INLINE void setCollisionToSimulation (GxUnitSoftbodyCollision *pCollision)
 コリジョンの設定
 
constexpr GxUnitSoftbodyCollisiongetCollision (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 GxClassBaseRootoperator= (const GxClassBaseRoot &)
 代入演算子
 
virtual GxRttigetRtti (void) const =0
 Rttiの取得
 
virtual GX_FORCE_INLINE const GxTypedObjectgetDefaultObject (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 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

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

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: