takeyohのおぼえがき

気になったこと、試したことの記録です。

バックファイヤー(frame)の設定で火を噴く!

もう一つできなくて困っていたバックファイヤの設定についても実現できたので覚書です。

まず、data/frames.iniがバックファイヤーの設定ファイルです。

インプレッサはマフラーの吹き出し口が4つあるので、4つ設定しています。

frames.iniの内容

[HEADER]
EDIT_MODE=0
INTENSITY=80
EDIT_BIG=1
BURN_FUEL_MULT=10
FLASH_THRESHOLD=7
EDIT_STATE=4

[FLAME_0]
POSITION=-0.621185, 0.225385 ,-2.18111
DIRECTION=0,0,-1
VSIZE_START=0.1
VSIZE_END=0.5
LSIZE=0.3
SIZE_MULT=1.3
IS_LEFT=0
GROUP=0

[FLAME_1]
POSITION=-0.503467, 0.225385, -2.19753
DIRECTION=0,0,-1
VSIZE_START=0.1
VSIZE_END=0.5
LSIZE=0.3
SIZE_MULT=1.3
IS_LEFT=0
GROUP=0

[FLAME_2]
POSITION=0.621185, 0.225385 ,-2.18111
DIRECTION=0,0,-1
VSIZE_START=0.1
VSIZE_END=0.5
LSIZE=0.3
SIZE_MULT=1.3
IS_LEFT=1
GROUP=0

[FLAME_3]
POSITION=0.503467, 0.225385, -2.19753
DIRECTION=0,0,-1
VSIZE_START=0.1
VSIZE_END=0.5
LSIZE=0.3
SIZE_MULT=1.3
IS_LEFT=1
GROUP=0

こちらもすべてのパラメータが理解できていませんが、わかった範囲だけ書くと、

POSITION ファイアが噴き出す場所。blenderのモデルからマフラーの吹き出し付近の座標を取得して合わせるとすぐに合わせられますが、よくわからないときはトライ&エラーで合わせちゃうのもあり。

DIRECTION 噴き出す方向。上記例はx=0,y=0,z=-1なので、真後ろに噴き出します。

IS_LEFTは左右にマフラーが分かれているときの左側に設定・・・かな?一応設定しましたが、どのような効果になるのかはよくわかってません・・・。

 

次に、framesは吹き出し開始、ループ、終了などステータスが4つに分かれているようですが、それぞれの時の炎の状態を定義するdata/flame_presets.iniというファイルもあります。

これで、それぞれのステータス中のオフセット(ずれ)、サイズ、タイプ(?)、色なんかが指定できます。

通常の炎(オレンジ色?)だとこんな感じ。

[HEADER]
SIZE_MULT=1

[PRESET_START_0]
TRIGGER=0
OFFSET=0.0,0.0,0.02
SIZE=0.05
TYPE=0
RGB=255,180,15,0.2

[PRESET_START_1]
TRIGGER=1
OFFSET=0.0,0.0,0.1
SIZE=0.1
TYPE=1
RGB=255,120,20,0.07

[PRESET_START_2]
TRIGGER=2
OFFSET=0.0,0.0,0.08
SIZE=0.07
TYPE=0
RGB=255,120,20,0.08

[PRESET_END_0]
TRIGGER=4
OFFSET=0.0,0.0,0.02
SIZE=0.06
TYPE=1
RGB=255,190,0,0.1

[PRESET_END_1]
TRIGGER=2
OFFSET=0.0,0.0,0.06
SIZE=0.04
TYPE=1
RGB=255,190,0,0.07

[PRESET_END_2]
TRIGGER=0
OFFSET=0.0,0.0,0.1
SIZE=0.04
TYPE=2
RGB=255,190,0,0.05

[PRESET_LOOP_0]
TRIGGER=0
OFFSET=0.01,-0.00,0.18
SIZE=0.13
TYPE=1
RGB=128,50,0,0.1

[PRESET_LOOP_1]
TRIGGER=1
OFFSET=0.015,-0.02,0.26
SIZE=0.13
TYPE=1
RGB=128,50,0,0.06

