構造ファイルを作成および編集する

 
 
 

MOTOR では、ASCII ファイルを使ってリグのタグ付け時に使用される基本構造を確認します。構造ファイルによって、MOTOR を任意のソースからのモーション データで処理できる単純な階層が定義されます。

構造ファイルは基本ファイルと構造ファイルの 2 つから構成されています。通常、基本ファイルには単純なスケルトンのほとんどの定義が含まれ、構造ファイルにはそれ以外のボディ部分のみが含まれます。これにより、異なる構造ファイル間で同じ 1 つの基本ファイルを共有することができます。

基本ファイルと構造ファイルによって[Tagging]プロパティページのレイアウトが決定されます([Animate]ツールバーから[ツール](Tools) [MOTOR] [タグにリグ](Tag Rig)を選択)。つまり、基本ファイルの内容によって[Tag]プロパティ ページのメインとなるタブのレイアウトが定義され、構造ファイルの内容によって[Tag]プロパティ ページの[エキストラのパーツ]タブのレイアウトが定義されます。

構造ファイルを開く

基本ファイルと構造ファイルは、次の Softimage インストールパスの Addons フォルダに保存される、ASCII 形式のテキスト ファイルです。

¥Addons¥MotionTransformation¥Data¥Structures¥

ストラクチャ リスト ボックスで別のオプションを選択するには、新しい構造ファイルを定義する必要があります。ただし、別の基本ファイルの定義はオプションとなります。

構造ファイルを開くには

  • [Tag]プロパティ エディタで、[構造ファイル](Structure File)テキスト ボックスの横に表示される[編集](Edit)ボタンをクリックします。これにより、ファイルを編集できるスクリプト エディタが開きます。

    または

  • Windows のメモ帳やワードパッド、Softimage の Script Editor などの任意のテキスト エディタで構造ファイルを開きます。

構造ファイルと基本ファイルの内容

構造ファイル内の#で始まる行はコメントであるため、MOTOR では無視されます。コメント行には通常、そのセクションの目的など、役立つ情報が記載されています。

構造ファイル

次の例は、MOTOR とともに配布された Biped.structure ファイルの内容を示します。

#!XSI_CDK_Structure 2.0
# the base structure
Biped
# extra elements to add to the base structure
Head
{
	chest
	neck		child		0 1 0	0 0 1	0 0 0
	head		free		0 1 0	0 0 1	0 0 0
}

RFoot
{
	rfoot	
	rheel		child		0 0 1	0 1 0	0 0 0
	rtoe		child		0 0 1	0 1 0	0 0 0
}
LFoot
{
	lfoot
	lheel		child		0 0 1	0 1 0	0 0 0
	ltoe		child		0 0 1 0 1 0	0 0 0
}
Base file listing
# the base structure
Biped

構造ファイルは基本ファイルを表示することから始まります。ここでは、Biped.structure ファイルによって Biped.base が基本ファイルとして挙げられています。つまり、MOTOR によってこの構造ファイルが読み込まれるときに、基本ファイルが[Tag]プロパティ ページのメインのタブに、構造ファイルの残りが[Tag]プロパティ ページの[エキストラのパーツ]タブにそれぞれ読み込まれます。

基本ファイル

基本ファイルの内容では、単純なリグのほとんどの構造を定義します。

#!XSI_CDK_BASE 2.0
# the minimum requirement for a Biped is a Spine, RLeg, RArm, LLeg, and LArm 
Spine
{
	world
	cog		hip		0 1 0	0 0 1	0 2.2 0
	spineroot	child		0 1 0	0 0 1	0 0 0
	chest		free 		0 1 0	0 0 1	0 1 0
}
Pelvis
{
	cog
	pelvis		child		0 1 0 	0 0 1 	0 0 0	
}
RLeg
{
	pelvis
	rthigh		anchor		0 -1 0	0 0 1	-0.4 0 0
	rshin		child		0 -1 0	0 0 1	0 -1 0
	rfoot		friction		0 0 1	0 1 0	0 -1 0 	limits: 1 1 -5	-1 -1 5
}
RArm
{
	chest
	rclavicle	child 		-1 0 0	0 1 0 	0 0 0
	rupperarm	anchor		-1 0 0	0 1 0 	-0.4 0 0
	rforearm	child		-1 0 0 	0 1 0	-0.5 0 0
	rwrist		ik		-1 0 0 	0 1 0	-0.4 0 0
	rhand		child		-1 0 0 0 1 0	0 0 0	
}
LLeg
{
	pelvis
	lthigh		anchor		0 -1 0	0 0 1	0.4 0 0
	lshin		child		0 -1 0	0 0 1	0 -1 0
	lfoot		friction		0 0 1	0 1 0	0 -1 0 	limits: 1 1 -5	-1 -1 5
}
LArm
{
	chest
	lclavicle	child 		1 0 0	0 1 0	0 0 0
	lupperarm	anchor		1 0 0	0 1 0	0.4 0 0
	lforearm	child		1 0 0 	0 1 0	0.5 0 0
	lwrist		ik 		1 0 0	0 1 0	0.4 0 0
	lhand		child		1 0 0 	0 1 0	0 0 0
}

