Springhead Users Manual

12.9 デバッグ描画

デバッグ描画モードではPHSceneの情報だけを用いて描画が行われるので,シーングラフ構築の手間が省けます. また,剛体に加わる力などの物理シミュレーションに関する情報を可視化することができます. 一方で,予約色しか使えないなど,描画の自由 度には一定の制約が生じます.

デバッグ描画モードではFWSceneDrawPHScene関数により描画処理が行われます.

FWSceneIf

void DrawPHScene(GRRenderIf* render)

DrawPHSceneは,各剛体に割り当てられている衝突判定形状,座標軸,作用している力,接触断面などを描画します. 項目別に描画を行ったり,描画色を設定するには後述する描画制御関数を用います.

デバッグ描画時のカメラとライト

デバッグ描画においてもカメラの情報はGRSceneが参照されます. もしGRSceneがカメラを保有している場合はそのカメラのRenderが呼ばれ,視点と投影変換が設定されます. GRSceneがカメラを持たない場合は手 動で設定する必要があります.

ライトについては,もし外部でレンダラに対してライト設定がされている場合はその設定が優先され, レンダラが1つもライトを持たない場合は内部でデフォルトライトが設定されます.

個別の描画

以下の関数はDrawPHSceneから呼び出されますが,ユーザが個別に呼び出すこともできます.

FWSceneIf

void DrawSolid(GRRenderIf*, PHSolidIf*, bool)

剛体を描画

void DrawShape(GRRenderIf*, CDShapeIf*, bool)

形状を描画

void DrawConstraint(GRRenderIf*, PHConstraintIf*)

拘束を描画

void DrawContact(GRRenderIf*, PHContactPointIf*)

接触を描画

void DrawIK(GRRenderIf*, PHIKEngineIf*)

IK情報を描画

描画制御

以下の関数は描画のOn/Offを切り替えます.

FWSceneIf

void SetRenderMode(bool solid, bool wire)

void EnableRender(ObjectIf* obj, bool enable)

void EnableRenderAxis(bool world, bool solid, bool con)

void EnableRenderForce(bool solid, bool con)

void EnableRenderContact(bool enable)

void EnableRenderGrid(bool x, bool y, bool z)

void EnableRenderIK(bool enable)

SetRenderModeはソリッド描画(面を塗りつぶす)とワイヤフレーム描画(面の輪郭)のOn/Offを切り替えます.

EnableRenderは指定したオブジェクトの描画のOn/Offを切り替えます. 項目ではなくオブジェクトレベルで描画制御したい場合に便利です. objに指定できるのは剛体(PHSolidIf*)か拘束(PHConstraintIf*)です.

EnableRenderAxisは項目別に座標軸の描画を設定します. worldはワールド座標軸,solidは剛体,conは拘束の座標軸です.

conは拘束力です.

EnableRenderForceは力とモーメントの描画を設定します. solidは剛体に加わる力(ただし外力のみで拘束力は除く)

EnableRenderGridは各軸に関してグリッドの描画を設定します.

EnableRenderIKはIK情報の描画を設定します.

以下の関数は描画属性を指定するのに使います.

FWSceneIf

void SetSolidMaterial(int mat, PHSolidIf* solid)

void SetWireMaterial (int mat, PHSolidIf* solid)

void SetAxisMaterial(int matX, int matY, int matZ)

void SetAxisScale(float world, float solid, float con)

void SetAxisStyle(int style)

void SetForceMaterial(int matForce, int matMoment)

void SetForceScale(float scaleForce, float scaleMoment)

void SetContactMaterial(int mat)

void SetGridOption(char axis, float offset, float size, int slice)

void SetGridMaterial(int matX, int matY, int matZ)

void SetIKMaterial(int mat)

void SetIKScale(float scale)

SetSolidMaterialは指定した剛体のソリッド描画色を指定します. matに指定できる値は8.8節で述べた予約色です. solidNULLを指定するとすべての剛体 の色が指定された値になります. SetWireMaterialは同様に剛体のワイヤフレーム描画色を指定します.

SetAxisMaterialは座標軸の色をx, y, z個別に指定します. SetAxisScaleは座標軸の縮尺を指定します. SetAxisStyleは座標軸のスタイルを指定します.

SetForceMaterialSetForceScaleはそれぞれ力(並進力とモーメント)の描画色と縮尺を指定します.

SetContactMaterialは接触断面の描画色を指定します.

SetGridOptionはグリッドのオプションを指定します. SetGridMaterialはグリッドの描画色を指定します.

SetIKMaterialSetIKScaleはIK情報の描画色と縮尺を指定します.