AssettoServerを使ってAI車両を走らせていると、車を追い越すちょっと手前で一瞬ドライバが飛び出して見える問題というのがずっとありました。
その瞬間はこんな感じです。
一瞬なので、最初は何が映っているのかわからなかったのですが、よく見るとドライバですよね。
しかも、特に大型の車両でこの動きが顕著に出るのです。これを解決するための覚書です。
車両の後ろ、だいたい10メートルくらいですかね。まで近づくと、一瞬ドライバが横に(特に左側)に飛び出すという現象です。
最初は、車の作りに問題があるのかと思っていたのですが、特に気になる点は見当たらず・・・。
次はlodが切り替わる瞬間に負荷がかかってバグってるのではないか?を疑ったのですが、こちらも変化なし。(車を非表示にしてドライバだけで走らせても一瞬ドライバが飛び出してしまう)
さらに疑ったのはCOCKPIT_LRからCOCKPIT_HRへの切り替えのタイミングです。
dataフォルダのlods.iniをみると、
[COCKPIT_HR]
DISTANCE_SWITCH=7
というセクションがあります。これはCOCKPIT_LRからCOCKPIT_HRに表示を切り替える距離(自車と対象のAI車との距離。単位はメートル)です。
これの値をいろいろ変えて試してみましたが、それもダメでした。
で、ネットを徘徊していたら、同じlods.iniに
[DRIVER_HR]
DISTANCE_SWITCH=7
DIRVER_HRというセクションがあるじゃないですか!
実際、上の写真にある小型トラック(佐川急便さん)のlods.iniにはDRIVER_HRのセクションがありませんでした。
とりあえずCOCKPIT_HRのDISTANCE_SWITCHと同じ距離で追記して試してみたところ、追い越し手前のドライバ飛び出す問題が起こらなくなりました!
やった!!
ですが、DRIVER_HRが設定されている車両でも飛び出す問題が起こることがありました。私の場合は、バスのモデルです。(やはり大型車)
こちらはDRIVER_HRのDISTANCE_SWITCHが25メートルに設定されていました。
これを同じく7メートルに変更したところ、バスも問題が解決しました!
距離が遠くてもダメってことなんですかね・・・。
7メートルが妥当なのかどうかはわかりません。ただ、自車と対象のAI車の距離設定を短くすることで、処理負荷が軽減されている可能性がありますね。
ちなみに、普通サイズの車(セダンやミニバンなど)では、この症状が発生しません。いや、発生していても見えないだけかもしれません。
大型車もlodB~Dを作成しており、負荷はそれほど高くないはずなのですが、モデルが大きいとlodAに切り替わった時に、描画負荷が一瞬高くなるのですかねぇ・・・。
根本的な原因はわかりませんが、
「追い越し直前にAI車両からドライバが飛び出す現象」では「そのAI車両のlods.iniにDRIVER_HRセクションを追加して、距離を短めにする」で解決することがある
です。
同様の現象が見受けられる方は、ぜひお試しください。
(そんな現象にはまる人、他にいるのだろうか??)
ちなみに、私が公開しているスモールトラックとバス、あとNR750のバイクも修正したらぶれなくなったので、まとめて更新し、再アップしてあります。