iRacing Developer Blog


iRacing Developer Blog: S4 Updates to the Dynamic Track Model
https://www.iracing.com/iracing-developer-blog-s4-updates-to-the-dynamic-track-model/

開発者によって技術の内側を紹介するシリーズ、今回はダン・ガリソンによるダイナミックトラックのアップデートの話題がブログとして公開されました。こちらに先だってポッドキャストでその先のレインについても話していたようですけど、そこへ向かう上での技術向上による恩恵、というのも iRacing のいつものヤツですね。このブログ記事を和訳して以下で紹介します。iRacing は技術系の話題も読み物として面白いですよ。

私はダン・ガリソン、シニアソフトウェアエンジニアです。最近、ポッドキャスト iRacing Downshift でダイナミックトラックのアップデートについて話しましたが、良いフィードバックもあったのでここでより詳細を紹介しようと思います。そして、シムがどのように動いているのか、技術的な側面に興味を持っている方と、より楽しくディスカッションを行えたらよいなと思っています!

ダイナミックトラックモデルの初期実装では、レーストラック全体の路面温度をサーバーが保持し、その情報をクライアントに送信することが特徴でした。ある地点から別の地点までの温度は、色んな要素によって変化します。路面のアルベド、太陽に対する路面の向き、太陽高度と日射量の関係、影、雲、そして車からの影響によって、日陰の不活発な場所は涼しく日なたは暖かいし、車のエンジンからの熱が堆積する場所は熱くなるしタイヤもさらに発熱します。これにより、多くの現実に遭遇する要因に対して活発的に反応してレースエンジニアやドライバーが対処すべき幅広い状況を提供するモデルが出来上がりました。

ダイナミックトラックが最初にリリースされたとき、シム内の天候は変化しませんでした。気温や風のパラメータを変更することはできましたが、太陽も雲も動かないし、降り注ぐ太陽エネルギーと、熱対流と熱伝導でのロスが完璧にバランスして生成されたシンプルな温度としてだけ、その地表の平衡温度を計算できたのでした。天候が決定され空は動かず、誰も走行していなければ、周囲の気温変化と概ね一致する小さな変化だけでトラック温度は本質的に変化しません。

しかし、太陽と雲が動き始めると、このモデルの大きな欠点が明らかになりました。
すなわち、サーバーが路面の上層部だけの温度を保持していた点です。その結果、太陽が沈んだり雲が掛かって降り注がれる太陽エネルギーがなくなると、トラック温度が急速に下がっていたのです。路面の下で起こっていることを説明するため、年月日と日時による関数として、変動する熱の損失率が導入されました。しかし事実に似てはいるものの、おかしな動作とならないように冷却率の全体的な変動は比較的小さく抑えられていました。

この問題に対処するため、新しい実装では表面下の複数層の温度を保持することにしました。
路面温度はよりリアルに変動します。新しいモデルでは、数時間の日照から下層に蓄えられた熱が表面を温めます。同様に、車の走行による発熱はラップを重ねるほどにより長く持続するようになります。前のモデルと比較して、一般的に午前や午後でも早い時刻ではより低く、午後遅くではより高い気温になります。しかし一般的に多層アプローチはほとんどの状況においてよりゆっくりと変化することから、路面温度をある程度安定させます。

違う場面で新しいモデルを説明しましょう。古いモデルでは反映できなかった現実の記録が可能になります。午後遅くにモンスーンが吹いて短く穏やかなシャワーがありそうな熱い日を考えてみてください。古いモデルでは、トラック温度が急速に下がり、そして水がなくなったあとも低いままです。
新しいモデルでは、空が依然として雲に覆われていても、予め下層に蓄えられていた熱がゆっくりと表面に戻り、失った温度を幾分戻します。実際のところ、このシナリオを通じた作業がダイナミックトラックをアップデートする動機となりました。

このアプローチにおいて解決しなければならない問題のひとつに、各層の温度の初期化があります。各層が適切にセットアップされていないと、表面温度は正しい温度に落ち着くまで、非現実的で不規則に変動してしまいます。
これに対処するため、サーバーはトラックで使われる素材ごとに多くのサンプルを作成し、指定された年月日・時刻と素材の熱伝導率及び深度から経験式で推定して、各サンプル地点の温度を追跡します。さらに一歩進み、イベント開始数日前の天候をシミュレートして、各サンプルの温度プロファイルを更新します。これにより、セッションが始まれば各層が設定された条件下で適切な温度で適切に振る舞うようになります。

そして時間が進み、定期的にデータポイントを追加していき、続くセッションでも、どの深度でも適切な温度となります。天候と変化は既にモデル化しているので、イベントの午前中にプラクティス2時間と午後に予選、翌日にレースとなる場合も、温度モデルがそれに対処します。セッションが始まって地面の一部で初期温度セットが必要となったとき、その素材と現在時刻からデータを探して、地表の向きによって保存されたサンプル間を補完します。

これにより、動く空によって明らかになった前モデルの2番目の欠点に対処できます。
前のセッションが終了してから時間が経っていたときには、サーバーはセッション開始時に温度計算のために太陽エネルギーの量を調べますが、太陽が雲に隠れているとき、どれだけ長くどれだけの頻度で雲に隠れていたのか推測せず、セッションに至るまでの条件はシミュレートしませんでした。そのため、この場合にはまるで一日中雲に覆われていたかのように、トラックは現実離れした低い温度で開始してしまっていました。
新しいモデルでは、それまで太陽がほとんど出ていたのなら、それを踏まえてトラックはまだ冷えず温かいままになります。

新しいモデルはまた、水と温度の相互作用について大幅に改善しています。蒸発による温度下降が以前より正確に計算されます。
例えばオクラホマのずっと日陰になるダートトラックでは通常、蒸発によって熱が失われて周囲の気温よりも低いトラック温度となります。もちろん、蒸発速度は路面温度と気温、湿度、風、表面の自由水供給量によって変わります。湿度が高く風のない肌寒い日には、トラック温度が気温に近くなると予想されますが、乾燥して風のある暑い日には、気温とトラック温度には数度の温度差があると予想されます。ダイナミックトラックのアップグレードは、改善された蒸発モデルによる自然な結果としてこの動きを提供します。

トラックモデルに対するこれらの変更は、シムの雨の予測からインスパイアされたものですが、アップデートが全体的に有益なものとなるのは明らかです。路面と地面の間の熱伝導をモデル化することで、さまざまなイベントによるトラック温度変化はそれ以前に起きたことの影響を受けます。そのため表面温度は、基本的に下層に保存されている履歴に応じて比較的持続的に変動する可能性があります。初期化中に天気予報を実行して結果を記録することで、サーバーは時間ギャップの大きなセッション遷移を処理してトラックを適切な状況で開始できるようになるのです。

※雨が来るのはまだまだ先です

この記事についてのディスカッションはメンバーフォーラムのこちらで。
https://members.iracing.com/jforum/posts/list/3657875.page