[PRESET_LOOP_2]
TRIGGER=2
OFFSET=0.03,-0.04,0.35
SIZE=0.15
TYPE=2
RGB=128,50,0,0.05

[PRESET_FLASH_0]
TRIGGER=2
OFFSET=0.0,0.0,0.00
SIZE=0.04
TYPE=0
RGB=255,90,0,0.01

[PRESET_FLASH_1]
TRIGGER=1
OFFSET=0.0,0.0,0.03
SIZE=0.04
TYPE=0
RGB=255,90,0,0.006

[PRESET_FLASH_2]
TRIGGER=0
OFFSET=0.0,0.0,0.06
SIZE=0.06
TYPE=1
RGB=255,90,10,0.01

青い炎を出したい場合は、こんな感じ。

[HEADER]
EDIT_MODE=0
INTENSITY=80
EDIT_BIG=1
BURN_FUEL_MULT=10
FLASH_THRESHOLD=7
EDIT_STATE=4

[FLAME_0]
POSITION=-0.621185, 0.225385 ,-2.18111
DIRECTION=0,0,-1
VSIZE_START=0.1
VSIZE_END=0.5
LSIZE=0.3
SIZE_MULT=1.3
IS_LEFT=0
GROUP=0

[FLAME_1]
POSITION=-0.503467, 0.225385, -2.19753
DIRECTION=0,0,-1
VSIZE_START=0.1
VSIZE_END=0.5
LSIZE=0.3
SIZE_MULT=1.3
IS_LEFT=0
GROUP=0

[FLAME_2]
POSITION=0.621185, 0.225385 ,-2.18111
DIRECTION=0,0,-1
VSIZE_START=0.1
VSIZE_END=0.5
LSIZE=0.3
SIZE_MULT=1.3
IS_LEFT=1
GROUP=0

[FLAME_3]
POSITION=0.503467, 0.225385, -2.19753
DIRECTION=0,0,-1
VSIZE_START=0.1
VSIZE_END=0.5
LSIZE=0.3
SIZE_MULT=1.3
IS_LEFT=1
GROUP=0

 

ここまでで標準機能で炎が出るのかと思ったのですが、全く反応しません。

なので、extension/ext_config.iniにEXHAUST_FLAMESセクションを追記しました。

[EXHAUST_FLAMES]
ANTILAG=1
ANTILAG_DELAY=0.05
ANTILAG_INTENSITY=10.55
ANTILAG_INTERVAL_MAX=1.0
ANTILAG_INTERVAL_MIN=0.00
ANTILAG_TURBO_THRESHOLD=0.0
DISCHARGE=1
DISCHARGE_CHARGE_TIME=0.001
DISCHARGE_DELAY=0.0001
DISCHARGE_DURATION=1.8, 5.0
DISCHARGE_INTENSITY=10.15
DISCHARGE_PROBABILITY=2000.01
DISCHARGE_RPM_THRESHOLD_MAX=8000
DISCHARGE_RPM_THRESHOLD_MIN=1000
DISCHARGE_WATER_TEMPERATURE_THRESHOLD=10
FLAT_SHIFT=1
FLAT_SHIFT_COOLDOWN=0.01
FLAT_SHIFT_DURATION=0.55
FLAT_SHIFT_GAS_THRESHOLD=0.1
FLAT_SHIFT_INTENSITY=10
FLAT_SHIFT_PROBABILITY=1
FLAT_SHIFT_RPM_THRESHOLD=1500
LIMITER=1
LIMITER_DELAY=0.05
LIMITER_INTENSITY=10
LIMITER_RPM_THRESHOLD=7850

こちらもすべてのパラメータは理解できていませんが、一つだけ。

〇〇_INTENSITYのパラメータは派手さ加減です。大きくするほど派手に炎を吐くってことですね。

 

青い炎バージョンでの実装結果はこんな感じです。

動画だとこんな感じ!

youtu.be

/* -----codeの行番号----- */