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) 設定が必要です。
アプリケーションのグラフィックスモードは 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" |
グループ名を指定したパラメータの設定 |
"" |
空文字列を送信、登録されている全モーショングループが対象 |
グループ名を指定せず空文字を送信すると、現在登録されている全モーショングループが対象となります。