Springhead
An open source physics engine for virtual reality, haptics and motion generation.
物理エンジンSDK

モジュール

 逆運動学(IK)計算
 
 ジョイント
 

ファイル

ファイル  SprPHIK.h
 逆運動学(IK)計算
 
ファイル  SprPHScene.h
 シーン
 
ファイル  SprPHSkeleton.h
 スケルトン
 

ネームスペース

 Spr
 SpatialVector V(v, w) = [v; w]; SpatialTransform X(R, r) = [R^T, -R^T * r%; O, R^T]; ^Tは転置, は外積行列,Oは零行列. X(R, r) * V(v, w) = [R^T * (v + w % r); R^T * w];.
 

構成

struct  DRUsb20SimpleIf
 CyverseのUSBデバイス [詳細]
 
struct  DRUsb20SimpleDesc
 
struct  DRUsb20Sh4If
 
struct  DRUsb20Sh4Desc
 
struct  DRCyUsb20Sh4If
 
struct  DRCyUsb20Sh4Desc
 
struct  PHEngineIf
 
struct  PHConstraintEngineIf
 
struct  PHConstraintEngineDesc
 
struct  PHGravityEngineIf
 
struct  PHPenaltyEngineIf
 
struct  PHIKEngineDesc
 
struct  PHIKEngineIf
 
struct  PHTrackingEngineIf
 
struct  PHFemEngineIf
 For historical reason, there are two kinds of FEM mesh, FemMesh and FemMeshNew. [詳細]
 
struct  PHOpEngineIf
 
struct  PHFemMeshState
 FemMeshのステート [詳細]
 
struct  PHFemMeshDesc
 FemMeshのディスクリプタ [詳細]
 
struct  PHFemMeshIf
 FEM用の四面体メッシュ [詳細]
 
struct  PHFemMeshThermoDesc
 FemMeshThermoのディスクリプタ [詳細]
 
struct  PHFemMeshThermoIf
 温度のFEM用のメッシュ [詳細]
 
struct  PHFemMeshNewState
 FemMeshのステート [詳細]
 
struct  PHFemMeshNewDesc
 FemMeshのディスクリプタ [詳細]
 
struct  PHFemMeshNewIf
 PHFemMeshNewへのインタフェース [詳細]
 
struct  PHFemBaseDesc
 Femのデスクリプタ [詳細]
 
struct  PHFemBaseIf
 Femの共通計算部分 [詳細]
 
struct  PHFemVibrationDesc
 振動計算のデスクリプタ [詳細]
 
struct  PHFemVibrationIf
 振動計算 [詳細]
 
struct  PHFemThermoDesc
 FemThermoのデスクリプタ [詳細]
 
struct  PHFemThermoIf
 温度のFEM用のメッシュ [詳細]
 
struct  PHFemPorousWOMoveDesc
 
struct  PHFemPorousWOMoveIf
 
struct  PHHapticPointerDesc
 
struct  PHHapticPointerIf
 
struct  PHShapePairForHapticIf
 
struct  PHSolidPairForHapticIf
 
struct  PHHapticEngineDesc
 
struct  PHHapticEngineIf
 
struct  PHIKEndEffectorState
 IKのエンドエフェクタ(到達目標に向けて動かされるもの) [詳細]
 
struct  PHConstraintDesc
 拘束のデスクリプタ [詳細]
 
struct  PHInactiveSolids
 お互いに衝突しない剛体を設定 [詳細]
 
struct  PHRaycastHit
 Ray castの結果保存用 [詳細]
 
struct  PHRayDesc
 
struct  PHRayIf
 
struct  PHSceneState
 物理エンジンのシーンの状態 [詳細]
 
struct  PHSceneDesc
 物理エンジンのシーンのデスクリプタ [詳細]
 
struct  PHSceneIf
 シーン [詳細]
 
struct  PHSdkDesc
 
struct  PHSdkIf
 物理シミュレーションSDK [詳細]
 
