【UE5】自動車HMIをゼロから構築してみた

Unreal Engine 5.8では、車載UI(HMI)を構築するためのテンプレートが新たに利用可能になりました。しかし今回はあえてテンプレートを使わず、ゼロから自動車HMIを構築してみました。

サブタイトル
~Forza Horizon 6のテレメトリ信号を使ってリアルタイム駆動するメーターを制作~

「UEで車載メーターはどこまで再現できるのか?」
「外部信号を使ってリアルタイムに動かすにはどうすればいいのか?」
「ゲームのテレメトリをHMIに流し込むとどうなるのか?」

※copilotが生成したイメージ

実際に動くスピードメータを構築し、外部信号でリアルタイム駆動させるまでの流れをまとめました。

この記事は、

  • UEで車載UIを試作したい方
  • シミュレーター開発を検討している企業
  • UDP信号を扱うプロジェクトを進めたい技術者
  • 車載HMIのプロトタイピングをしたい開発チーム

にとって、役立つ内容になっています。

車両モデルとメーターの準備

まずはHMIといえば車。ということで、弊社 情報ブログ・Xでおなじみの ランクル200 を投入。
HMI用にメッシュ削減は行わず、普段使用しているデータをそのまま使用しました。
まずは動作確認が目的なので最適化は後回しです。

次に、Rhinoでメーターの3Dデータを作成。
スピードメータとタコメータを中心に構成し、ブースト計も入れたかったのですが今回は最低限に。

HMIに使用するGUIデザインは、私が大好きな車種の「オプティトロンメーター」をイメージ。

ブループリント構成とUI設計

スピードメータ用とタコメータ用にそれぞれ BPアクター を作成。
ユニット化しておくことで、後から機能追加や差し替えが容易になります。

さらに、ウィジェットでギヤ表示を追加。

UI側の制御はBPで完結するように設計し、データ受信部分はC++で分離しています。

この構成は、実際の開発でもよく使われる「UI層と信号層の分離」という考え方です。
後からCANやLINなどの実車信号に差し替えることも容易です。

※私が試した範囲ではギヤは、0:R(リバース) 11:N(ニュートラル)でした

Forza Horizon 6のテレメトリ信号を利用

今回は2026年5月発売の『Forza Horizon 6』のSTEAM版に搭載されているテレメトリ機能を利用しました。
SimHubを使ったことがある方なら仕組みはピンと来ると思います。

ゲーム側からUDPで車速や回転数などのデータを送信し、外部メーターに反映する仕組みです。

Forza公式のデータ出力仕様はこちら:
https://support.forza.net/hc/en-us/articles/51744149102611-Forza-Horizon-6-Data-Out-Documentation

この仕組みを使えば、ゲーム内の車両挙動をリアルタイムで外部装置に出力・反映できるため、シミュレーターや教育用途にも応用可能です。

実際、弊社の重機シミュレーターでも同様の要望があり、モーションコックピット(5軸椅子)に対応できるよう実装検証も行ったことがあります。

オーダーメイド 操縦訓練シミュレーター制作

C++で受信制御を実装

UnrealEngine側の通信制御はC++で実装しました。
弊社では、遊技機業界や自動車業界をはじめ色々な業界で各種の通信制御の対応実績があります。

UDPポートを開き、受信した値を変数にセットしてTickで更新するシンプルな構成です。

今回利用したデータは以下の4項目:

  • 速度
  • エンジン回転数
  • 現在のギヤ
  • 車両の回転

一点ハマったのは、速度がm/sで送信されていたことです。
km/hだと思い込んでいたため、ゲーム内メーターとズレてしまいました。
ドキュメントを確認して解決。固定観念はよくないですね。

実行と結果

PCのゲーム側でデータ送信をONにし、タブレット側で今回作成したHMIアプリケーションを実行。
スピードメータ(HMI)がリアルタイムで動作しました。

HMI内で動く3Dモデルの軽量化をおこなっていなかったり、
最適化も未実施のため若干遅延はありましたが問題なく動作しました。