グループ

構造ファイルによってボーンのグループが定義されます。これらのグループは、グループ名を定義する名前と左中括弧({)で始まります。

グループ名は、グループの内容を保持するグループ ボックスの名前を定義する[Tag]プロパティ エディタで使用されます。

グループは右中括弧(})で閉じられます。

グループにはサブグループを含むことはできません。つまり、グループ内で別のグループを開始することはできません。

グループの親

グループの最初の行にはグループの親が定義されます。[ワールド](world)が親として表示されている場合は、このグループは階層のルートとなります。ほとんどのグループでは、ボーンがグループの親として表示されます。上記の例では、LLeg グループに [pelvis](骨盤)が親のボーンとして、RArm グループに [chest](胸)が表示されます。

注: 表示される親のボーンは、グループ名ではなく、ボーン名です。例のように [Pelvis] グループが [pelvis] のボーンを含んでいるように、ボーンと同じ名前でグループを定義することができます。

グループのボーン

親のボーンに続くすべての行には、この構造を構成するボーンが定義されます。

lfoot		friction		0 0 1	0 1 0	0 -1 0 	limits: 1 1 -5	-1 -1 5

この行には、次の 3 つまたは 4 つの情報が含まれます。

  • ボーンの名前

  • ボーンのタイプ

  • ボーンの向き、回転、および移動オフセット

  • 制限(オプション)

ボーンの名前

各ボーンにはそれぞれ異なる名前を付けてください。1 つの構造ファイルに同じ名前のボーンを使用することはできません。

ボーンのタイプ

ボーンには、腰、子、フリー、アンカー、IK、摩擦などさまざまなタイプを使用できます。

  • 腰: 親を含まないグローバル空間によって実行されるボーン。

  • 子: 固定のローカル移動を持つフォワード キネマティクス チャイルド。

  • フリー: 親に応じてモードと回転を変更可能なボーン。ただし、親のボーン(胸)の片方に配置されている必要があります。

  • アンカー: 子とよく似たタイプですが、ボーン チェインの開始を定義できます。

  • IK: 腕の IK の終了エフェクタ。

  • 摩擦: 脚の IK の終了エフェクタ。モーションが測定されるときや、[Retarget Adjust]プロパティ ページで歩幅が変更されるときに、四肢が脚として処理されます。

注: 腕の終了エフェクタは、[Adjust]プロパティ ページのオプションを使用して脚として動作するように引き続き設定できます。

向き、回転、およびオフセット

向き、回転、およびオフセットは 9 つの数字で構成されます。そのうちの 3 つの数字が各パラメータ用です。

  • 向きとは、グローバル座標でのボーンの向きを定義するベクトルです。たとえば、COD スパインや胸などでまっすぐ伸びるボーンは 0 1 0 と表します。

    T ポーズでは、右の腕が -1 0 0 のベクトルで負の Y グローバル軸を向きます。

  • 回転は、ボーンが位置する面を定義します。これは、IK プレーンのソルバで、プレーン アップベクターのノードの位置を確認するのに便利です。

  • オフセットは、ボーンのワールド空間の向きのオフセットを定義します。0 0 0 という値はボーンが親ボーンと同じ場所に位置し、0 1 0 という値は Y 軸で親ボーンより上に位置することを意味します。

制限

制限情報は、ボーンを制御するために使用する C3D マーカーの数を定義するために C3D インポータによって使用されます。通常は使用する必要はありません。

新しいボーンを追加する

新しいボーンは簡単に構造ファイルに追加できます。ボーンを追加するグループを選択するか、新しいグループを作成します。

  1. 新しいボーンの親となるボーンを指定します。

  2. デフォルトで使用するボーンの回転を指定します。最も簡単に操作するには、ほぼ同じ向きのボーンの設定をコピーしてください。

  3. デフォルトで使用するボーンの向きを指定します。

新しい構造ファイルを使用する

新しい構造ファイルを保存したら、[Tagging]プロパティ ページをすぐに開き、新しいファイルを選択して、[Tagging]プロパティ ページのレイアウトを定義することができます。

ヒント: お使いの構造ファイルを表示するには、C3D インポータを使用して構造ファイルを作成する方法があります。

  1. 構造ファイル フォルダで、新しい構造ファイルを MotionCapture フォルダに配置します。これにより、使用している構造ファイルが[C3D]プロパティ ページに表示されます。

  2. [Mocap to Rig]プロパティ ページを開き、C3D に切り替えます。

  3. 登録されているストラクチャ リストから[ストラクチャ](Structure)を選択します。

  4. [C3D 読み込み](Import C3D)をクリックし、C3D ファイルを選択します(どのファイルでも選択できます)。

構造ファイルは、線上に黒い点として配置されるモデルとして作成されます。