Springhead
An open source physics engine for virtual reality, haptics and motion generation.
構造体 PHSceneIf

シーン

#include <SprPHScene.h>

PHSceneIfに対する継承グラフ

Public メソッド

 SPR_IFDEF (PHScene)
 
PHSdkIfGetSdk ()
 このSceneをもつSDKを返す [詳細]
 
PHSolidIfCreateSolid (const PHSolidDesc &desc=PHSolidDesc())
 Solidを作成する [詳細]
 
int NSolids () const
 Solidの数を取得する [詳細]
 
PHSolidIfGetSolid (int idx)
 Solidを取得する [詳細]
 
int GetSolidIndex (PHSolidIf *s)
 Solidのインデックスを取得する [詳細]
 
PHSolidIf ** GetSolids ()
 Solidを取得する [詳細]
 
int NSolidPairs () const
 SolidPairの数を取得する [詳細]
 
PHSolidPairForLCPIfGetSolidPair (int i, int j)
 SolidPairを取得する [詳細]
 
PHSolidPairForLCPIfGetSolidPair (PHSolidIf *lhs, PHSolidIf *rhs, bool &bSwap)
 SolidPairを取得する [詳細]
 
void SetContactMode (PHSolidIf *lhs, PHSolidIf *rhs, PHSceneDesc::ContactMode mode=PHSceneDesc::MODE_LCP)
 指定した剛体同士の接触のモードを設定する [詳細]
 
void SetContactMode (PHSolidIf **group, size_t length, PHSceneDesc::ContactMode mode=PHSceneDesc::MODE_LCP)
 指定した集合に含まれる全ての剛体同士の接触のモードを設定する [詳細]
 
void SetContactMode (PHSolidIf *solid, PHSceneDesc::ContactMode mode=PHSceneDesc::MODE_LCP)
 指定した剛体と他の剛体との全ての接触のモードを設定する [詳細]
 
void SetContactMode (PHSceneDesc::ContactMode mode=PHSceneDesc::MODE_LCP)
 シーンが保有する全ての剛体同士の接触のモードを設定する [詳細]
 
PHJointIfCreateJoint (PHSolidIf *lhs, PHSolidIf *rhs, const IfInfo *ii, const PHJointDesc &desc)
 関節を作成する [詳細]
 
template<class T >
PHJointIfCreateJoint (PHSolidIf *lhs, PHSolidIf *rhs, const T &desc)
 
int NJoints () const
 関節の数を取得する
 
PHJointIfGetJoint (int i)
 関節を取得する
 
int NContacts () const
 接触拘束の数を取得する
 
PHContactPointIfGetContact (int i)
 接触拘束を取得する
 
int NFemMeshes () const
 FEM Meshの数を取得する
 
PHFemMeshIfGetFemMesh (int i)
 FEM Meshを取得する
 
int NFemMeshesNew () const
 FEM MeshNewの数を取得する
 
PHFemMeshNewIfGetFemMeshNew (int i)
 FEM MeshNewを取得する
 
PHRootNodeIfCreateRootNode (PHSolidIf *root, const PHRootNodeDesc &desc=PHRootNodeDesc())
 ルートノードを作成する [詳細]
 
int NRootNodes () const
 ルートノードの数
 
PHRootNodeIfGetRootNode (int i)
 ルートノードを取得する
 
PHTreeNodeIfCreateTreeNode (PHTreeNodeIf *parent, PHSolidIf *child, const PHTreeNodeDesc &desc=PHTreeNodeDesc())
 ツリーノードを作成する [詳細]
 
PHRootNodeIfCreateTreeNodes (PHSolidIf *solid)
 関節の接続関係を抽出してツリー構造を自動生成する [詳細]
 
PHGearIfCreateGear (PH1DJointIf *lhs, PH1DJointIf *rhs, const PHGearDesc &desc=PHGearDesc())
 ギアを作成する [詳細]
 
int NGears () const
 ギアの数
 
PHGearIfGetGear (int i)
 ギアを取得する
 
PHPathIfCreatePath (const PHPathDesc &desc=PHPathDesc())
 パスを作成する [詳細]
 
int NPaths ()
 パスの数
 
PHPathIfGetPath (int i)
 パスを取得する
 
PHRayIfCreateRay (const PHRayDesc &desc=PHRayDesc())
 raycastの光線を作成する
 
int NRays ()
 光線の数
 
PHRayIfGetRay (int i)
 光線を取得する
 
