and

パーツ形状定義


 
パーツ形状定義の解説 総合

はじめに
 このシステムは基本的に「形状データ」を「テキスト形式」で保持します。
ファイルの拡張子は「.fig」です。
 「テキスト形式」には2種類の構文が用意されています。
  (1)TAB区切り、カンマ区切り(CSV)の形式でエクセルとの親和性に重点を置いた形式です。
  (2)タグベース、項目名称指定の形式でXMLとの親和性に重点を置いた形式です。
 このふたつの構文はひとつの「fig」ファイルの中で混在できます。

 構文は、行単位を基本にして、{行と}行を使って、行の親子関係を定義します。
 1行には、基本形状を記述する「パーツ」と、それらを統括する「トランク」を一つだけ記述できます。
 1行に複数のオブジェクトを記述する事は出来ません。

●「トランク」は図形の大きな単位でTVや車に相当します。「パーツ」はスイッチやタイヤに相当すると考えてください。
「トランク」は
trunk
 と宣言します。後に続くパラメータは適時必要なものを記述します。例えば、原点からX軸方向に3m離れた場所に配置する時は、
trunk,3000,,
 となります。


●基本形状の「パーツ」は全部で8種類用意されています。
「パーツ」の種類によって必要な要素は異なりますが、
基本的な項目は「パーツ名」「幅」「奥行き」「高さ」と「色」です。
 例えば「BOX」を定義するなら
box,,,,,,,,,,,,,100,50,200,,,,,,,255,200,200
 これで幅100奥行き50高さ200mmの赤みを帯びた白い箱が表示されます。
 これを手で記述していくのは大変なので、エクセル等の表計算ソフトの表を利用して作成できるように工夫してあります。
 エクセルシートの1行目に項目名や説明をいれたテンプレートを用意してあります。

trunk
box,,,,,,,,,,,,,100,50,200,,,,,,,255,200,200


trunk
box,,,,,,,,,,,,,100,50,200,,,,,,,255,0,0
{
trunk,50,0,200
box,,,,,,,,,,,,,100,50,200,,,,,,,0,0,255
}


区切り文字
【行の区切り】
[CR+LF]キャリッジリターンコードで行を区切ります。パーツは1行にひとつ定義されます。

【内容の区切り】
[|]パイプ(オア)
項目の中の改行の役目を持ちます。

【項目の区切り】
[,]カンマ[\t]タブの2種類は項目を区切ります。項目とは、「高さ」や「幅」などです。
項目によっては「アクション」のように、ひとつの項目に複数のデータが入ります。この場合、以下の区切り記号で区切っていきます。

[;]セミコロン
項目の中のカンマやタブの役割をします。

[:]コロン
内容をさらに細分化するときに使います。

[.]点、ドット
さらに細分化する時に使います。例えば、色のRGBの各値を繋げるときに使います。
色の例 255.128.64
ターゲットに使う例 #name=uma.and.old.>=.10

 
項目の種類 TOP
項目はいかに示す順に記述されます。最初の形指定の種類によって必要ないものや意味が変わる事があります。
0) 形パーツの形
1) 位置座標
2) 大きさ縦横高さ
3) 形状絞り
4) 蓋上下の蓋
5) 色RGB
6) 反射明るさ
7) 名前明るさ
8) その他重要項目目白押し
9) イメージ貼り付け
10) 変更禁止変更を禁止して可動させない
11) ポリゴン任意形状に厚みを加える
12) 可動範囲可動範囲を制限する
13) アクション動きを加える
14) カメラ視点を変える
15) コメントコメント
16) 肉厚筒になる
 
項目の説明 TOP
最初の項目が形指定になります。ここに予約語が入らないと、この行は処理されず、コメント行として扱われます。
予約語は [trunk][refer]と下記7形状(パーツ)です。その他、特殊なものに親子関係を明示する{}中括弧があります。 以下形状(パーツ)について、順に説明します。

 
形指定 (A) INDEX
パーツを表す予約語は全部で7つ。最初の1文字か2文字でも、判断できるものは判断します。
 
00)A 形名称 項目TOP

 形は以下の7つです。
