Other Types, Functions

 

リファレンス目次

レコード

P3Dファイルヘッダ TP3DHeader
パーツ情報 TP3DPart
ポーズ情報 TP3DPose
モーション情報 TP3DMotion

 

 

レコード、列挙型

TP3DHeader 

TP3DHeader = record
  Signature:String;   //バージョン(本モジュールでは未使用)
  ROKFileName:String; //読み込むべきROKファイル

  Optimize:Boolean;   //最適化フラグ(本モジュールでは未使用)
  Erase3Face:Boolean; //三面消去フラグ(本モジュールでは未使用)
  Smoothing:Boolean;   //スムージングフラグ
  SmoothingAngle:Single;  //スムージング角度

  Origin:D3Dvector;   //原点(本モジュールでは未使用)
  PartCount:Integer;      //パーツ数
  ScaleFactor:Single; //スケールファクタ
end;

 P3Dデータ全体についての情報を定義します

 

TP3DPart 

TP3DPart = record
  ID:Integer;                        //パーツID
  GroupIndex:Array[0..3] of Integer; //形状データとして使用するROKファイル内のグループ番号
  GroupCount:Integer;                //形状データとして使用するROKファイル内のグループ数(↑から生成)
  SymmetryStatus:Integer;            //対称性についてのフラグ(本モジュールでは未使用)
  Position:D3DVector;                //標準姿勢での位置
  Orientation:TQuaternion;           //標準姿勢
  ParentID:Integer;                  //親パーツのID(-1で無し)
  SymmetryID:Integer;                //対称パーツのID(-1で無し)
  Name:String;                       //パーツ名
end;

 人体モデルを構成する個々のパーツ(ボーン)を定義します

 

TP3DPose 

TP3DPose = record
  Name:String;                       //ポーズ名
  PartCount:Integer;                 //使用するパーツの数
  Position:D3DVector;                //親無しパーツの位置
  Orientations:Array of TQuaternion; //各パーツの姿勢
end;

 1つのポーズを定義します。ポーズは、各パーツの位置・姿勢によって定義されます。

 

TP3DMotion 

TP3DMotion = record
  Name:String;             //モーション名
  PartCount:Integer;       //使用するパーツの数…多分、TP3DHeaderのPartCountと同じ
  FrameCount:Integer;      //キーフレーム数
  RepeatFlag:Boolean;      //繰り返しフラグ
  Interval:Single;         //周期[秒]
  Poses:Array of TP3DPose; //各キーフレーム毎のポーズ

  //以下は内部での計算用
  //モーションのDFT係数(時間軸にキーフレーム数を取って、各キーフレームにおける位置
  DFTp:Array of D3DVector; 
  //DTFq[i,j]...DTFq[i,x]はi番目のパーツのDFT係数
  DFTq:Array of Array of TQuaternion;
  //姿勢について、最初のフレームと最後のフレームで内積がゼロ以上である(DFTの方法を少し変える必要アリ)
  fDFTq:Array of Boolean; 
end;

 1つのモーションを定義します。

 モーションは複数の「キーフレームにおけるポーズ」、および、モーションの周期によって定義されます。