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

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 または -1 しながら配置する。
  2. 折り返し地点で増減の符号が反転。
  3. 反転後、新しい符号でインスタンス数を更新しながら下方向への配置を継続。

例えば、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 といった整列パターンを作るためのサンプルパラメータです。

Description of the image
"19, 450, 100,   3, 5,  +84, +71,   1"

Description of the image
"16, 450, 100,   1, 4,  +142, +71,   1"

Description of the image
"15, 450, 100,   1, 5,   +71, +71,   1"

Description of the image
"14, 450, 100,   5, 2,   +71, +71,   1"