Set RGB565+Alpha: ByName, Reading from Targeted JSON Pointer


using Targeted JSON Pointer..

要 DX9 対応シェーダ
ASTER::ACTION::ObjectControl::Set RGB565 + Alpha Coefficient; ByName, using Targeted JSON Pointer

コントローラに登録済みのモーショングループを対象に、インスタンスの RGBA 値の変更。

  • 値の受け渡しに JSON と JSON ターゲットパス (Targeted JSON Pointer) 設定が必要です。
Application Graphics Mode Settings

アプリケーションのグラフィックスモードは 16 Million colors ( 24 ビットカラー ) を選択。

RGB 値を変更せず Alpha 値 (透過) だけを変更する別命令もあります。


RGB565 Format

CF25 の仕様に基づき RGB565 Format ( 16-Bit RGB ) で RGB 値を設定します。

Alpha は 8 bit なので最終的に RGBA 値は 32 ビットの符号なし整数 ( DWORD ) に収まります。

Color Bit Max Colour Depth
Red(R) 5 bit 2^5 - 1 = 31 levels
Green(G) 6 bit 2^6 - 1 = 63 levels
Blue(B) 5 bit 2^5 - 1 = 31 levels
Alpha(A) 8 bit 2^8 - 1 = 255 levels

上記テーブルは RGBA 各色調階数の最大値を計算したものです。

一般的に人間の目は、赤や青よりも緑色は正確な見分けができます。そのため、より多くのビット数を緑に割り当てることで、色の表示精度が向上します。

RGB565 は本来アルファを含まないため Alpha は個別に 8 bit で計算します。


仕様上の制限

RGB565 + Alpha の最大値は 0xFF1F3F1F ( 10 進数で 4'278'257'167 ) なので DWORD ( 32 bit unsigned int ) 上限に収まりますが、CF25 が扱う 32 bit Singned int の範囲 ( -2'147'483'648 から 2'147'483'647 ) を逸脱する、よって CF25 の Expression Editor から RGBA 値をエクステンションに直接送信できません。

この仕様を解決するため CF25 のエクスプレッションを回避し、Targeted JSON Pointer で指定された RGBA 値を直接 ASTER へ渡します。


送信できるデータ型

RGBA 値の指定は JSON に予め保存された数値、もしくは文字列化された HEX ( 16 進数 ) 値、読み取りフォーマットを満たした配列で保存された RGBA 値が利用できます。

Types Specifications Example Values
unsigned int DWORD 6619104
HEX String "0x64FFE0"
Array 1D-Array [255,255,0,100]
{
        "colour":{
                "rgba":6619104,
                "hex":"0x64FFE0",
                "arr":[255,255,0,100],
                "RGB565_255_254_000_000":65472,
                "RGB565_255_255_255_255":65535,
                "RGB565_255_255_000_100":6619104,
                "RGB565_255_000_000_100":6617088,
                "hex_6617088":"0x64F800"
        }
}

読み取り先のデータ型に応じて ASTER が値の変換方法を判定し自動処理します。

セキュリティ対策はしてないので、不正な値を入力した場合、クリティカルエラーでアプリが落ちます。

配列は RGBA8888 仕様で記述し、送信後 RGB565 にダウンスケールする処理が含まれるため一番重い処理になります。


Parameter

モーショングループ名の指定

登録されているモーショングループが二つ以上ある場合、グループ名を指定すると該当グループにパラメータを設定できます。

Parameter Exsample Description
"ExMotion1" グループ名を指定したパラメータの設定
"" 空文字列を送信、登録されている全モーショングループが対象

グループ名を指定せず空文字を送信すると、現在登録されている全モーショングループが対象となります。