bool SetPosesOfJointedSolids (const PHSolidIf *base)
 関節で接続された剛体の姿勢を、関節にあわせて設定する。
 
PHIKActuatorIfCreateIKActuator (const IfInfo *ii, const PHIKActuatorDesc &desc=PHIKActuatorDesc())
 IKのノード(IKに用いることのできる可動物(=関節など))を作成する.
 
template<class T >
PHIKActuatorIfCreateIKActuator (const T &desc)
 
int NIKActuators ()
 IKアクチュエータの数
 
PHIKActuatorIfGetIKActuator (int i)
 IKアクチュエータを取得する
 
PHIKEndEffectorIfCreateIKEndEffector (const PHIKEndEffectorDesc &desc=PHIKEndEffectorDesc())
 IKのエンドエフェクタを作成する.
 
int NIKEndEffectors ()
 IKエンドエフェクタの数
 
PHIKEndEffectorIfGetIKEndEffector (int i)
 IKエンドエフェクタを取得する
 
int NSkeletons ()
 スケルトン(ボーンの集合)の数
 
PHSkeletonIfGetSkeleton (int i)
 スケルトン(ボーンの集合)を取得する
 
PHSkeletonIfCreateSkeleton (const PHSkeletonDesc &desc=PHSkeletonDesc())
 スケルトン(ボーンの集合)を作成する
 
double GetTimeStep () const
 積分ステップを取得する [詳細]
 
double GetTimeStepInv () const
 積分ステップの逆数を取得する [詳細]
 
void SetTimeStep (double dt)
 積分ステップを設定する [詳細]
 
double GetHapticTimeStep () const
 積分ステップを取得する [詳細]
 
void SetHapticTimeStep (double dt)
 積分ステップを設定する [詳細]
 
unsigned GetCount () const
 カウント数を取得する [詳細]
 
void SetCount (unsigned count)
 カウント数を設定する [詳細]
 
void SetGravity (const Vec3d &accel)
 重力を設定する [詳細]
 
Vec3d GetGravity ()
 重力を取得する [詳細]
 
void SetAirResistanceRateForVelocity (double rate)
 並進に対する空気抵抗の割合を設定する [詳細]
 
void SetAirResistanceRateForAngularVelocity (double rate)
 回転に対する空気抵抗の割合を設定する [詳細]
 
double GetAirResistanceRateForVelocity ()
 並進に対する空気抵抗の割合を取得する [詳細]
 
double GetAirResistanceRateForAngularVelocity ()
 回転に対する空気抵抗の割合を取得する [詳細]
 
void SetContactTolerance (double tol)
 接触の許容交差量を設定する
 
double GetContactTolerance ()
 接触の許容交差量を取得する
 
void SetImpactThreshold (double vth)
 衝突と静接触の閾値
 
double GetImpactThreshold ()
 
void SetFrictionThreshold (double vth)
 静摩擦と動摩擦の閾値
 
double GetFrictionThreshold ()
 
void SetMaxVelocity (double vmax)
 許容最大速度.超えたら飽和
 
double GetMaxVelocity ()
 
void SetMaxAngularVelocity (double wmax)
 許容最大角速度.超えたら飽和
 
double GetMaxAngularVelocity ()
 
void SetMaxForce (double fmax)
 許容最大力.超えたら飽和
 
double GetMaxForce ()
 
void SetMaxMoment (double tmax)
 許容最大モーメント.超えたら飽和
 
double GetMaxMoment ()
 
void SetMaxDeltaPosition (double dpmax)
 許容最大移動量.超えないようにdtを調整
 
double GetMaxDeltaPosition ()
 
void SetMaxDeltaOrientation (double dqmax)
 許容最大回転量.超えないようにdtを調整
 
double GetMaxDeltaOrientation ()
 
int GetLCPSolver ()
 LCPソルバの選択
 
void SetLCPSolver (int method)
 
int GetNumIteration ()
 LCPソルバの計算回数の取得.MODE_LCPの場合の拘束力の繰り返し近似計算の回数.
 
void SetNumIteration (int n)
 LCPソルバの計算回数の設定.
 
void SetStateMode (bool bConstraints)
 状態の保存 (ObjectStates の保存)に, Constraints が持つ拘束力を含めるかどうか設定する.
 
void EnableContactDetection (bool enable)
 接触判定エンジンの有効・無効を設定する.SetContactModeより優先する.
 
bool IsContactDetectionEnabled ()
 
void EnableCCD (bool enable)
 
