User:Caron/CTTutorial Japanese/Breff

From Custom Mario Kart
Jump to navigation Jump to search

(制作途中です)

Emitter flag

基本構造はBreffを参照してください。 エミッタフラグはビット(32bit)毎にフラグになっています。各フラグは次の通りです(現在わかっている限り)。

26-31 25 24 20-23 18-19 17 16 12-15 8-11 5-7 4 3 0-2
不明 生成方向同期 不明 エミッタ複数生成可 不明 不明 エミッタ無効 不明 カメラ追跡関係?

エミッタフラグに関連するオフセットの情報は次の通りです(順次追加予定)。

オフセット サイズ タイプ 説明
0x1C 0x04 Float パーティクルの生成範囲です。flagの25bit目がtrueであれば全方位、falseにおいてはx軸のみとなります。
0x20 0x04 Float x軸におけるエミッタの放出範囲です。25bit目がtrueでは無視されます。
0x24 0x04 Float エミッタ毎の間隔(円形)です。17bit目がtrueかつ3bit目がfalseの場合有効です。
0x28 0x04 Float エミッタの放出範囲(円形)です。25bit目がfalseの場合有効です。
0x2C 0x04 Float y軸におけるエミッタの放出範囲です。25bit目がtrueでは無視されます。
0x30 0x04 Float z軸におけるエミッタの放出範囲です。25bit目がtrueでは無視されます。
0x34 0x02 Byte エミッタの個数です。17bit目がtrueかつ3bit目がfalseの場合有効となり、値を大きくするほどエミッタの個数を増やすことが可能です。
Env系などのParticleを大量に生成するbreffの場合、値が2以上では処理落ちが発生するので注意してください。
生成個数は2n個、その位置はπ/(2n)です。

Animation

breffのアニメーションは識別子、KindTypeおよびKindEnableの値によってテーブルの構造が変わります。以下はほとんどの場合用いられる構造です。
EmitterやParticleに関してはBreffを参照してください。

Gravity

InfoTable

どの方向に向けてParticleを動かしていくかを指定します。通常はサイズ0x14で次の通りです。

オフセット サイズ タイプ 説明
0x00 0x02 Byte エントリ数。通常は1です
0x02 0x02 Byte 不明。通常は0です
0x04 0x04 Float 速度
0x08 0x04 Float 回転方向 (X)。値はラジアンです。
0x0C 0x04 Float 回転方向 (Y)。値はラジアンです。
0x10 0x04 Float 回転方向 (Z)。値はラジアンです。
0x14 構造終了

回転方向=(0,0,0)では下から上に向かった方向になります。逆にしたい場合はXを180度(=40490FDB)か-180度(=C0490FDB)としてください。

Random

KeyTable

一般的にInfoTableのみですが、一部ではKeyTableも定義されています。

InfoTable

通常はサイズ0x10です。

オフセット サイズ タイプ 説明
0x00 0x01 Byte エントリ数。通常は01です
0x01 0x01 Byte 不明。通常は0です
0x02 0x01 Byte 不明。通常は0です
0x03 0x01 Uint8 アニメーションフラグ
0x04 0x04 Float 正の振動幅。
0x08 0x04 Float 負の振動幅。一般的に上より小さい値になっています。
0x0C 0x02 Byte 除算値。殆どは0(=無し)です。
0x0E 0x02 Byte 不明。通常は0です
0x10 構造終了

アニメーションフラグは8bitの構造で、次の通りです

7 6 5 4 3 2 1 0
不明 X+ Y+ Z+ X-, Y-, Z- 有効or無効(1=無効)

例えば上下のみ振動させたい場合、フラグを00001010にすれば可能です()。

Scale(識別子ABの場合)

識別子はBREFFのAnimation Identifierのことです。ABの場合、すべてのフレームにおけるパラメータを指定する必要があります。

KeyTable

サイズはフレーム数x有効軸数x4バイトです。

オフセット サイズ タイプ 説明
0x00 A * 0x04 Float[A] パーティクル毎の大きさ。
AKindEnableで指定した有効な軸の数です。単一軸(1,2,4)なら1、二つの軸(3,5,6)なら2、全軸(7)なら3となります。順序はx->y->zです。
0x00 + A * 0x04 構造終了。次のフレームの設定に移ります。

Scale(識別子ACの場合)

KeyTable

オフセット サイズ タイプ 説明
0x00 0x02 Byte エントリ数。
0x02 0x02 Byte 不明。通常は0です
0x04 構造終了。パラメータ設定に進みます

パラメータ設定は次の通りです:

オフセット サイズ タイプ 説明
0x00 0x02 Byte 操作フレーム
0x02 0x02 Byte 不明。効果なし?
0x04 0x01 Byte 不明。効果なし?
0x05 0x01 Byte 不明。効果なし?
0x06 0x02 - 不明。通常は0です
0x08 0x04 - 不明。通常は0です
0x0C A * 0x04 Float[A] パーティクル毎の大きさ。
AはKindEnableで指定した有効な軸の数ですが、7のパターンについては未確認です(オフセットは0x08から?)。
0x0C + A * 0x04 構造終了。エントリ数が複数の場合は次のエントリのパラメータへ移動します

InfoTable

一般的にKeyTableのみですが、一部ではInfoTableも定義されています。

オフセット サイズ タイプ 説明
0x00 0x02 Byte エントリ数。
0x02 0x02 Byte 不明。通常は0です
0x04 構造終了。パラメータ設定に進みます

パラメータ設定は次の通りです:

オフセット サイズ タイプ 説明
0x00 0x04 Float パーティクルのデフォルトサイズ
0x04 0x04 Float 接線
0x08 0x04 Float 不明。スケール関係ですが反映されません
0x0C 0x04 Float 不明。接線関係ですが反映されません
0x10 構造終了。エントリ数が複数の場合は次のエントリのパラメータへ移動します