box6面体
ball角度を指定する事で、窓型に切り出せます
hankyuu半球球の角度指定があるので、もういらないかも
cylinder角柱上下に半球による蓋を付けられます
sui角錐側面が3角形になるので、データを小さく出来ます。
poly引き伸ばし[AH]にポリゴン座標をセミコロン区切りで書き入れます
HPoly 壁面引き伸ばし [AH]にポリゴン座標をセミコロン区切りで書き入れます
kaiten回転体[AH]にポリゴン座標をセミコロン区切りで書き入れます


 
位置の指定 (B~M) INDEX
 位置の指定は「配置」「基点」のふたつで指定します。
 座標変換は、最初に「基点」、次に「配置」の順番で行います。
 「基点」変換は、「座標」「回転」の順に、「配置」は「回転」「座標」の順に行います。
 「基点」の「配置」と「座標」は、そのパーツに乗っている他のパーツに影響しません。
【変換順序まとめ】
 「基点:配置」→「基点:回転」→「配置:回転」→「配置:座標」
 ちょっとややこしいので、適当に。

 
01)B 配置位置X座標 項目TOP
 
02)C 配置位置Y座標 項目TOP
 
03)D 配置位置Z座標 項目TOP

 相対座標をミリで書き入れます。

 
04)E 配置位置での回転X軸回り 項目TOP
 
05)F 配置位置での回転Y軸回り 項目TOP
 
06)G 配置位置での回転Z軸回り 項目TOP

 回転角度を度で書き入れます。

 
07)H 基点位置X座標 項目TOP
 
08)I 基点位置Y座標 項目TOP
 
09)J 基点位置Z座標 項目TOP

 基点座標をミリで書き入れます。

 
10)K 基点位置での回転X軸回り 項目TOP
 
11)L 基点位置での回転Y軸回り 項目TOP
 
12)M 基点位置での回転Z軸回り 項目TOP

 回転角度を度で書き入れます。



 
大きさの指定 (N~P) INDEX
 大きさは、[BOX]なら「幅」「奥行き」「高さ」。[BALL]なら「直径」で指定します。このように、大きさの指定は、指定するパーツにより異なる点に注意してください。

 
13)N 幅/直径 項目TOP

box 幅
ball hankyuu cylinder sui直径
poly hpoly kaiten 意味なし

 
14)O 奥行き/直径 項目TOP

 ボックスなら奥行き、球や角柱なら奥行き方向(Y正)方向の直径を書き入れます。

 
15)P 高さ 項目TOP

 ボックスでも、球や角柱も同じく、高さ書き入れます。



 
形状の指定 (Q~S) INDEX
 ボックスやシリンダーの上端をすぼめたり、球の切り出し範囲を指定します。 また、ボックスの基準位置、球の表面の分割数を指定します。

 
16)Q 上端幅 項目TOP

 上部の幅を指定します。回転体では、下記の指定が出来ます。
kaiten回転体<断面倍率X>;<断面倍率Z>;<立体倍率X>;<立体倍率Y>;<立体倍率Z>
  省略値は<1.0>;<断面倍率X>;<1.0>;<立体倍率X>;<立体倍率X>


 
17)R 上端奥行き/作成角度 項目TOP

 上部の奥行を指定します。パーツにより、下記の指定が出来ます。
box上端奥行き
ball<経度幅>;<開始経度>;<開始緯度>;<終了緯度>
hankyuu半球<経度幅>;<開始経度>
cylinder角柱<経度幅>;<開始経度>
sui角錐<経度幅>;<開始経度>
poly引き伸ばし形状なし
hpoly 一枚壁伸ばし形状 なし
kaiten回転体なし


 
18)S 分割数 項目TOP

 球や角柱などの分割数を指定します。上記の「17)R 上端奥行き/作成角度」で指定した範囲に関わらず、一周360度に対しての分割数になります。
 ボックスの場合は、
100の位X方向オフセット0:原点 1:中点 2:先端
10の位Y方向オフセット0:原点 1:中点 2:先端
1の位Z方向オフセット0:原点 1:中点 2:先端
となります。


 
蓋の指定 (T~V) INDEX
 シリンダーや錐の上下端に半球のキャップを取り付けます。  また表面の仕上げにマットやグローをかけたり、ワイヤー表示にします。

 
19)T 下端蓋 項目TOP

 下部に蓋をします。
