and

アクションの設定


 
『アクション機能』は、物に動きを与えます。
 
アクションコード一覧 アクション
1)移動・回転・・・・・・・・・・ターゲットを動かします。
2)視線の移動・・・・・・・指定カメラの位置に、視線を移動します。
3)ヒットトリガー・・・・・・そのパーツをマウスでクリックしたのと同じ効果を与えます。
              さらに拡張ターゲット指定で、ジャンプする、ファイルを開く、Webを開くなどができます。 


 
アクションの解説 アクション

 ヒットトリガーにより発行される種々の指令を「アクション」と呼びます。
「アクション」は個々の「パーツ」が個々別々に保持し、別々に機能します。
形状データの[35]番に記述されます。
「手を動かす」、「前に進む」、「ドアが開く」などの動きを指示するものと考えられます。
この機能により、ドアの開閉に伴う干渉のチェックや、クレーンの設置位置の確認などを効率的に行うことができると期待されます。
大文字小文字の区別はありません。アクションコードは3種類が用意されています。
これらは、これらを含むパーツをヒットすることで、発動します。

アクション文字列


 <アクションコード>;<パラメータ>;<パラメータ>;|<アクションコード>;<パラメータ>;
 の形式で記述します。<パラメータ>の数は<アクションコード>により異なります。
 パラメータは<;>セミコロンで区切り、アクションは<|>縦棒で区切ります。
 <アクションコード>の種類は現在3種類程度(m,c,h)です。
 <パラメータ>の中で特殊なものに、<ターゲット><項目コード><参照値>があります。これらは各アクションの共通パラメータです。 例
m;trunk;dx;now;1200;0;1;|c;;0;2;1;|

文法

<アクションコード>;<パラメータ>;<パラメータ>;|<アクションコード>;<パラメータ>;
<アクションコード> アクションの機能を示すコードで、1文字のアルファベットで指定します。
大文字小文字は区別されません。
<パラメータ> アクションコードにより意味が変わります。


 
<ターゲット> アクション解説

<ターゲット>は次のように4つの項で指定します。
<項目名><演算子><内容>(<パーツ名称>)
例えば、
#name=door(nob1)
のように書きます。この例では、#nameが<項目名>です。#の付いた項目名は予約された項目名です。追加する項目名には付けないようにします。
type=door(nob)
と書くと、typeが<項目名>になります。

【自分を指すには】
自分をターゲットにしたいときはトランクならtrunkまたは(trunk)と書きます。
パーツなら パーツ名 か (パーツ名) と書きます。
自分自身なら 何も書かない か () を書きます。

【開始位置】ターゲットの開始位置はルートです。但し、
最初に[-]マイナスを付けると自分以下(自分を含む)に限定されます。
-#name=door(nob1)
[+]を付けると、自分の親以下(親を含む)に限定が拡大します
+#name=door(nob1)

【項目名】#nameが<項目名>です。

【演算子】=が<演算子>になります。

【内容】
<演算子>の次に<内容>が来ます。この例では、doorです。内容は基本的に文字列ですが、演算子が.ge.のように小文字の場合は、実数として処理されます。
内容の後には括弧で括って、パーツを指定できます。省略すると、トランクやパーツが適宜選択されます。
適宜とはどういうことかというと、自分自身が対象になった場合に、色などは「トランク」にも「パーツ」にも同じ属性があるので、どちらが指定されたのかわからなくなります。この時は、パーツが優先しますので、そうしたくないときは、trunkと明示します。
トランクかパーツを明示するときは、()の中に、トランクならtrunk、パーツなら名前を入れます。

【ワイルドキャラクター】
名前や内容には、全てに適合するという意味で「*」を使うことができます。 全てのトランクをターゲットにするときは
「*=*」となります。


インサイドターゲット記述
<項目名>
 「属性」タグのページの「項目」欄の文字列です。頭に#の付いている最初の6個は予約項目で、全ての「トランク」に必ず付いています。
 ユーザーが追加する項目には、頭に#を付けないようにしてください。

<演算子>
 <項目名>で指定した項目の内容と次に記述された<内容>を比較する演算子です。