bool IsCCDEnabled ()
 
void SetBroadPhaseMode (int mode)
 衝突判定のbroad phase手法を設定
 
int GetBroadPhaseMode ()
 
void SetContactDetectionRange (Vec3f center, Vec3f extent, int nx, int ny, int nz)
 衝突判定処理の対象範囲を設定 (MODE_PARTITION) [詳細]
 
void SetMaterialBlending (int mode)
 物性(摩擦係数、跳ね返り係数)の合成ルールを設定
 
void GetMaterialBlending ()
 
void Step ()
 シーンの時刻を進める
 
void ClearForce ()
 
void GenerateForce ()
 
void Integrate ()
 
void IntegratePart1 ()
 
void IntegratePart2 ()
 
void Clear ()
 シーンを空にする
 
int NEngines ()
 エンジンアクセス用API (公開の是非については要検討)
 
PHEngineIfGetEngine (int i)
 i番目のエンジンを取得する [詳細]
 
PHConstraintEngineIfGetConstraintEngine ()
 ConstraintEngineを取得する [詳細]
 
PHGravityEngineIfGetGravityEngine ()
 GravityEnigneを取得する [詳細]
 
PHPenaltyEngineIfGetPenaltyEngine ()
 PenaltyEngineを取得する [詳細]
 
PHIKEngineIfGetIKEngine ()
 IKEngineを取得する [詳細]
 
PHFemEngineIfGetFemEngine ()
 FemEngineを取得する [詳細]
 
PHHapticEngineIfGetHapticEngine ()
 HapticEngineを取得する [詳細]
 
PHOpEngineIfGetOpEngine ()
 OrientedParticleEngineを取得する [詳細]
 
PHTrackingEngineIfGetTrackingEngine ()
 TrackingEngineを取得する [詳細]
 
PHOpSpHashColliAgentIfGetOpColliAgent ()
 Op衝突判定のagentを取得する [詳細]
 
PHHapticPointerIfCreateHapticPointer ()
 HapticPointerを作成する HapticPointerへのポインタ
 
void StepHapticLoop ()
 HapticLoopを更新する
 
void StepHapticSync ()
 Physicsとの同期を取る StepHapticLoop()を呼ぶ度に呼び出す必要あり
 
UTPerformanceMeasureIfGetPerformanceMeasure ()
 計算時間の計測結果を取得する。
 
- Public メソッド inherited from SceneIf
 SPR_IFDEF (Scene)
 
- Public メソッド inherited from NameManagerIf
 SPR_IFDEF (NameManager)
 
template<class T >
void FindObject (UTRef< T > &t, UTString name)
 
template<class T >
void FindObject (T *&t, UTString name)
 
NamedObjectIfFindObject (UTString name, UTString cls="")
 
- Public メソッド inherited from NamedObjectIf
 SPR_IFDEF (NamedObject)
 
const char * GetName () const
 名前の取得
 
void SetName (const char *n)
 名前の設定
 
NameManagerIfGetNameManager ()
 名前管理オブジェクトの取得
 
- Public メソッド inherited from ObjectIf
 SPR_IFDEF (Object)
 
ObjectIfGetObjectIf ()
 
const ObjectIfGetObjectIf () const
 
int DelRef () const
 
void Print (std::ostream &os) const
 デバッグ用の表示。子オブジェクトを含む。
 
void PrintShort (std::ostream &os) const
 デバッグ用の表示。子オブジェクトを含まない。
 
void DumpObjectR (std::ostream &os, int level=0) const
 オブジェクトツリーのメモリイメージをダンプ
 
int AddRef ()
 
int RefCount ()
 
size_t NChildObject () const
 子オブジェクトの数
 
ObjectIfGetChildObject (size_t pos)
 子オブジェクトの取得
 
const ObjectIfGetChildObject (size_t pos) const
 
bool AddChildObject (ObjectIf *o)
 子オブジェクトの追加.複数のオブジェクトの子オブジェクトとして追加してよい. 例えば,GRFrameはツリーを作るが,全ノードがGRSceneの子でもある.
 
bool DelChildObject (ObjectIf *o)
 子オブジェクトの削除
 
void Clear ()
 すべての子オブジェクトの削除と、プロパティのクリア
 
ObjectIfCreateObject (const IfInfo *info, const void *desc)
 オブジェクトを作成し,AddChildObject()を呼ぶ.
 
template<class T >
ObjectIfCreateObject (const T &desc)
 CreateObjectを呼び出すユーティリティ関数
 
