Align with (BitPack→Base64) RefVec Artifact


ASTER::ACTION::ALIGN::via RefVec Snapshot (BitPack→Base64)

(BitPack→Base64) エンコード文字列を参照座標に用いてオブジェクトインスタンスを整列。
(reserved variable not used)

CF25 アプリケーション実行中に、選択したオブジェクト・インスタンスの座標を整列・変更します。

選択できるオブジェクト・インスタンスの種類はスプライト ( Active ) のみに対応。


MoveTowards で使用される Reference Vector (参照座標) をインスタンスの配置座標として、インスタンスを配置。

  • 本機能は mvt.RefVec を直接参照せず、事前に mvt.RefVec をバイナリデータ化し、
    Base64 エンコードされた文字列から参照座標を復元する
    方式を採用する。

関連:

alt text alt text

Align 機能によって復元された参照座標データは mvt.RefVec (データ型 : std::deque) とは別領域に、std::vector 型として一時保存される。この一時保存データは Align 専用であり、mvt.RefVec にメモリ上で干渉することはない。


Parameter.1

オブジェクト・インスタンスを選択。コントローラにはアクティブ ( スプライト ) のみ選択可能です。

Description of the image

アクティブ以外のオブジェクトタイプを指定した場合、イベントからアクション実行時にエラーが表示され、処理を中止します。


Parameter.2

"CQAAADwBAABWAAAAAL6+AL5Cvr4AAABCAL5CAEJCQg=="

CF25 Expression Editor では、次の 2 つの方法が利用できます:

  • Base64 文字列を直接貼り付けて送信する。
  • 外部データ参照を指定してデータを取得する。

ただし、Expression Editor には貼り付け可能な文字列長の上限があり、座標データ量が増えると Base64 文字列の長さも増加し、その制限を超える可能性があります。
このため、サイズ制限の影響を受けない信頼性の高い方法として、外部データ参照の指定を推奨します

Reference Vector のバイナリデータを Base64 に変換すると、事前に圧縮を行わない場合はデータサイズが約 +33 % 増加します。

BitPack 圧縮を適用すると、数値データをバイナリ化する前に解析し、型サイズを最小化したり差分符号化を行うことで、4 バイトの数値を 12 バイトに縮小できる場合があります。これにより、データセットによっては 50 % 以上の圧縮率が得られます。

圧縮後に Base64 へ変換すると、圧縮サイズに対して約 +33% の増加が発生します。結果として、元の非圧縮バイナリと比較すると、最終的な Base64 文字列は 全体で 40〜60 % 程度小さくなり、効率的にデコード可能です。

Base64 のデコードに要する時間は文字列長に比例し、データ内容にはほとんど依存しません。したがって、圧縮率がデータセットによって変動しても、Base64 文字列を短縮することは常にデコードの高速化に寄与します。


Notes

ASTER の Align 機能は Align: RefVec B64E BitPack 以外に以下バリエーションがある。

上記機能はパラメータから

  • 配置座標を逐次計算してインスタンスを配置

  • オブジェクトインスタンスの可変変数 A (0) を予約変数として利用

インスタンスの配置と同時に変数へ連番を割り振る機能が内蔵されており、この機能は無効化できない

Align: RefVec B64E BitPack は連番割り振り機能を内蔵しない。
  • 参照座標を用いて配置するだけで、予約変数を一切利用しません