マイナス蓋をつけません。データ節減に役立ちます。
ゼロ平らな蓋をつけます普通です
ゼロ超過半球の蓋をつけます半球の高さを、下部半径に対する比率で書き入れます。

 
20)U 上端蓋 項目TOP

 上部に蓋をします。
マイナス蓋をつけません。データ節減に役立ちます。
ゼロ平らな蓋をつけます普通です
ゼロ超過半球の蓋をつけます半球の高さを、下部半径に対する比率で書き入れます。

 
21)V 表面仕上げ 項目TOP

 表面の仕上げを指定します。
0マット平坦に見えます。
1グロー丸みを帯びて見えます。球や円柱で降下絶大です。
2ワイヤーワイヤーフレームでも、グローは効かせられます(=3)。



 
色の指定 (W~Y) INDEX
 色はRGB(赤、緑、青)の数値で指定します。数値は0から255の範囲の整数で指定します。

 
22)W 赤成分 項目TOP

 赤の色の明るさを0~255で指定
 
23)X 緑成分 項目TOP

 緑の色の明るさを0~255で指定
 
24)Y 青成分 項目TOP

 青の色の明るさを0~255で指定



 
光の反射程度の指定 (Z~AC) INDEX
 色の明るさとは別に、反射程度指定することで、物体の明るさを調節できます。  通常は1ですが、ゼロに近づけると暗く、1以上にすると明るくなります。  5以上にすると、元の色そのものが表現され、3次元性が失われます。

 
25)Z 反射率 環境光に対して 項目TOP

 遠くでも近くでも同じ明るさになる、反射率です。環境光は、ライトの設定で一番上のバーで変更できます。デフォルトで環境光はゼロですが、なぜか反応します。
 
26)AA 反射率 光源光に対して 項目TOP

 真上から来る並行光の太陽光と、カメラについているスポットライトに対する反射率です
 
27)AB 鏡面率 項目TOP

 「ピカー」と光る反射の範囲を指定します。数値が大きいほど、反射の範囲が広がります。
 
28)AC 透過率 項目TOP

 <1で半透明になります。  =1で全く透明になり見えなくなります。見えなくてもヒットは出来るので、アクション用に利用します。
 =2でヒットも出来なくなります。トランクを集めるベースに利用します。


 
名前の指定 (AD~AE) INDEX
 パーツの名前は兄弟に擬人化されて使われます。弟は兄の座標系で存在します。
 兄は一人しか指定できませんが、弟は何人でも持つことは可能です。
 
29)AD 自分の名前 項目TOP

 名前が付いていないときは、必要になると勝手に付けられてしまいますが、いつでも変更できます。
 
30)AE 兄の名前 項目TOP

 この名前を持つパーツが、同じトランク内にいる場合、このパーツは兄に乗っかっていると見なされます。


 
その他の指定 (AF~AM) INDEX
 その他で括っていますが、「イメージの貼り付け」、「ポリゴン」、「アクション」など重要な項目が目白押しです。
 
31)AF イメージの貼り付け INDEX

【構文】
C;<貼り付ける面の番号>;<イメージファイル名>;その他;;;;;;;;
で指定します。<>は項目を際立たせるだけのもので、意味はありません。
最初のCは、以下のセミコロン列がイメージ指定であることを意味します。

【その他;;;;;;;;について】
;<イメージの横幅>;<高さ>;<R>;<G>;<B>;<横オフセット>;<縦オフセット>
を指定することが出来ます。全て省略可能です。
;<イメージの横幅>;<高さ>は省略すると、貼り付ける面の大きさと同じになります。
;<R>;<G>;<B>は省略すると、255;255;255になります。
;<横オフセット>;<縦オフセット>は、省略するとゼロになります。

【省略テクニック】
<イメージファイル名>は省略すると、<R>;<G>;<B>で指定された色で面の色を変える事が出来ます。

詳しくはイメージ貼り付けに記載。
 
32)AG 変更禁止 INDEX

 マウス操作やアクションによって座標や回転に変更が加えられた時に、動かしたくない項目を指定します。
 この設定により、引き戸のようにX方向しか動かしたくないものなどが、不用意に妙な位置に移動することを防いで、操作をし易くします。
【構文】
 A;1;x;x;x;x;x;x;x;x;x;x;x;