struct  PHFrameDesc
 形と位置を指定するための衝突判定用フレーム [詳細]
 
struct  PHFrameIf
 
struct  PHBodyIf
 
struct  PHSolidState
 剛体のステート [詳細]
 
struct  PHSolidDesc
 剛体のディスクリプタ [詳細]
 
struct  PHSolidIf
 剛体のインタフェース [詳細]
 
struct  PHShapePairForLCPIf
 
class  PHCollisionListener
 
struct  PHSolidPairIf
 
struct  PHSolidPairForLCPIf
 

型定義

typedef void(SPR_CDECLCallback )(void *arg)
 コールバック関数の型
 

列挙型

enum  HapticRenderMode { PENALTY, CONSTRAINT, DYNAMIC_PROXY }
 
enum  FrictionState { FREE, STATIC, DYNAMIC }
 
enum  HapticStepMode { SINGLE_THREAD = 0, MULTI_THREAD, LOCAL_DYNAMICS }
 

関数

bool approx (const double x, const double y)
 
bool approx (const Vec3d v1, const Vec3d v2)
 
 SPR_IFDEF (PHHapticPointer)
 
void SetHapticRenderMode (PHHapticPointerDesc::HapticRenderMode m)
 
PHHapticPointerDesc::HapticRenderMode GetHapticRenderMode ()
 
void EnableRotation (bool b)
 
bool IsRotation ()
 
void EnableForce (bool b)
 
bool IsForce ()
 
void EnableFriction (bool b)
 
bool IsFriction ()
 
void EnableTimeVaryFriction (bool b)
 
bool IsTimeVaryFriction ()
 
void EnableVibration (bool b)
 
bool IsVibration ()
 
void EnableMultiPoints (bool b)
 
bool IsMultiPoints ()
 
void EnableMultiProxy (bool b)
 
bool IsMultiProxy ()
 
void EnableSimulation (bool b)
 
bool IsSimulation ()
 
void SetFrictionSpring (float s)
 摩擦で動的Proxyを使う場合のバネ係数
 
float GetFrictionSpring ()
 摩擦で動的Proxyを使う場合のバネ係数
 
void SetFrictionDamper (float s)
 摩擦で動的Proxyを使う場合のダンパ係数
 
float GetFrictionDamper ()
 摩擦で動的Proxyを使う場合のダンパ係数
 
void SetReflexSpring (float s)
 提示力計算に使うバネ係数
 
float GetReflexSpring ()
 提示力計算に使うバネ係数
 
void SetReflexDamper (float d)
 提示力計算に使うダンパ係数
 
float GetReflexDamper ()
 提示力計算に使うダンパ係数
 
void SetRotationReflexSpring (float s)
 提示力計算に使う回転バネ係数
 
float GetRotationReflexSpring ()
 提示力計算に使う回転バネ係数
 
void SetRotationReflexDamper (float d)
 提示力計算に使う回転ダンパ係数
 
float GetRotationReflexDamper ()
 提示力計算に使う回転ダンパ係数
 
void SetLocalRange (float r)
 中間表現を作る距離
 
float GetLocalRange ()
 中間表現を作る距離
 
void SetPosScale (double scale)
 インタフェースの位置の倍率
 
double GetPosScale ()
 インタフェースの位置の倍率
 
void SetRotationalWeight (double w)
 Proxyの回転による破綻を減らすための、倍率
 
double GetRotationalWeight ()
 Proxyの回転による破綻を減らすための、倍率
 
void SetDefaultPose (Posed p)
 インタフェースに対するポインタの向き
 
Posed GetDefaultPose ()
 インタフェースに対するポインタの向き
 
int NNeighborSolids ()
 ポインタ近傍の剛体数
 
int GetNeighborSolidId (int i)
 ポインタ近傍の剛体のIDを取得
 
PHSolidIf * GetNeighborSolid (int i)
 ポインタ近傍の剛体を取得
 
float GetContactForce (int i)
 近傍物体iからの接触力
 
SpatialVector GetHapticForce ()
 力覚インタフェースに出力する力
 
