Motion Control :: Common Functions
オブジェクト・モーションコントロールの仕様と共通機能
操作手順
オブジェクト・モーションコントロールを利用する場合の手順は以下で概ね共通化されています。
- モーションテンプレートを選択
- インスタンス ( Target ) を選択
- インスタンスの集合に名前 ( Motion Group Name ) を付ける
- パラメータを送信する
テンプレートの選択
大別すると4種類のモーションテンプレートが選択できます。
- Null
- Horizontal | Vertical
- Orbital
- MoveTowards
それぞれのモーションテンプレートには派生型があり、特に派生型の種類が多いのは Horizontal | Vertical です。
- Horizontal :: Wrap
- Horizontal :: Flip
- Vertical :: Wrap
- Vertical :: Flip
Sinewave は群に対して命令を行う設計になっているため、単純な縦横移動の派生ではなく発展型という位置づけです。
- Horizontal :: Wrap :: Sinewave
- Horizontal :: Flip :: Sinewave
- Vertical :: Wrap :: Sinewave
- Vertical :: Flip :: Sinewave
Orbital や MoveTowards は群に対して「群として働く」パラメータ設定以外に「ターゲット」という概念を持つ動作です。
- Orbital :: OwnXy
- Orbital :: TgtXy
- MoveTowards :: Tgt
- MoveTowards :: TgtArr
- MoveTowards :: SwapTgt
- MoveTowards :: SwapEPs
Orbital や MoveTowards は周回や追従 ( 追跡 ) という、連携するためのインスタンス情報、あるいはターゲット座標などを必要とします。このため共通操作手順の中に「周回の中心となるインスタンス」や「目標座標を持つインスタンス」など追加の設定が必要になります。
共通基本命令
モーションテンプレートは共通化された基本命令を持っています。
モーションを持たない Null モーションは例外なので Stop や Sleep は機能しませんが、それ以外の全モーションで以下4つ、Reject
、Destroy
、Stop
、Sleep
が利用できます。
基本命令 :: Reject
登録済みモーショングループを動作コントローラから登録抹消する基本命令です。
モーショングループ名を指定してグループ全体を登録抹消する ByName 系、選択されたインスタンスに絞って個別に登録抹消する Direct 系、二種類があります。
TimeBound
値に応じて一定時間経過後に命令実行される Timer 機能付き。
共通化された基本命令の中では最上位の命令、他命令の影響を一切受けない、命令発行後に TimeBound など条件変更や実行の取り消しができない仕様。
基本命令 :: Destroy
単独で利用されることはない。インスタンスを破壊する命令。
Reject と Destroy を組み合わせた Reject + Destroy 命令で利用されます。
モーション登録されたインスタンスを登録抹消前にインスタンス破壊されるのは困るので、先に Reject し次いで破壊がセットになっています。
基本命令 :: Stop
モーションを一時停止 ( Stop ) する。
停止命令は Sleep と似ていますが、動作を再開する前提で一時停止する Sleep に対して Stop 命令は Sleep 命令を含めて動作停止することができる上位命令と位置付けられています。
ただし Reject 命令よりも下位なので Reject は Stop 命令で停止できません。
基本命令 :: Sleep
再開する前提でモーションを一時停止する命令。時間制限付きで停止と動作再開を繰り返し実行するため Repetition
値を持っているのが特徴。
Sleep 命令は Orbital モーションに対しては角度単位で機能する専用の Sleep :: Angluar が派生機能にあります。
ただし Orbital はパラメータ設定に Sleep を取り込んでいるため、Sleep 命令を後から発行する機会はありません。
Sleep は Stop の下位命令なので Sleep 中に Stop 命令を発行すると Sleep も含めて動作が停止されます。Stop 中は Sleep のカウンタも停止するため、Stop が解除されるまで Sleep も停止した状態を維持します。
動作拡張命令
モーションは特性に応じて固有の「動作拡張命令」を持っています。
直線移動である Horizontal | Vertical の派生とカウントされている Flip | Wrap ですが、動作を拡張するための命令なので動作拡張命令の一部でもあります。
移動量を符号反転する Reverse Movement は Null 以外全動作で適用できます。
Sinewave と Orbital は「角速度 ( Angular Velocity ) 」と「半径 ( Radius ) 」という共通概念があり、これら動作は拡張として GrowRadius
命令をそれぞれ専用の動作拡張命令として持っています。
その他、Orbital 専用として Change Target 命令があります。