演算子の種類は、【数値で比較する演算子】には
.eq. 同じ値
.ne. 違う値
.ge. 以上
.gt. 超過
.le. 以下
.lt. 未満
が用意されています。
【文字で比較する演算子】は、演算子を大文字で書きます。
.EQ. または .==. または = 文字列比較で同じ
.NE. または .!=. 文字列比較で違う
.GE. 文字列比較で以上
.GT. 文字列比較で超過
.LE. 文字列比較で以下
.LT. 文字列比較で未満


<内容>
 比較に使う数値や文字列です。指定しないと、ヌル(無い状態)かゼロが使われます。
 *を使うと、何でもOKという事になります。
<パーツ名称>
 対象となったトランクのどのパーツを対象とするかを()で括って指定します。()の中がターゲットのパーツです。
 (*)と書くと全てのパーツが対象になります。
 (trunk)と書くと、トランクが対象になります。
 <パーツ名称>はターゲットの中に1回だけ指定出来ます。

【条件の複合】
<項目名><演算子><内容>がひとつの条件設定ですが、これを複数個繋げて、複雑な設定も可能です。
 繋げる方法としてANDとOR演算子が要されています。左から順に処理されるだけで、括弧を使って、順番を変えることは出来ま千年。
 【結合子】
 .and. AND結合(かつ結合)
 .or. OR結合(または結合)
 結合子と条件の間に特別な区切りはいりません。

#name.EQ.abc(trunk).and.size.gt.200.3.or.#name.EQ.def
のように繋ぎます。



 
<項目コード> アクション解説

 <項目コード>以下の文字または、項目番号、または項目記号です。

項目番号 <項目コード> 内容
1 dx 配置位置X座標
2 dy 配置位置Y座標
3 dz 配置位置Z座標
4 rx 配置回転X軸回り
5 ry 配置回転Y軸回り
6 rz 配置回転Z軸回り

 どうして位置がdなのか、positionのpの方がわかり易いではないか。と突っ込みを入れたかた。ピンポン!。世の中に往々にして存在する不可思議の存在理由がここにあります。
 記号は忘れてしまえば、唯の文字列。番号ははじめから「?」ですが、対応表を見ながら読み書きすればいいだけの事なので、番号の方がいいですね。作って損したケースです。


 
<参照値> アクション解説

 <参照値>は予約された変数名で、その時々の値を参照します。

now 現在の値
min 制限項目で指定された最小値
max 制限項目で指定された最大値
add <終了値>で使用できる<開始値>からの相対値
Add3000 と書くと<終了値>は、<開始値>に3000足された値になる。




 
EYE機能(サングラス) アクション解説

 通常は、視線は独立で、ものの動きに左右されませんが、カメラ属性(形状項目番号36)1または2のパーツは「サングラス」をかけることで、視線を独占することが出来ます。この状態で、パーツが移動すると、視線もパーツに合わせて移動します。
これをONにするには、<視線の移動>アクションで、スイッチを1にするか、画面で、カレントオブジェクト(赤いTシャツ)が指定されているときに、ツールバーのサングラスボタンをア押すか、画面の中のカメラを右クリックして、「EYE」を選択します。
EYE機能は、視線を変更する処理が優先して行われたときに自動的に外れます。


 
カレントオブジェクト アクション解説


 選択されているオブジェクトを差します。選択されているオブジェクトがあるときは、ツールバーの「赤いTシャツ」が押された状態になります。
これを解除するには、「赤いTシャツ」ボタンを押すか、画面の中の何も無いところをダブルクリックします。


 
1)移動・回転 アクションコード一覧

M;<ターゲット>;<項目コード>;<開始値>;<終了値>;<開始時間>;<行動時間>;<移動パターン>;
M2;<ターゲット>;<項目コード>;<開始値>;<終了値>;<開始時間>;<行動時間>;<移動パターン>;

M シングルクリックで反応する
M2 ダブルクリックで反応する
<ターゲット> ご存知ターゲット
<項目コード> 項目コード
<開始値> はじめる値を<参照値>で指定します。
<終了値> 終了時の値を<参照値>で指定します。
<開始時間> ヒットトリガー発生後何秒おいてアクションを開始するかを指定します。
<行動時間> アクションを終わらせるまでの時間を秒で指定します。
<移動パターン>0:急発進から減速 1:等速 2:ゆっくり発進して加速

