MvtUtil: Create a RefVec: Align Hexagonal L2RT2B
ASTER::ACTION::MotionControl::MvtUtil: Create a reference vector with computed results in Align Hexagonal L2RT2B format
MoveTowards でオブジェクト・インスタンスを移動させる際に参照される目標座標を作る機能
モーションテンプレートのひとつである MoveTowards: RefVec 用の Reference Vector を “Align Hexagonal L2RT2B Format” で作成する。
インスタンス配置用の座標は、ユーザーが定義したパラメータをもとに算出されます。計算によって得られた座標データは「Reference Vector」と呼ばれ、mvt.Pursuer として選択されたインスタンスを移動させる際の目標座標として利用されます。
ベータ版の Align: Hexagonal との違い
ベータ版で実装されていた Align: Hexagonal が Align 機能から削除
Align: Hexagonal は MoveTowards 用の整列テンプレートとして再実装されました。
OblectControl :: Align はオブジェクト・インスタンスを整列配置する機能であり、インスタンスは配置パターンを選択して瞬時に整列を完了させます。
Reference Vector はインスタンスを整列配置する機能ではなく、与えられたパラメータを使ってインスタンスが最終的に到達する座標を算出する機能です。
ASTER の MoveTowards では mvt.Target はオブジェクト・インスタンスではなく座標情報であると定義されているので、Reference Vector は mvt.Pursuer を動かすためのターゲット座標として登録できます。
関連機能 URL
-
ASTER :: Action :: MotionControl :: MoveTowards: RefVec
-
ASTER :: Action :: MotionControl :: MoveTowards: TgtArr
-
ASTER :: Action :: JSON :: MvtUtil: Creat a JSON array exported from the Reference Vector
MoveTowards: TgtArr との違い
MoveTowards: RefVec はより高速で軽い処理を実現するため、C++ のシーケンスコンテナである std::deque ( 二重終端キュー ) を利用します。
| Motion Template | mvt.Target | Data Structure |
|---|---|---|
| MoveTowards: TgtArr | JSON Array | JSON 2D array |
| MoveTowards: RefVec | Reference Vector | c++ std::deque (Container) |
Reference Vector は JSON Array をターゲットに利用する MoveTowards: TgtArr よりも高速、かつ処理速度の軽減化が期待されています。JSON array は ASTER が利用しているライブラリ ( nlohmann/json ) の仕様上、処理速度全般が遅いです。
Details
今後 MoveTowards: RefVec は std::deque の特性を利用した新たな運用方法などが模索されます。JSON と連携して手軽に利用できる MoveTowards: TgtArr 、少し多めインスタンス数を動かすために処理速度の高速化と軽量化を必要とする部分では MoveTowards: RefVec を選択するなど、使い分けできます。
Parameter
"14, 400, 50, 2, 4, +80, +80, 1"| Name | Type | Description |
|---|---|---|
| Repetition | unsigned int | Number of times the coordinate calculation process repeats |
| Starting X Coordinate | int | X coordinate of the starting alignment point |
| Starting Y Coordinate | int | Y coordinate of the starting alignment point |
| Initial Grid Row Instance Count | unsigned int | Number of instances in the first grid row |
| Reversal Row Instance Count | unsigned int | Number of instances at the reversal row |
| Grid Cell Width | unsigned int | Width of each grid cell (in pixels) |
| Grid Cell Height | unsigned int | Height of each grid cell (in pixels) |
| Align Option | unsigned int | Alignment option: 0 (Left), 1 (Centre), or 2 (Right) |
Repetition
座標の算出回数: unsigned int
まず、配置形状を決定し、座標の計算回数を定義する Repetition 値を設定します。Repetition 値は座標を算出するための計算回数を決めるものであり、無駄な計算コストを省くためには正確な数値が必要です。
実際の MoveTowards: RefVec の動作では、インスタンスの数よりも repetition 値を少なく指定した場合、余ったインスタンスは一番最後に処理された座標へ重複配置される仕様。ASTER rev.1.0.4
Starting X|Y Coordinates
配置処理を開始する基準点を xy 座標で設定します: int
Initial Grid Row Instance Count
グリッド配置の初期行に並べる最大インスタンス数を設定: unsigned int
この値は、開始グリッド行に配置できるインスタンス数を定義します。配置パターンに応じて柔軟に調整してください。
グリッド配置の流れ:
-
グリッド配置は左から右、上から下へ順に進みます。例えば、Hexagonal 配置では、一番上と一番下のグリッド行が「配置されるインスタンスは同数、全行を通じて最も狭い行」となります。逆三角形状などの配置パターンでは、
Reversal Grid Row Instance Countより小さい値を設定します。 -
グリッド配置の進行中、配置形状によって行ごとのインスタンス数が増減し、「折り返し地点(Reversal Point)」に到達すると、インスタンス数の変化方向が反転します。
Reversal Grid Row Instance Count
折り返し行に配置するインスタンス数の設定: unsigned int
グリッド配置が進行し、「折り返し行地点」に到達するとインスタンス数の変化方向が反転します。
処理の流れ:
- 初期行から開始し、各行のインスタンス数を +1 または -1 しながら配置する。
- 折り返し地点で増減の符号が反転。
- 反転後、新しい符号でインスタンス数を更新しながら下方向への配置を継続。
例えば、Hexagonal 配置では、中央の行で最大インスタンス数に達し、折り返し地点以降はインスタンスの配置数は減少へ転じます。
Grid Cell Width|Height
グリッドのセル幅と高さをピクセル単位で設定します: unsigned int
Align Option
整列パターンのオプション設定値: unsigned int
以下のテーブルは、整列パターンの設定値について説明しています。
| Argument | Pattern |
|---|---|
| 0 | Left align |
| 1 | Center align |
| 2 | Right align |
配置形状とパラメータのサンプル
Reference Vector: Hexagonal は比較的シンプルなパラメータで多くの整列パターンに対応できる便利な配置テンプレートです。
六角形はパラメータの調整で配置形状を様々に変化できます。
以下は Reference Vector: Hexagonal から Diamond ( Rhombus ) 、Triangle や Trapezoid といった整列パターンを作るためのサンプルパラメータです。
"19, 450, 100, 3, 5, +84, +71, 1"
"16, 450, 100, 1, 4, +142, +71, 1"
"15, 450, 100, 1, 5, +71, +71, 1"
"14, 450, 100, 5, 2, +71, +71, 1"