この技術はどんな場面で役に立つのか

今回の検証は趣味半分で始めたものですが、内容としてはそのまま実務に使えるレベルです。
実際、企業から以下のような相談をいただくことが多いです。

  • 車載UI(HMI)を短期間で試作したい
  • 実車ECUと連携する検証環境を作りたい
  • シミュレーターを外部に依頼したい
  • テレメトリ信号をリアルタイムで可視化したい
  • CAN/LIN/Ethernetの信号をUIに反映したい
  • 展示会向けのデモを短期間で作りたい

今回のような構成は、これらの課題を解決するための一例になります。

diprossで対応可能な技術領域

  • UEを使った車載HMIプロトタイピング
  • 重機・自動車・産業機器のシミュレーター開発
  • UDP/TCP通信制御
  • CAN/LIN/Ethernetなどの車載通信の取り込み
  • Rhino/Blender/UEでの3Dモデル制作・最適化
  • テレメトリ解析と可視化
  • 教育・訓練システムの構築

※なお、量産車向けHMIの開発実績はありませんが
 UIデモ制作や通信制御の実務経験を活かしHMI構築に取り組みました

技術相談・共同開発のご依頼について

車載HMI、シミュレーター開発、テレメトリ解析、外部機器連携など、
今回の記事に関連する技術相談を随時受け付けています。

  • UEで車載UIを試作したい
  • 実車ECUと連携する検証環境を作りたい
  • シミュレーター開発を外部に依頼したい
  • 展示会向けのデモを短期間で作りたい

といったご相談が特に多いです。

ご興味のある企業様は、お気軽にお問い合わせください。

まとめ

今回のプロジェクトでは、

  • UE5.7でHMIをゼロから構築
  • Forza Horizon 6のUDPテレメトリを利用
  • C++でリアルタイム受信制御を実装
  • BPとウィジェットで車載UIを構築
  • 実際に動くスピードメータを再現

という流れで、車載HMIの基本構造を実務レベルで再現しました。

車載UIやシミュレーター開発は、教育・産業・エンタメ・研究など幅広い分野で需要が高まっています。

おまけ

フォルツァホライゾン6のテレメトリ信号を他の値も取得できるようにUE用プラグインも作成しました。

メーターを動作させるために作ったのですが、アイディア次第で面白い使い方もできるかもしれませんので公開します。

※GPU弱めの端末内でゲームとHMIアプリを同時起動かつ、動画キャプチャソフトを2重で利用したため、大きく遅延+カクカクしています

■利用許諾について

本プラグインの著作権は開発者に帰属します。
ただし、商用・非商用を問わず、自由に利用・改変・組み込み・再配布いただけます。
本プラグインは「自由に使えること」を目的としていますが、著作権を放棄したものではありません。
ご利用の際は、著作権表示を保持していただけますようお願いいたします。

■免責事項

本プラグインは、今回の技術検証のために作成したものであり、
動作の完全性・正確性・安全性を保証するものではありません。

以下の点について、あらかじめご了承ください:

本プラグインには不具合や予期しない挙動が含まれる可能性があります
特定の環境・バージョン・構成で正常に動作しない場合があります

  • 本プラグインの利用により生じたいかなる損害についても、開発者は責任を負いません
  • 本プラグインは量産開発向けではなく、研究開発・試作用途を前提としています
  • 本プラグインの利用に伴う技術的判断・検証は、利用者の責任において行ってください

本プラグインは、研究開発・プロトタイピング・シミュレーター構築など、
検証目的での利用を前提として提供しています。

■サポートについて

本プラグインは検証目的で無償公開しているため、
個別のサポート(不具合対応・機能追加・アップデートなど)は提供しておりません。

技術相談や共同開発のご依頼については、別途ご連絡いただければ対応可能です。

エンジニアリング事業部からの最新情報をお届けします

お知らせ

前の記事

夏季休業のお知らせ