The Core Concepts of ByName Motion And Control
ASTER::Motion に関する説明書、共通操作手順、共通基本命令、動作拡張命令について。
共通操作手順
オブジェクト・モーションコントロールを利用する手順について、以下で概ね共通化されています。
- モーションテンプレートを選択
- オブジェクト・インスタンスを選択
- インスタンスの集合に名前 ( Motion Group Name ) を付ける
- コントローラにパラメータを送信する
モーション・テンプレートについて
大別すると 5 種類のモーションテンプレートが選択できます。以下では Null 以外の動作テンプレートとその特徴について説明します。
Horizontal | Vertical
Horizontal | Vertical はとてもシンプルで分かりやすい、水平・垂直方向へ進む等速直線運動です、
- Horizontal :: Wrap
- Horizontal :: Flip
- Vertical :: Wrap
- Vertical :: Flip
「仮想壁」という概念があり、設定された座標を見えない壁と見做し、壁に接触した時の動作を Flip|Wrap から選択できます。Flip は移動量を反転、Wrap は進行方向の反対側壁までワープ。
SineWave
Horizontal|Vertical に Sinewave を加えたモーション・テンプレートです。単純な縦横移動の派生ではなく、「群」に対してパラメータ設定できるという特徴を備えたモーションです。
- Horizontal :: Wrap :: Sinewave
- Horizontal :: Flip :: Sinewave
- Vertical :: Wrap :: Sinewave
- Vertical :: Flip :: Sinewave
Orbital
Orbital は「群」に加えて「ターゲット」という概念を持つ動作です。「仮想壁」は利用されません。
- Orbital :: OwnXy
- Orbital :: TgtXy
Orbital や MoveTowards は周回や追従 ( 追跡 ) など、自インスタンス以外のインスタンスをターゲットとして定め、ターゲット座標などを参照しながら移動を行います。
「周回の中心となるインスタンス」や「目標座標を持つインスタンス」など、先に示した共通操作手順に追加でターゲットに関する設定が必要になる場合があります。以下に Orbital::TgtXy の操作手順を例示します。
- モーションテンプレートを選択
- オブジェクト・インスタンスを選択
- 周回の中心となるターゲット・インスタンスを選択
- インスタンスの集合に名前 ( Motion Group Name ) を付ける
- コントローラにパラメータを送信する
MoveTowards
これまで例示された「群」、「ターゲット」に加え「追跡者」という概念が追加され、ターゲット選択やその他の機能に対して豊富なユーティリティを提供するモーションテンプレートです。
- MoveTowards
- MoveTowards :: Swap
- MoveTowards :: RefVec
共通基本命令
モーションテンプレートは共通化された基本命令を持っています。
モーションを持たない Null モーションは例外なので Stop や Sleep は機能しませんが、それ以外の全モーションで以下4つ、Reject
、Destroy
、Stop
、Sleep
が利用できます。
基本命令は ByName と Directly という二つの命令系統があり、必要に応じて開発者が選択できます。
Type Description ByName モーションコントローラに対して Motion Group Name を使って指示を出す Directly インスタンスを特定して指示を出す
基本命令 :: Reject
登録済みモーショングループを動作コントローラから登録抹消する基本命令です。
モーショングループ名を指定してグループ全体を登録抹消する ByName 系、選択されたインスタンスに絞って個別に登録抹消する Direct 系、二種類があります。
一定時間経過後に命令実行される Time-Bound 機能付き。
共通化された基本命令の中では最上位の命令、他命令の影響を一切受けない、命令発行後に Time-Bound 値など条件変更や実行の取り消しができない仕様。
基本命令 :: Destroy
単独で利用されることはない。インスタンスを破壊する命令。
Reject と Destroy を組み合わせた Reject + Destroy 命令で利用されます。
コントローラにモーションが登録されたインスタンスを、登録抹消前にインスタンスを破壊されるのはコントローラにとって都合が悪く、先に Reject し次いで破壊という命令がセットになったものです。
基本命令 :: Stop
モーションを一時停止 ( Stop ) する。
停止中の動作に対しては動作停止を解除する命令になります。
停止命令は Sleep と似ていますが、動作を再開する前提で一時停止する Sleep に対して Stop 命令は Sleep 命令を含めて動作停止することができる上位命令と位置付けられています。
ただし Reject 命令よりも下位なので Reject は Stop 命令で停止できません。
基本命令 :: Sleep
再開する前提でモーションを一時停止する命令。時間制限付きで停止と動作再開を繰り返し実行するため Repetition
値を持っているのが特徴。
時間制限付き Sleep は Orbital 系には機能しません。
Orbital に対しては角度単位で機能する専用の Sleep :: Angluar
があります。
ただし Orbital は標準パラメータ設定に Sleep を取り込んでいるため、Sleep 命令を後から発行する機会はありません。
Sleep は Stop の下位命令なので Sleep 中の動作に Stop 命令を発行すると Sleep 命令も動作停止されます。Stop 中は Sleep のカウンタも停止するため、Stop 命令が解除されるまで Sleep 命令も機能停止します。
動作拡張命令
モーションは特性に応じて固有の「動作拡張命令」を持っています。
移動量を符号反転する Reverse Movement は Null と MoveTowards 以外に動作適用できます。
Sinewave と Orbital は「角速度」と「半径」という共通パラメータがあり、 それぞれ専用の動作拡張命令として GrowRadius
を持っています。
その他、Orbital 専用として Change Target 命令があります。