例:
m;kind=cat(trunk);rz;now;max;0;1;2
属性項目[kibd]の内容が[cat]のトランクの、回転角z[rz]を、現在位置[now]から最大回転角度[max]まで、今[0]から1秒[1]かけて、変化させる。動きは2:[ゆっくり発進して加速する]タイプ。
m;R_HAND;4;0;30;0;1;1
このトランクの名前が[R_HAND]のリーブス、回転角x[4]を、0度[0]から30度[30]まで、今[0]から1秒[1]かけて、変化させる。動きは1:[等速]タイプ。


 
2)視線の移動 アクションコード一覧
C;<ターゲット>;<開始時間>;<行動時間>;<EYE機能>;<レンズ>;<移動パターン>;
<ターゲット> ご存知ターゲット
<開始時間> ヒットトリガー発生後何秒おいてアクションを開始するかを指定します。
<行動時間> アクションを終わらせるまでの時間を秒で指定します。
<EYE機能> ターゲットのEYE機能(サングラス)をON/OFFします。−1:OFF 0:変えない 1:ON
<レンズ>   焦点距離[mm] 標準レンズは50mm 広角28mm 望遠100-300-500が目安。50mmが一番人間の見た感じに近いと言われています。
<移動パターン>0:急発進から減速 1:等速 2:ゆっくり発進して加速

 ターゲットの指定カメラの位置に、視線を移動します。移動後、そのカメラのEYE機能をON/OFFします。

例:
c;action=door(open);1;4;1;
ターゲット[action=door(open)]のカメラを1秒後にヒットして、
そのカメラまで4秒かけて視線を移動させない。移動後、そのカメラのEYE機能をONにしなさい。

 
3)ヒットトリガー アクションコード一覧

H;<ターゲット>;<ヒット時間>;<掛ける時間>;<ダミー>;<クリック指定>;
H2;<ターゲット>;<ヒット時間>;<掛ける時間>;<ダミー>;<クリック指定>;


H シングルクリックで反応する
H2 ダブルクリックで反応する
<ターゲット> ヒットするターゲットを指定します。
<ヒット時間> 自分がヒットされた後何秒おいてターゲットをヒットするかを指定します。
<掛ける時間> 無視
<ダミー>   無視
<クリック指定> 0:相手を選ばない 1:Hだけを押す 2:H2だけをおす



 ターゲットに対してヒットトリガーを発生させます。
 そのパーツをマウスでクリックしたのと同じ効果を与えます。そのパーツに「移動」や「カメラ」などのアクションが組み込まれていれば、それらが、発動します。

例:
h;action=door(open);3.5;
ターゲット[action=door(open)]を3.5秒後にヒットしなさい。


ヒット命令だけにある<拡張ターゲット>
ターゲット>の前にセミコロンなどつけずに直接書き入れる[]でくくられた文字列を<拡張ターゲット>と呼びます。
<拡張ターゲット>には