最初のA;1でデフォルトが1(変更禁止)である事を宣言しています。
続くxは順番に、
「配置:X座標」「配置:Y座標」「配置:Z座標」
「配置:X回転」「配置:Y回転」「配置:Z回転」
「基点:X配置」「基点:Y配置」「基点:Z配置」
「基点:X回転」「基点:Y回転」「基点:Z回転」
となります。
ここで、xには0(ゼロ)を書き入れます。1の場所にはなにも書く必要はありません。

 
33)AH 2Dポリゴン INDEX

 [POLY][HPOLY]パーツで定義する形状ポリゴン座標を記述します。
【構文】
x1;y1;x2;y2;x3;y3;;;;;x(n-1);y(n-1);x(n);y(n)
セミコロンを区切り文字にして、XY座標を反時計回りになるように書き並べます。

 
34)AI 可動範囲 INDEX

 可動する範囲を制限します。  たとえば、ドアが壁を破って一周してしまうような事態を防げます。
【構文】
A;<可動箇所>;<最小>;<最大>;
セミコロンを区切り文字にします。
<可動箇所>には
dx「配置:X座標」dy「配置:Y座標」dz「配置:Z座標」
rx「配置:X回転」ry「配置:Y回転」rz「配置:Z回転」
odx「基点:X座標」ody「基点:Y座標」odz「基点:Z座標」
orx「基点:X回転」ory「基点:Y回転」orz「基点:Z回転」
の12種類が指定できます。
<最小>;<最大>の片側が無制限の場合はfreeの文字を書き入れます。
<最小>;<最大>は順が入れ替わっても大丈夫ですが、freeが有る場合は、だめです。


 
35)AJ アクション INDEX

 可動箇所を動かします。トリガーにはマウスダウンかヒットアクションが有効です。  たとえば、ドアを叩くとドアが開くとか。
 詳しくは、アクションを参照してください。

【移動構文】
m;<可動箇所>;<初期値>;<終了値>;<開始時刻>;<終了時間>;
セミコロンを区切り文字にします。
<可動箇所>には
dx「配置:X座標」dy「配置:Y座標」dz「配置:Z座標」
rx「配置:X回転」ry「配置:Y回転」rz「配置:Z回転」
odx「基点:X座標」ody「基点:Y座標」odz「基点:Z座標」
orx「基点:X回転」ory「基点:Y回転」orz「基点:Z回転」
の12種類が指定できます。
<初期値>にはnowの文字で現在の値を指定する事ができます。 <終了値>にはadd+またはadd-で変化量を指定することができます。 <開始時刻>はこのパーツがヒットされた時刻からのオフセット秒になります。 <終了時間>は<初期値>から<終了値>へ変化させる時間を秒で指定します。

【ヒット構文】
h;<ターゲット>;<ヒット時刻>;<掛ける時間>;<ダミー>;<クリック指定>;
<ターゲット>を、このパーツがヒットされた時刻から<ヒット時刻>秒後にヒットします。


 
36)AK カメラ INDEX

 特殊機能としてカメラの機能をパーツに加える他に、ポーズ機能を加える働きもあります。
【カメラ構文】
<機能コード>;<注視点までの距離>

<機能コード>
0特殊機能なし普通のパーツです
1カメラ機能ONカメラ機能の付いたパーツになります。カメラを動かすと、パーツが動きます。
2兄連動カメラ機能ONカメラを動かした時に、自分ではなく兄を動かします。
4ポーズ記録ONポーズ設定で、ポーズ対象パーツになります。これがOFFの場合、ポーズ指定されても動きません。
<注視点までの距離>
回転して見る時の中心までの距離
 
37)AL コメント INDEX

 コメントを書き入れます。書き入れたコメントは、[CTRL]キーを押しながら、マウスをパーツの上に持っていくことで見ることが出来ます。
 長い文章の時は、アンダーバーをふたつつなげる事で、改行することができます。
__アンダーバーアンダーバー改行


 
38)AM 肉厚 INDEX

 [Ball][Hankyuu][Cylinder][Sui]の肉厚を指定して、筒状にすることが出来ます。
【構文】
<肉厚>;<上部肉厚>


 
39)AN 影とヒット INDEX

 影の生成ON/OFF と ヒットのON/OFF
【構文】
<影 0:作成 1:なし>;<ヒット 0:する 1:しない>