SpatialVector GetProxyVelocity ()
 質量ありプロキシの速度
 
void SetProxyN (int n)
 proxyの数を設定
 
int GetProxyN ()
 proxyの数を取得
 
int GetTotalSlipState ()
 
int GetSlipState (int i)
 
void SetProxyVelocity (SpatialVector spv)
 
void AddHapticForce (const SpatialVector &f)
 
void ClearHapticForce ()
 
void UpdateHumanInterface (const Posed &pose, const SpatialVector &vel)
 HumanInterfaceの位置の変化をHapticPointerに伝える。普通はFWSceeneが呼び出すので、呼び出し不要。
 
 SPR_IFDEF (PHShapePairForHaptic)
 
int NIrs ()
 
int NIrsNormal ()
 
Vec3d GetIrForce (int i)
 
double GetMu ()
 
PHFrameIf * GetFrame (int i)
 
void UpdateCache ()
 
double GetMus (int id)
 
 SPR_IFDEF (PHSolidPairForHaptic)
 
PHShapePairForHapticIf * GetShapePair (int i, int j)
 
FrictionState GetFrictionState ()
 
unsigned GetContactCount ()
 
unsigned GetFrictionCount ()
 
void InitFrictionState (int n)
 
void InitFrictionCount (int n)
 
void InitContactCount (int n)
 
void InitSlipState (int n)
 
int GetSlipState (int i)
 
Vec3d GetForce ()
 
Vec3d GetTorque ()
 
FrictionState GetFrictionStates (int i)
 
 SPR_IFDEF (PHHapticEngine)
 
void SetHapticStepMode (PHHapticEngineDesc::HapticStepMode mode)
 HapticEngineのモードを切り替える [詳細]
 
PHHapticEngineDesc::HapticStepMode GetHapticStepMode ()
 
int NSolids ()
 Physics側の剛体数
 
int NPointers ()
 Physics側の力覚ポインタ数
 
PHHapticPointerIf * GetPointer (int i)
 Physics側の力覚ポインタの取得
 
PHSolidPairForHapticIf * GetSolidPair (int i, int j)
 Physics側のSolidPairForHapticの取得。iが剛体、jがHapticPointerの番号
 
int NSolidsInHaptic ()
 Haptics側の剛体数
 
int NPointersInHaptic ()
 Haptics側の力覚ポインタ数
 
PHHapticPointerIf * GetPointerInHaptic (int i)
 Haptics側の力覚ポインタの取得
 
PHSolidPairForHapticIf * GetSolidPairInHaptic (int i, int j)
 Haptics側のSolidPairForHapticの取得。iが剛体、jがHapticPointerの番号
 
void StepPhysicsSimulation ()
 シミュレーションをすすめる。HapticEngineを有効化した場合には この関数を使ってシミュレーションをすすめる
 
void ReleaseState ()
 シミュレーションを実行する直前かどうかを返す [詳細]
 
bool SetCallbackBeforeStep (Callback f, void *arg)
 シミュレーションを実行する直前に実行されるコールバックを登録する
 
bool SetCallbackAfterStep (Callback f, void *arg)
 シミュレーションを実行した直後に実行されるコールバックを登録する
 

変数

HapticRenderMode renderMode
 haptic renderingのモード
 

説明

列挙型

enum HapticRenderMode
列挙型の値
PENALTY 

ペナルティ法でProxyの行き先を求める

CONSTRAINT 

中間表現を拘束条件だと思って、Proxyの行き先を求める

DYNAMIC_PROXY 

摩擦計算のときだけ、Proxyに質量と動力学をもたせたCONSTRAINT

関数

void ReleaseState ( )

シミュレーションを実行した直後かどうかを返す シーングラフの状態(ObjectStatesIf)を開放する。 動的にオブジェクトを追加する時には直前に呼ぶ必要がある。

void SetHapticStepMode ( PHHapticEngineDesc::HapticStepMode  mode)
引数
modeHapticStepMode