const void * GetDescAddress () const
 デスクリプタの読み出し(参照版 NULLを返すこともある). これが実装されていなくても,ObjectIf::GetDesc()は実装されていることが多い.
 
bool GetDesc (void *desc) const
 デスクリプタの読み出し(コピー版 失敗する(falseを返す)こともある). ObjectIf::GetDescAddress() が実装されていなくても,こちらは実装されていることがある.
 
void SetDesc (const void *desc)
 デスクリプタの設定
 
size_t GetDescSize () const
 デスクリプタのサイズ
 
const void * GetStateAddress () const
 状態の読み出し(参照版 NULLを返すこともある). これが実装されていなくても,ObjectIf::GetState()は実装されていることがある.
 
bool GetState (void *state) const
 状態の読み出し(コピー版 失敗する(falseを返す)こともある). ObjectIf::GetStateAddress() が実装されていなくても,こちらは実装されていることがある.
 
void SetState (const void *state)
 状態の設定
 
bool WriteStateR (std::ostream &fout)
 状態の書き出し
 
bool WriteState (std::string fileName)
 
bool ReadStateR (std::istream &fin)
 状態の読み込み
 
bool ReadState (std::string fileName)
 
size_t GetStateSize () const
 状態のサイズ
 
void ConstructState (void *m) const
 メモリブロックを状態型に初期化
 
void DestructState (void *m) const
 状態型をメモリブロックに戻す
 

関数

PHGearIf* CreateGear ( PH1DJointIf lhs,
PH1DJointIf rhs,
const PHGearDesc desc = PHGearDesc() 
)
引数
lhsギアで連動させる関節
rhsギアで連動させる関節
descギアのディスクリプタ
戻り値
ギアのインタフェース 1自由度関節lhsとrhsを連動させるギアを作成する. 連動された関節は, rhs->GetPosition() = desc.ratio * lhs->GetPosition() を満たすように拘束される.
PHJointIf* CreateJoint ( PHSolidIf lhs,
PHSolidIf rhs,
const IfInfo ii,
const PHJointDesc desc 
)
引数
lhs関節を取り付ける剛体
rhs関節を取り付ける剛体
desc関節のディスクリプタ
戻り値
関節のインタフェース 剛体lhsと剛体rhsを連結する関節を作成する. descには作成したい関節の種類に対応するディスクリプタ(PHJointDescから派生する)を渡す. lhsにソケットが,rhsにプラグが取り付けられる.

参照元 MyApp::BuildScene().

PHPathIf* CreatePath ( const PHPathDesc desc = PHPathDesc())
引数
descパスのディスクリプタ パスを作成する. パスはPHPathJointの軌道を表現するために用いる.
PHRootNodeIf* CreateRootNode ( PHSolidIf root,
const PHRootNodeDesc desc = PHRootNodeDesc() 
)
引数
rootルートノードとなる剛体
戻り値
ルートノードのインタフェース 関節ツリーの根となるノードを作成する.
PHSolidIf* CreateSolid ( const PHSolidDesc desc = PHSolidDesc())
引数
desc作成するSolidのディスクリプタ
戻り値
Solidのインタフェース

参照元 MyApp::BuildScene().

PHTreeNodeIf* CreateTreeNode ( PHTreeNodeIf parent,
PHSolidIf child,
const PHTreeNodeDesc desc = PHTreeNodeDesc() 
)
引数
parent親ノード
child子ノードとなる剛体
戻り値
ツリーノード 剛体childを参照するツリーノードを作成し,既存のノードparentの子ノードとして追加する. parentが指す剛体とchildをつなぐ関節はCreateTreeNodeの呼び出しよりも前に CreateJointによって作成されていなければならない. さらに,parentがソケット側,childがプラグ側である必要がある.
PHRootNodeIf* CreateTreeNodes ( PHSolidIf solid)
引数
solid根となる剛体

参照元 MyApp::BuildScene().

double GetAirResistanceRateForAngularVelocity ( )
戻り値
回転に対する空気抵抗の割合
double GetAirResistanceRateForVelocity ( )
戻り値
並進に対する空気抵抗の割合
PHConstraintEngineIf* GetConstraintEngine ( )
戻り値
PHConstraintEngineへのポインタ
unsigned GetCount ( ) const
戻り値
カウント数 シーンが作成されてから現在までにStep()を実行した回数を返す.
PHEngineIf* GetEngine ( int  i)
引数
iエンジン番号のインデックス
戻り値
選択したエンジンへのポインタ
PHFemEngineIf* GetFemEngine ( )
戻り値
FemEngineへのポインタ
Vec3d GetGravity ( )
戻り値
重力加速度ベクトル
PHGravityEngineIf* GetGravityEngine ( )
戻り値
GravityEngineへのポインタ
PHHapticEngineIf* GetHapticEngine ( )
戻り値
HapticEngineへのポインタ