[pose=xxxx]*=*;t1;mm xxxxはポーズ名。*=*は全部対象にする場合です。<ターゲット> t1は開始時刻。mmは変形時間(秒)。
リーブスの位置を変更します。
ポーズとして登録されている形態に移行します。
リーブスの「形状」の36(AK)に4の入っているトランクがポーズ登録されます。
[stage=xxxx]*=*;t1;; xxxxはステージ名。*=*は全部対象にする場合です。<ターゲット> t1は開始時刻。
トランクの位置を変更します。
ステージとして登録されている形態に移行します。
トランクの「配置」の36(AK)に4の入っているトランクがステージ登録されます。
[excoms=xxxx]*=*;t1;; xxxxはEXコマンダー名。*=*は全部対象にする場合です。<ターゲット> t1は開始時刻。
EXコマンダーに登録されているビューに移行します。
視点注視点の位置、カメラのレンズを変更します。
移動時間は登録されている中身で決まります。excom=chposと同じです。
[jump=xxxx.fig]kkkk=cccc(llll);t1;; ジャンプ。
t1秒後にファイルxxxx.figを呼び出します。
呼び出し直後にターゲット(項目kkkk,内容cccc,リーブス名llll)をヒットします。書かなければヒットしません。
[open=xxxxx.eee] ファイルxxxxx.eeeを登録されたソフトで開く。例えばワードなら
[open=xxxxx.doc]
[explore=xxxxx\yyy] xxxxx\yyyはパス付きのフォルダー名称。
フォルダーを開く。データと同じ所なら
[explore=.\]
と書く。
[web=xxxx.yy.zz] xxxx.yy.zzはURL。
インターネットエクスプローラでWebサイトを開く。
例えば、クラシックCADのホームぺーじなら
[web=http://dracad.co.jp]
[jimaku=1:文字]
凝った指定なら
[jimaku=1:文字:0:0:24:#ff0000::-1:1:1]
以降
[jimaku=1:文字]
だけで設定は引き継がれます。
字幕に文字を表示します。消すまで、表示されます。
構文
コロンで区切ります。
jimaku=<jnum>:<表示文字>:<オフセットX>:<オフセットY>:<文字高さ>:<文字の色>:<フォント(未対応)>:<バックグランド色>:<文字原点(未対応)>:<画面原点>:<枠有無>:<イメージ幅(未対応)>:<イメージ高さ(未対応)>:<改行幅(未対応)>

<jnu>:ゼロから15までつかえます。デフォルトで画面原点は、
   8 左上 9 中央上 10 右上
   4 左中 5 中央中 6 右中
   0 左下 1 中央下 2 右下
   になっています。
   一度<画面原点>を指定すると、省略しても、前と同じ場所にでます。
<表示文字>:
   中にカンマ、コロン、セミコロン、縦棒等は含めないでください。
<オフセットX>:
   イメージのドット単位で指定します。<画面原点>からの距離です。
<オフセットY>:
   イメージのドット単位で指定します。<画面原点>からの距離です。
<文字高さ>:
   イメージのドット単位で指定します。小さいイメージなら50、大きいイメージなら100くらいで綺麗に見えます。
   デフォルトは100です。 <文字の色>:RGB順で指定します。
   「#ff0000」で赤になります。
   「255,0,0」はカンマを使うのでダメです。この場合は「255.0.0」のように小数点を使ってください。
   省略は黒です。
<フォント(未対応)>:
   Windowsのフォント名を正確に入れましょう。(半角全角を間違えないように)
   省略は「MS 明朝」です。 <バックグランド色>:
<枠有無>を1にした時の枠の色です。
   -1で背景色と同じになります。
   省略は白です。
<文字原点(未対応)>:
   8 左上 9 中央上 10 右上
   4 左中 5 中央中 6 右中
   0 左下 1 中央下 2 右下
<画面表示位置>:
   8 左上 9 中央上 10 右上
   4 左中 5 中央中 6 右中
   0 左下 1 中央下 2 右下
<枠有無>
   1を指定すると文字の背景に枠を書きます。デフォルトはゼロです。
<イメージ幅(未対応)>
   省略すると文字数から自動計算します。文字フォントによって、過不足が出ますので、ドット単位で入力して補正できます。
   また、大きなイメージの一部に文字を書く時にも有効です。
<イメージ高さ(未対応)>
   省略すると行数から自動計算します。
<改行幅(未対応)>
   デフォルトは、文字高さの2割です。
[jcom=xx] システム内臓コマンド
[jcom=xx:mm]で指定
mmの部分は、
0:永久実行
1:マウスを放すまでの一時的な実行
になります。

xxの部分
操作 処理 フルスペル 省略形 解説
トランク移動操作 XY移動 move_trunk_xy mtxy XY方向の移動操作
X移動 move_trunk_x mtx X方向の移動操作
Y移動 move_trunk_y mty Y方向の移動操作
Z移動 move_trunk_z mtz Z方向の移動操作
トランク回転操作 XZ回転 rotate_trunk_xz rtxz XY軸周りの回転操作
X回転 rotate_trunk_x rtx X軸周りの回転操作
Y回転 rotate_trunk_y rty Y軸周りの回転操作
Z回転 rotate_trunk_z rtz Z軸周りの回転操作
リーブス移動操作 XY移動 move_leaves_xy mltxy XY方向の移動操作
X移動 move_leaves_x mlx X方向の移動操作
Y移動 move_leaves_y mly Y方向の移動操作
Z移動 move_leaves_z mlz Z方向の移動操作
リーブス回転操作 XZ回転 rotate_leaves_xz rlxz XY軸周りの回転操作
X回転 rotate_leaves_x rlx X軸周りの回転操作
Y回転 rotate_leaves_y rly Y軸周りの回転操作
Z回転 rotate_leaves_z rlz Z軸周りの回転操作
その他操作 視点回り込み VIEW_AROUND va 注視点の周りを回るように視点を変える
歩く VIEW_WALK vw 歩くように視点を変える
見回す VIEW_HEAD vh 見回すように視点を変える
ここに立って見る VIEW_CENTER vc 立ち位置を指定 高さ1.5m
空から見る VIEW_SKY vsky 視点を上空100mまで一気に上昇
最大表示 DISP_MAX dm 図形全体が見える位置まで後退
再表示 DISP_REDRAW dr 表示を正しく整える
停止 PLAY_STOP ps アクションを停止。ツバメ飛翔も停止します。
ツバメ飛翔 VIEW_SWALOW vswa ツバメのように舞って見る。アクションとの共存は出来ません。アクションは停止されます。
ツバメ飛翔停止 VIEW_SWALOW_OFF vswaoff ツバメ飛翔を停止
選択解除 SELECT_OUT so 選択トランクを解除
サングラス設定 EYE_SET es このオブジェクトのカメラと視点を連動させる
サングラス設定解除 EYE_OUT eo カメラと視点を連動を解除
ワイヤフレーム DISP_WIRE dw ワイヤフレームで表示
半透明 DISP_TRANSPA dt 半透明で表示
[excom=xx:yy:zz:aa:bb:cc]
chdisp: <ターゲット>:<ON/OFF>:<子供>
表示非表示の切り替える
h;[excom=chdisp:#name=kinko(*):0:1];
mkitem: <ターゲット>:<作成する項目名>:<作成する内容>:<作成する単位>:<作成ルール>:<開始ターゲット>
項目を作成・削除する
<作成ルール>0:項目作成、内容セット
       1:項目あれば内容そのまま、無ければ作成、内容セット
       2:項目あれば内容セット
       3:項目削除
h;[excom=mkitem:#name=kinko:nedan:2000:[yen]:1:#name=yamadaya];
chpara: <ターゲット>:<パラメータ番号>:<条件値>:<セット値>:<パラメータ番号>:<条件値>:<セット値>:(繰り返し)
「形状」の項目を一瞬で変更する
<パラメータ番号>1,2,3でもA,B,AAでもOK。
<条件>現在値に一致するものだけが対象になる。省略すれば無条件で変更。
<セット値>セットする値や文字
h;[excom=chpara:#name=kinko(*):13:200:300:14:210:300:18:209:300];
chpos: <目.x>:<y>:<z>:<注視点.x>:<y>:<z>:<移動時間>:<レンズ>:<移動パターン>
カメラ位置を変更する。
<目.x,y,z>目の位置座標
<注視点.x,y,z>注視点の位置座標
<移動時間>何秒で完了するか。
<レンズ>焦点距離[mm] 省略すれば、変わらない。標準レンズは50mm 広角28mm 望遠100-300-500が目安。50mmが一番人間の見た感じに近いと言われています。
<移動パターン>0:急発進から減速 1:等速 2:ゆっくり発進して加速
h;[excom=chpos:1000,1000,1800,1000,2000,1800,3,50,0];
popview: <移動時間>:<レンズ>:<移動パターン>
ビューをカメラ移動前に戻します。
<移動時間>何秒で完了するか。
<レンズ>焦点距離[mm] 50[mm]が標準レンズ。省略すれば、変わらない。カメラ移動前に戻すには、負の数値を入れます。
<移動パターン>0:急発進から減速 1:等速 2:ゆっくり発進して加速
下記のようにカメラに設定しておくと5秒後に元に戻ります。
c;;0;1;1
h;[excom=popview:1:-1:0];5
hit: 未完
eye: 未完
jimaku: 未完
eyepos: 未完
selectview: 未完
window: 未完
pose: 未完
stage: 未完
[stop] アクション停止
などがあります。
全体の構文は
h;[拡張ターゲット]<ターゲット>;<ヒット時間>;
となります。ヒットは有効なので、[ターゲット]を書き込むと<ターゲット>も実行します。