HumanMDLによって作成されたP3Dファイルの読み込みと、人体モデルを制御する、TP3DFigureオブジェクトの生成(Spawnメソッド)を行います。
なぜP3Dファイルを読み込むオブジェクトと、その情報を元に人体モデルを制御するオブジェクトが分かれているのかというと、P3Dファイルに格納されているモーションデータなどは、それなりのサイズを持つので、メモリの節約を図るためです。
また、それぞれを分けることで、「見た目は違うけれど、同じ動きをする人体モデル」、も構成できるのです。
(凡例:
読み取り専用)
| P3Dヘッダ | P3DHeader | |
| 各データ | Motions | |
| MotionNames | ||
| Poses | ||
| PoseNames | ||
| Parts | ||
| PartNames |
| コンストラクタ | Create |
| デストラクタ | Destroy |
| 読み込み | LoadFromStream |
| LoadFromFile | |
| P3DFigure生成 | Spawn |
P3DHeader : TP3DHeader
現在読み込んでいるP3Dファイルについての全体的な情報を示します。
Motions[idx:Integer]:TP3DMotion
人体モデルの個々のモーションについての情報を示します。
MotionNames : TStrings
モーションの名前を格納します。Motions[idx] の名前が、MotionNames[idx]に対応します。
Poses[idx:Integer] : TP3DPose
人体モデルの個々のポーズについての情報を示します
PoseNames : TStrings
ポーズの名前を格納します。Poses[idx] の名前が、PoseNames[idx]に対応します。
Parts[idx:Integer] : TP3Dpart
人体モデルの個々のパーツ(ボーン)についての情報を格納します。
パーツの情報には、パーツ間の階層構造についての情報も含まれています。
PartNames : TStrings
パーツの名前を格納します。
Poses[idx] の名前が、PoseNames[idx]に対応します。
constructor Create;
TP3Dオブジェクトを生成します。
destructor Destroy;
TP3Dオブジェクトを解放します。
procedure LoadFromStream(source:TStream); procedure LoadFromFile(fileName:String; qdaName:String = '');
LoadFromStreamでは、ストリームsourceから、
LoadFromFileでは、ファイルfileName 、または、QDAファイル qdaName内のfileNameというIDを持ったデータから、P3Dファイルを読み込みます。
function Spawn(ROKMeshes:TSXMeshList; ParentFrame:TSXFrame):TP3DFigure;
形状データをROKMeshesで指定して、人体モデル制御オブジェクトを生成します。
生成した人体モデルを表示する際、ParentFrameの子フレームに、人体モデルの最上位のフレーム(TP3DFigure.TopFrame)が配置されます。