参照元 MyApp::TimerFunc().

double GetHapticTimeStep ( ) const
戻り値
積分ステップ
PHIKEngineIf* GetIKEngine ( )
戻り値
IKEngineへのポインタ
PHOpSpHashColliAgentIf* GetOpColliAgent ( )
戻り値
agentへのポインタ
PHOpEngineIf* GetOpEngine ( )
戻り値
OrientedParticleEngineへのポインタ
PHPenaltyEngineIf* GetPenaltyEngine ( )
戻り値
PenaltyEngineへのポインタ
PHSdkIf* GetSdk ( )
戻り値
SDKのインタフェース

参照元 MyApp::BuildScene().

PHSolidIf* GetSolid ( int  idx)
戻り値
Solidのインタフェースへのポインタ
int GetSolidIndex ( PHSolidIf s)
戻り値
Solidのインデックス
PHSolidPairForLCPIf* GetSolidPair ( int  i,
int  j 
)
戻り値
PHSolidPairForLCPIf* GetSolidPair ( PHSolidIf lhs,
PHSolidIf rhs,
bool &  bSwap 
)
引数
lhs組みの片方の剛体へのポインタ
rhs組みのもう片方の剛体へのポインタ
bSwapスワップされた場合はsoiid[0] = lhs, solid[1] = rhsとなる
戻り値
剛体のペア
PHSolidIf** GetSolids ( )
戻り値
Solidのインタフェースの配列へのポインタ
double GetTimeStep ( ) const
戻り値
積分ステップ
double GetTimeStepInv ( ) const
戻り値
積分ステップの逆数
PHTrackingEngineIf* GetTrackingEngine ( )
戻り値
TrackingEngineへのポインタ
int NSolidPairs ( ) const
戻り値
SolidPairの数
int NSolids ( ) const
戻り値
Solidの数
void SetAirResistanceRateForAngularVelocity ( double  rate)
引数
rate回転に対する空気抵抗の割合 標準は1.0 比率を下げるとシミュレーションが安定する(PHSolid::UpdateVelocity()内で呼ばれる)
void SetAirResistanceRateForVelocity ( double  rate)
引数
rate並進に対する空気抵抗の割合 標準は1.0 比率を下げるとシミュレーションが安定する(PHSolid::UpdateVelocity()内で呼ばれる)
void SetContactDetectionRange ( Vec3f  center,
Vec3f  extent,
int  nx,
int  ny,
int  nz 
)
引数
center領域の中心
extent領域のサイズ
nxx方向分割数
nyy方向分割数
nzz方向分割数
void SetContactMode ( PHSolidIf lhs,
PHSolidIf rhs,
PHSceneDesc::ContactMode  mode = PHSceneDesc::MODE_LCP 
)
引数
lhs組の片方の剛体へのポインタ
rhs組のもう片方の剛体へのポインタ
mode接触のモード

剛体lhsと剛体rhsとの接触のモードをmodeに設定する.

void SetContactMode ( PHSolidIf **  group,
size_t  length,
PHSceneDesc::ContactMode  mode = PHSceneDesc::MODE_LCP 
)
引数
group剛体へのポインタ配列の先頭アドレス
sizeポインタ配列の長さ
mode接触のモード

group[0]からgroup[size-1]までの全ての剛体の組の接触のモードをmodeに設定する.

void SetContactMode ( PHSolidIf solid,
PHSceneDesc::ContactMode  mode = PHSceneDesc::MODE_LCP 
)
引数
mode接触のモード
void SetContactMode ( PHSceneDesc::ContactMode  mode = PHSceneDesc::MODE_LCP)
引数
mode接触のモード
void SetCount ( unsigned  count)
引数
countカウント数
void SetGravity ( const Vec3d accel)
引数
accel重力加速度ベクトル

参照元 MyApp::BuildScene().

void SetHapticTimeStep ( double  dt)
引数
dt積分ステップ
void SetTimeStep ( double  dt)
引数
dt積分ステップ

この構造体の説明は次のファイルから生成されました: