自作の車をゲーム内で動かす [Blender × Unreal Engine 5]

2025-01-18 · Tomoki Ikegami

"簡単な車の3Dモデルを自作し、ゲーム内で動かす手順を解説します"

~ 目次 ~


1. 本記事の目的

 自分で作ったオリジナルの車の3Dモデルを、ゲーム内で走らせる手順について説明します。

 色々な記事を読んでみると、リアルな3Dモデルや緻密なプログラミングをしていてハイクオリティなものも沢山ありました。

 私にとっては難しく少し混乱してしまった部分もあるので、この記事では3Dモデルやプログラムの構築は必要最低限の労力でやります笑

 3Dモデルやプログラムをしっかりやれば高品質なゲームになると思うので、今回はとりあえず動かすことを目的に説明したいと思います。

自作の車の3Dモデルをゲーム内で動かす
☝ 自作の車の3Dモデルをゲーム内で動かす

2. 使用ソフトウェア

 今回の開発で使ったソフトウェアとバージョンです。(※バージョンは多少違っても大丈夫だと思います)

 3Dモデルの作成にはBlender、ゲーム開発にはUnreal Engineを使います。公式サイトにアクセスして、それぞれインストールを進めてください。

 今回の記事ではソフトの言語設定は英語でやりますが、好みに応じて別の言語にしてもよいです。(海外の記事とか動画を見たときにマネしやすいように英語にしています)

 インストール方法が分からないという方は、下の記事とかを見ながらやればできると思います。

3. 3Dモデルの作成

3.1. 作成するモデル

 まずは動かしたい車の3Dモデルを作ります。作成するモデルは 図 3.1 のような感じで、人間が車だといわれて理解できるギリギリの形です(笑)。製図などをやっている方は三面図のほうが理解しやすいかもしれないので、図 3.2 をご覧ください(図 3.1 も 図 3.2 も中身は同じです)。

 座標系の向きは重要なので色付きで書いています。車の進行方向(前進)をX軸、車の鉛直上向きがZ軸になるようにモデリングします。

図 3.1 作成するモデルの寸法
図 3.1 作成するモデルの寸法
作成するモデルの寸法(三面図、数値の単位は [mm])
図 3.2 作成するモデルの寸法(三面図、数値の単位は [mm])

 構成部品はボディ(部品番号①)とタイヤ4輪(部品番号②~⑤)のみです。後でBlender や Unreal Engine で分かりやすいように、各部品に下の 表 3.1 のように名前をつけます。早速モデリングBlenderを使って車のモデリングを始めます!

   表 3.1 作成するモデルの寸法

部品番号 部品名称
1 Body (車のボディ)
2 Wheel_FL (左フロントタイヤ) 
3 Wheel_FR (右フロントタイヤ) 
4 Wheel_RL (左リアタイヤ) 
5 Wheel_RR (右リアタイヤ) 

3.2. Blenderでモデリング

3.2.1. Blenderの起動

 今回はBlenderを使ってモデリングするので、まずはソフトを起動します。画面下のタスクバーにある検索窓で「blender」と入力して、Enterキーを押します。

 初めて起動したときは言語の設定とかが出てくると思いますが、特に設定せずデフォルトのまま行きます。

Blender起動後の画面
図 3.3 Blender起動後の画面

3.2.2. ボディのモデリング

 Blenderを起動すると画面の中央にキューブが置かれていると思います。このキューブを変形して、そのまま車のボディとして使いたいと思います。

ボディの元形状(デフォルトで置かれているキューブ)
図 3.4 ボディの元形状(デフォルトで置かれているキューブ)

 X軸が車の進行方向、Z軸が車の上向きになるようにします。

 まず、車は進行方向に細長くしたいので、X軸方向のスケールを2倍します。高さが少し高いので、続けてZ方向に0.5倍します。

座標の向きはUnreal Engineにインポートしたときに重要になってくるので、注意しながら作業を進めたほうが良いです(私はあまり考えてなかったので後で困りました…)。

スケールの変更
図 3.5 スケールの変更

 今のままだと車の進行方向が分からないので、前方が低くなるようにボディ形状を修正します。

 そのためにまずは、ボディを全体的にZ方向へ +0.5 m 動かします。

位置の移動
図 3.6 位置の移動

 次にボディを変形させます。変形させるためには、

  1. Object ModeからEdit Modeに変更
  2. 辺のマークを選択
  3. 前方の辺を選択

 します。

Edit Modeで辺を選択する
図 3.7 Edit Modeで辺を選択する

 辺が選択できたら、画面左にある移動コマンドのボタンを押します。そうすると辺が自由に移動できるようになります。

 Ctrlキーを押すと移動が1グリッド間隔になるので、その状態でZ軸方向に移動させてボディ前方をへこませます。

辺をZ方向に移動させてボディ前方を低くする
図 3.8 辺をZ方向に移動させてボディ前方を低くする

 かなり単純な形ですけど、これでボディの形ができました。

これでボディ形状が完成(超シンプルな形...)
図 3.9 これでボディ形状が完成(超シンプルな形...)

 これだと少しさみしいのでボディの色を変えたいと思います。そのために、

  1. Material Propertyを選択
  2. Material名の上で2回クリックし、名前を Body に変更
  3. Base Colorの色の上でクリック

 します。

Bodyの色を変更する
図 3.10 Bodyの色を変更する

 そうするとカラーパレットが現れるので、自分の好きな色に設定します。

 デフォルトの表示だと色が分からないので、画像中の①のようにViewport Shadingに表示を切り替えた方が調整しやすいと思います。

Bodyの色を確認しながら調整
図 3.11 Bodyの色を確認しながら調整
Bodyの色の変更後
図 3.12 Bodyの色の変更後

 以上でボディのモデリングが完了になります!

3.2.3. タイヤのモデリング

 次はタイヤを作っていきます。タイヤの元形状を次の手順で挿入します。

  1. ワークスペース上部のAddをクリック
  2. Meshを選ぶ
  3. Meshの中のCylinderをクリック
タイヤの元形状を挿入
図 3.13 タイヤの元形状を挿入

 元形状の寸法と位置を確認します。ワークスペース下部にあるAdd Cylinderの項目をクリックしてください。

 そうすると、円柱の半径(Radius)や深さ(Depth)などの設定項目が表示されると思います。

ワークスペース下部のAdd Cylinderの項目をクリック
図 3.14 ワークスペース下部のAdd Cylinderの項目をクリック
ワークスペース下部のAdd Cylinderの項目をクリック
図 3.15 ワークスペース下部のAdd Cylinderの項目をクリック

 この円柱からタイヤを作ります。Add Cylinderの項目を以下の項目を変更してください。

 これだとタイヤがボディの真ん中くらいに配置(座標原点)に表示されているので動かす必要があります。そのために、

 に設定してください。これは左フロントタイヤの場合なので、他の3輪も作成していきます。

左フロントタイヤ(Wheel_FL)の作成
図 3.16 左フロントタイヤ(Wheel_FL)の作成

 他の3輪の位置は下の図のようになります。

 左フロントタイヤはP1の位置だったので、他の3輪はP2, P3, P4の位置に配置すれば良いです。

各車輪の位置
図 3.17 各車輪の位置

 まずP2の位置に右フロントタイヤを配置します。先ほど作成した部品を複製するので、

  1. ワークスペース上部のObjectタブをクリック
  2. Duplicate Objectsをクリック

 します。

左フロントタイヤを複製
図 3.18 左フロントタイヤを複製

 これで部品が複製できたので画面右側のTransformの項目から、右フロントタイヤをP2の座標位置 P(2, -1, 0) m に配置します。

右フロントタイヤを配置
図 3.19 右フロントタイヤを配置

 同様の手順で部品を複製して、P3, P4の位置にそれぞれ左リアタイヤ、右リアタイヤを配置します。

ちなみにP3, P4の座標は、

 です。

左リアタイヤを配置
図 3.20 左リアタイヤを配置
右リアタイヤを配置
図 3.21 右リアタイヤを配置

 タイヤの色を黒っぽくします。ボディの色を変えたときと同じ手順で、

  1. Material Propertyを選択
  2. Material名の上で2回クリックし、名前を Tire に変更
  3. Base Colorの色の上でクリック

 します。そうするとカラーパレットが現れるので、グレーに設定します(グレーでなくても好きな色にしても大丈夫です。瞬足バギーみたいにタイヤの色を青とかオレンジにしてもOK)。

マテリアルの設定
図 3.22 マテリアルの設定
色の調整
図 3.23 色の調整

 他のタイヤも同じ色に設定します。

 まずは色を設定していないタイヤを選んで、最後に色を設定したタイヤを選択してください。Shiftキーを押しながら選ぶと同時に選択することができます。

全てのタイヤを選択(色なし→あり の順番で)
図 3.24 全てのタイヤを選択(色なし→あり の順番で)

 タイヤを全て選択した状態で、

  1. ワークスペース上部のObjectタブをクリック
  2. Link/Transfer Data
  3. Link Materials

 をクリックする。

全てのタイヤを同じマテリアルに設定
図 3.25 全てのタイヤを同じマテリアルに設定
全てのタイヤが同じ色と質感になった
図 3.26 全てのタイヤが同じ色と質感になった

 以上で車のモデリングは完了です! この後はUnreal Engine用のモデルをエクスポートするための色々な設定をしていきます。

モデリング完了!
図 3.27 モデリング完了!

3.2.4. 単位の設定

 Unreal Engineにインポートするためには、単位のスケールを変更する必要があります。下の画像のように、

  1. シーンタブを開く
  2. Unit Scaleを0.01に設定

 してください。

単位スケールの変更
図 3.28 単位スケールの変更

 そうすると車の大きさが0.01倍になってしまうので、元の大きさに戻すために100倍する必要があります。

 まず、不要なオブジェクトは削除します。今回はCameraとLightが必要ないのでこの2つを削除します(レンダリングするときはカメラとライトが必要です)。

CameraとLightを選択
図 3.29 CameraとLightを選択

 CameraとLightを削除すると、下の画像のようにボディとタイヤのMeshだけが残ります(合計5パーツ)。下向きの三角形(▽)みたいなマークがMeshです。

CameraとLightを削除して、Meshのみが残った
図 3.30 CameraとLightを削除して、Meshのみが残った

 不要なパーツを削除できたので、スケールの変更を進めます。

 ボディとタイヤの大きさを一気に変更したいので、ボディとタイヤを全て選択します。

 全選択するためには、

  1. ワークスペース上部のSelectタブをクリック
  2. Allを選択

 します。これでボディとタイヤが全て選択された状態になります。

ボディとタイヤを全選択
図 3.31 ボディとタイヤを全選択

 この状態で、

  1. 画面左のスケール(上下左右矢印)のボタンを長押し
  2. そのままマウスのカーソルを右に移動してScaleを選択

 します。

ボディとタイヤを全選択してスケールを変更
図 3.32 ボディとタイヤを全選択してスケールを変更

 画面上にX, Y, Z軸と白い円が現れるので、白い円をクリックしたままマウスのカーソルを動かします(ボディとタイヤのスケールが変更されるのを確認します)。

スケールのボタンを押した後の表示
図 3.33 スケールのボタンを押した後の表示
白い円をドラッグするとスケールが変更できる
図 3.34 白い円をドラッグするとスケールが変更できる

 クリックを解除すると、画面左下にResizeのウィンドウが現れます。ここで、Scale X, Y, Zを全て100に設定してください。

マウスのクリックを解除するとResizeウィンドウが出現
図 3.35 マウスのクリックを解除するとResizeウィンドウが出現
ScaleのX, Y, Zに100と入力(これでモデルが100倍なり、元の大きさに戻る)
図 3.36 ScaleのX, Y, Zに100と入力(これでモデルが100倍なり、元の大きさに戻る)

 モデルが大きくなりすぎて見えなくなりましたが、表示範囲を縮小(マウスホイールを回すとかで)するとしっかり全体を確認できます。

モデルの全体像
図 3.37 モデルの全体像

3.2.5. 回転とスケールの適用

 今のモデル位置と大きさが基準になるように設定します。これを行わないとUnreal Engineにモデルをインポートしたときに、座標系の向きとかモデルの大きさが変になったりします。

これを忘れていて Unreal Engineに車をインポートしたときに、

などの現象が発生しました。

 回転とスケールの適用は下の画像のようにモデルを全選択した状態で、

  1. ワークスペース上部のObjectタブをクリック
  2. Applyをクリック
  3. Rotation&Scaleをクリック

 します。

回転とスケールの適用
図 3.38 回転とスケールの適用

 回転とスケールの変更適用したら、画面左下にApply Object Transformの設定項目が現れます。ここで、RotationとScaleとApply Propertiesにチェックが入っているか確認してください。

モデルの全体像
図 3.39 モデルの全体像

3.2.6. ボディとタイヤの親子関係設定

 ボディとタイヤの間に親子関係(ペアレント)を設定していきます。今のままでは部品名がCubeやCylinderになっていて分かりにくいので、名前を変更します。

パーツ名を分かりやすい名前に変更
図 3.40 パーツ名を分かりやすい名前に変更

 パーツ名が変更できたら親子関係を設定していきます。まず、下の画像のように Wheel_FR(子) → Body(親) の順番に選択(Shiftキーを押しながら)します。

パーツの選択(子→親 の順番で)
図 3.41 パーツの選択(子→親 の順番で)

 子と親のパーツを両方選択したら右クリックし、

  1. Parentの中の
  2. Objectをクリック します。これでボディとタイヤの間に親子関係を設定することができます。
親子関係(ペアレント)の設定
図 3.42 親子関係(ペアレント)の設定

 他の3輪も同じように、Wheel(子) → Body(親) の順番で選択してから親子関係を設定していきます。

親子関係(ペアレント)の設定
図 3.43 親子関係(ペアレント)の設定
親子関係(ペアレント)の設定
図 3.44 親子関係(ペアレント)の設定
親子関係(ペアレント)の設定
図 3.45 親子関係(ペアレント)の設定

 親子関係が設定できると、画面右上のツリー(アウトライナー)が下の画像のようになると思います。

親子関係(ペアレント)の設定後のツリー
図 3.46 親子関係(ペアレント)の設定後のツリー

 こんな感じのツリーになっていればOKです。

3.2.7. fbxファイルのエクスポート

 ここまででBlenderのファイルを保存していない場合は、

  1. Fileタブをクリック
  2. Saveをクリック

 してファイルをします。ダイアログが出てきたら、ファイル名を設定(ここでは car とした)して、「Save Blender File」を押してください。

Blenderファイルの保存
図 3.47 Blenderファイルの保存
保存先と名前を設定(fbxファイルも同じパスに保存されます)
図 3.48 保存先と名前を設定(fbxファイルも同じパスに保存されます)

 いよいよBlenderで作ったモデルをUnreal Engine用に出力(エクスポート)します。

 まずは3Dモデルのエクスポートするために、

  1. Fileタブをクリック
  2. Exportを押す
  3. FBX(.fbx)を選択

します。

fbxファイルのエクスポート
図 3.49 fbxファイルのエクスポート

 そうするとダイアログが出てくるので、

  1. Include > Object Types を Mesh に設定
  2. Transform > Forward を X Forward に、Up を Z UP に変更
  3. Geomerty > Smoothing を Face に変更
  4. Armature の Bake Animation を無効にする
  5. 設定項目を確認して Export FBXを押す

 という流れでエクスポートしてください。

 これでUnreal Engineにインポートする準備は整いました。お疲れ様です! 疲れたら休憩しましょう~

エクスポート設定その1
図 3.50 エクスポート設定その1
エクスポート設定その2
図 3.51 エクスポート設定その2

4. ゲーム内で動かす

 ここからは、UNREAL ENGINE公式サイトにあるドキュメント「How to Set up Vehicles」を参考に作業を進めます。

4.1. Unreal Engine の起動

 Epic Games Launcher から Unreal Engine (今回は Version 5.4.4を使用) を起動します。

Unreal Engineの起動
図 4.1 Unreal Engineの起動

4.2. Vehicle Template を使う

 今回はとりあえず車を動かすことが目的なので、Vehicle Templateのコースを使います。Vehicle Template を使ってプロジェクトを作成するには、

  1. Unreal Engine のホーム画面左にある 「GAMES」タブをクリック
  2. 「Vehicle」のテンプレートを選択
  3. Project Defaults を「BLUEPRINT」に設定
  4. Project Name を「OriginalVehicle」にして
  5. 画面右下にある「Create」ボタンをクリック

 してください。

Vehicleテンプレートからプロジェクトを作成
図 4.2 Vehicleテンプレートからプロジェクトを作成

 プロジェクトが起動したら、画面上にあるプレイボタンを押して遊んでみてください(元々入っている車はかなりいい感じです)

ゲームをプレイしてみる
図 4.3 ゲームをプレイしてみる
プレイ中の様子(楽しい)
図 4.4 プレイ中の様子(楽しい)

4.3. Chaos Vehicle プラグインの有効化

 車を動かす方法は色々あるみたいですが、今回は Chaos Vehicle というプラグインを使って動かしたいと思います。物理演算がしっかり入っているので、かなりリアルな動きをします。

 Chaos Vehicle プラグインを有効化するためには、

  1. Edit タブの
  2. Plugins をクリック
  3. 検索欄で「Chaos Vehicle」と検索
  4. プラグインが有効にする(私はすでに有効になっていました)

 という手順で行います。手順4のタイミングでUnreal Engineの再起動が求められるので、再起動を行ってください。

プラグインの設定を開く
図 4.5 プラグインの設定を開く
ChaosVehiclesPlugin を有効化
図 4.6 ChaosVehiclesPlugin を有効化

4.4. ホイールブループリントの作成

 タイヤやサスペンションの設定を行うために、ホイールブループリントを作成します。

 ホイールブループリントの他にも後で色々なファイルを作成するので、フォルダを作成します。フォルダを作成するためには、

  1. 画面下側にある Content Drawer を開き
  2. Vehicles フォルダを探してクリック
  3. Vehicles フォルダ内で右クリックして 「New Folder」をクリックする。
  4. フォルダ名を設定(ここでは MyVehiclesとした)

 します。

アセット用のフォルダ作成
図 4.7 アセット用のフォルダ作成
フォルダが作成できた
図 4.8 フォルダが作成できた

 作成したフォルダ内(MyVehicles)で右クリックし、Blueprint Class を押す。そうすると、親クラスの選択画面が出てくるので

  1. ALL CLASSES をクリックし
  2. 検索窓で Chaos と検索して
  3. ChaosVehicleWheel を選択
  4. Slect をクリックする

 という手順でホイールブループリントを作成します。今回は前輪用のブループリント(ファイル名:BP_MyVehicle_FrontWheel)と後輪用のブループリント(ファイル名:BP_MyVehicle_RearWheel)を作成しました。

Blueprint Classの作成
図 4.9 Blueprint Classの作成
ホイールブループリントを作成する
図 4.10 ホイールブループリントを作成する
前輪用と後輪用のブループリントを作成
図 4.11 前輪用と後輪用のブループリントを作成

 まずは前輪の設定をします。前輪のホイールブループリント(ファイル名:BP_MyVehicle_FrontWheel)を開いて、

  1. Axle Type を Front に
  2. Wheel Radius を 30.0 (単位は cm)
  3. Frinction Force Multiplier を 1.9 に(デフォルト値でも良いです。アンダーステア気味にしたほうが操作しやすいので1.9にしました。)
  4. Affected By Steering を有効に(前輪に操舵角を入れるため)

 してください。後輪も続けて設定します。後輪のホイールブループリント(ファイル名:BP_MyVehicle_RearWheel)を開いて、

  1. Axle Type を Rear に
  2. Wheel Radius を 30.0 (単位は cm)
  3. Affected By HandBrake を有効に(サイドブレーキを引いたときに後輪がロックするようにするため)
  4. Affected By Engine を有効に(後輪駆動にするため)

 と設定します。これで足回りの設定は完了になります。

前輪の設定(その1)
図 4.12 前輪の設定(その1)
前輪の設定(その2)
図 4.13 前輪の設定(その2)
後輪の設定
図 4.14 後輪の設定

4.5. エンジントルクカーブの作成

 エンジンの特性を設定するために、エンジントルクカーブを作成します。エンジントルクカーブは、横軸がエンジンの回転数(単位は [rpm])、縦軸がエンジンのトルク(単位は [Nm])となります。

 エンジンのトルクカーブはインターネットに出ているのでそれを参考に作成すれば良いです。

 私は Performance Torqueというサイトの VEHICLE DATABASE にある、BMW M8 のエンジン特性を参考にして作りました。参考にするのは赤線のカーブになります。

BMW M8のエンジントルクカーブ
図 4.15 BMW M8のエンジントルクカーブ(Performance Torque - VEHICLE DATABASEより)

 それでは 図 4.15 を見ながら実際にトルクカーブを作っていきます。まずは Content Drawer上で

  1. 右クリックして Miscellaneous を選ぶ
  2. その中の Curve をクリック
  3. Pick Curve Class という画面が出てくるので、CurveFloat を選択

 してファイルを作成します。ファイル名は、MyVehicle_TorqueCurve にしました。

Curveファイル を作成する
図 4.16 Curveファイル を作成する
作成した Curveファイル
図 4.17 作成した Curveファイル

 次は作成した Curveファイル を開きます。カーブの通過点を追加するためには、右クリックして「Add Key」を選択します。

便利なカーブエディタの操作方法は Unreal Engine公式ページ に載っているので参考にすると便利です。

カーブの通過点を追加
図 4.18 カーブの通過点を追加

 そうすると、三角形(△)の点が追加されます。これがカーブの通過点(制御点)になります。

追加されたカーブの通過点
図 4.19 Curve の通過点を追加

 トルクカーブは原点を通るので(エンジンの回転数がゼロの時は発生するトルクもゼロなので)、通過点をマウスでドラッグして移動させます。

 点の動く方向は、グラフ編集画面上側にある Lock Axisボタン(上下矢印の)で制限できます。

追加されたカーブの通過点
図 4.20 Curve の通過点を追加
Lock Axis で点の動く方向を制限
図 4.21 Lock Axis で点の動く方向を制限

 同じ手順でカーブの通過点を追加していきます。カーブの通過点が追加できたら、自動補間ボタン(Cubic Auto Tangent)を押します。

補間ボタンを押すと 3次のスプライン補間が実行されます。

カーブの通過点を追加して補間ボタンを押す
図 4.22 カーブの通過点を追加して補間ボタンを押す

 補間を押しただけだと少し変化が急な部分もあるので、通過点部分の曲線の接線を編集します。

曲線の接線を編集
図 4.23 曲線の接線を編集

 少し通過点の数は少ないですが、これでトルクカーブが完成です!

トルクカーブ完成
図 4.24 トルクカーブ完成

4.6. 物理アセットの作成

 Blenderで自作した車のモデルをインポートして、物理アセットを作成します。まずは、

  1. Content Drawer で
  2. Import をクリックし
  3. Blenderからエクスポートした3Dモデル(ここでは car.fbx)を選択して
  4. 「開く(O)」ボタン

 を押します。

フォルダに物理アセットを追加する
図 4.25 フォルダに物理アセットを追加する

 インポートの設定が表示されるので、

  1. Skeletal Mesh にチェックを入れる
  2. Import Content Type が Geomerty and Skinning Weights になっていることを確認
  3. Import をクリック

 すれば、物理アセット(Physics Asset)がフォルダ内に生成します。

インポートの設定(Skeltal Mesh にチェックを入れる)
図 4.26 インポートの設定(Skeletal Mesh にチェックを入れる)

 物理アセット以外にも Skeletal Mesh や Skeleton も生成されますが、まずは 物理アセット(Physics Asset)を開いてください。

物理アセットが生成した
図 4.27 物理アセットが生成した

 開くと、自動的に作成された物理アセットを確認することができます。

編集前の様子
図 4.28 編集前の様子

 Wheel とか Body のプリミティブ(画像中で半透明で表示されている物体の形状)が変なのでこれを直したい思います。

 削除するには、画面左側のSkeleton Treeでスケルトンを全部選んで Deleteキー で消します。

スケルトンを全て選んで削除
図 4.29 スケルトンを全て選んで削除

 ここからは、Wheel と Body に適切なプリミティブのボディ(←この説明横文字ばっかりですが)を割り当てます。

 ボディは各部品のボーン(骨)に対して割り当てるので、Skeleton Tree でボーンが確認できるようにします。

 Skeleton Tree 上で右クリックして「Show All Bones」とするとボーンが見れるようになります。

ボーンの表示
図 4.30 ボーンの表示

 ボーンが表示されたら、

  1. Wheel 四輪のボーン(Wheel_FL, Wheel_FR, Wheel_RL, Wheel_RR)を選択
  2. 右下の設定の Primitive Type を 「Sphere」にして
  3. Create

を押します。これでタイヤに球状のボディが生成されます。

タイヤのボーンにボディを追加
図 4.31 タイヤのボーンにボディを追加

 同様にして車のBodyもやっていきます。

  1. 車のBodyのボーン(Body)を選択
  2. 右下の設定の Primitive Type を 「Single Convex Hull」にして
  3. Create

を押します。これで車のBodyにも正しい形のボディ生成されます。

車のBodyのボーンにボディを追加
図 4.32 車のBodyのボーンにボディを追加
物理アセットの作成が完了した
図 4.33 物理アセットの作成が完了した

4.7. アニメーションブループリントの作成

 車に動き(タイヤの上下動、ボディの揺れとか)を入れるために、アニメーションブループリントを作成します。Content Browser内で右クリックして、

  1. Animation の項目から
  2. Animation Brueprint を選択

 します。

アニメーションブループリントの作成
図 4.34 アニメーションブループリントの作成

 そうするとウィンドウが表示されるので、

  1. 作成したスケルトン(今回は car_Skeleton)を指定
  2. 検索窓で Vehicle と検索
  3. VehicleAnimationInstance を選ぶ
  4. Create を押す

 という手順でアニメーションブループリントを作成します。ここでは名前を Myvehicle_AnimBlueprint としました。

スケルトンの選択と親クラスの指定
図 4.35 スケルトンの選択と親クラスの指定
作成されたアニメーションブループリント
図 4.36 作成されたアニメーションブループリント

 作成したファイルを開くと、Output Pose というノードだけが置かれていると思います。このノードが最終的な姿勢の出力になるので、この前に色々なノードを追加していきます。

初期のアニメーションブループリントの中身
図 4.37 初期のアニメーションブループリントの中身

 それではノードを追加していきます。まずはAnimGraph内の空いているところで右クリックして、

  1. 検索窓で Mesh Space と検索して
  2. Mesh Space Ref Pose

 を選びます。

「Mesh Space Ref Pose」ノードの追加
図 4.38 「Mesh Space Ref Pose」ノードの追加

 同じ手順で 「Wheel Controller for WheeledVehicle」 と 「Component to Local」のノードも追加します。

「Wheel Controller for WheeledVehicle」ノードの追加
図 4.39 「Wheel Controller for WheeledVehicle」ノードの追加
「Component to Local」ノードの追加
図 4.40 「Component To Local」ノードの追加

 全部のノードが追加できたら、追加したノードを下の画像の順番(Mesh Space Ref Pose → Wheel Controller for WheeledVehicle → Component to Local → Output Pose)で並べてください。

ノードを並べる
図 4.41 ノードを並べる

 ノードを並べたら、ノードとノードを人のアイコンの部分で繋ぎます。

ノードの接続
図 4.42 ノードの接続

 全部のノードが接続出来たら、アニメーションブループリントの作成は完了になります。

アニメーションブループリントが完成した
図 4.43 アニメーションブループリントが完成した

4.8. ビークルブループリントの作成

 車関係の設定はこれが最後になります。

 4.4. ホイールブループリントの作成ではタイヤやサスペンションなど足回りの設定をしましたが、ここでは エンジンやトランスミッション など駆動系の設定をしていきます。

 足回りの設定だけでなく今まで作成したもの(エンジントルクカーブ、アニメーションブループリントなど)をビークルブループリントに紐づけていって、最終的に動く車を作って行きます。

 それではビークルブループリントを作成します。ビークルブループリントを作成するには Content Browser 内で右クリックして、Blueprint Class を選んで下さい。

ビークルブループリントの作成
図 4.44 ビークルブループリントの作成

 そうすると親クラスの選択画面が出てくるので、

  1. ALL CLASSES で
  2. 「Wheeled」と検索して
  3. WheeledVehiclePawn を探して
  4. Select を選択

 します。ファイル名は BP_MyVehicle とします。(名前は自由です)

親クラスの選択
図 4.45 親クラスの選択
ホイールブループリントが作成された
図 4.46 ホイールブループリントが作成された

 ビークルブループリントにアニメーションブループリントとメッシュを紐づけます。作成したビークルブループリントを開いて、

  1. Anim Class を MyVehicle_AnimBlueprint_C に設定
  2. Skeltal Mesh Asset を car に設定

 してください。

アニメーションブループリントとメッシュをビークルブループリントに紐づけ
図 4.47 アニメーションブループリントとメッシュをビークルブループリントに紐づけ

 この設定ができたら、物理シミュレーションを有効にするために「Simulate Physics」にチェックを入れてください。

物理シミュレーションの有効化
図 4.48 物理シミュレーションの有効化

 次に車の後方にカメラを追加します。カメラと車の距離を一定に保つように配置します。そのためにまずは、

  1. 画面左側の Components ウィンドウで Add を押して
  2. 検索窓で 「Spring」と検索
  3. Spring Arm をクリック

 します。同じ手順で、カメラも追加してください。

Spring Arm の追加
図 4.49 Spring Arm の追加
Camera の追加
図 4.50 Camera の追加

 カメラが追加できたら、車を操作した時に操作しやすいように位置を調整します。

 移動のボタンと回転のボタンがあるので、上手く使いながらカメラ位置と角度をセッティングしてください(これで操作する時の視点が決まります)。

カメラ位置の調整
図 4.51 カメラ位置の調整

 次に車輪の設定をしていきます。

 ツリー上で Vehicle Movement Component をクリックした後、Wheel Setups の横にあるプラスボタンで 4つの配列要素を追加してください。

 配列要素を追加できたら、Wheel Class と Bone Name を下の画像のように設定してください。

Wheel の設定
図 4.52 Wheel の設定

 エンジンの設定をします。Mechanical Setup の Engine Setup を開きます。

 ここで、Torque Curve の左にある三角形を開いて展開し、4.5. エンジントルクカーブの作成で作成したトルクカーブ(MyVehicle_TorqueCurve)を割り当てます。

 Max Torque(最大トルク) や Max RPM(最大の回転数)は、参考にしたトルクカーブに合わせて設定して下さい。この他のエンジン設定はデフォルトのまま行きました。

Engine の設定
図 4.53 Engine の設定

 デフ(Differential Gear)の設定をします。今回は後輪駆動を想定しているので、Differential Typeを「Rear Wheel Drive」に設定します。

Differential の設定
図 4.54 Differential の設定

 トランスミッションの設定も行います。段数や変速のタイミングを色々変更できますが、今回はデフォルトのまま行きました。自分の好みに応じて変更すれば良いと思います。

Transmission の設定
図 4.55 Transmission の設定

 ここで少し話が変わって、車を操作するためにキーボードやゲームパッドの入力設定をしていきたいと思います。

 そのために、Edit タブから、Project Settings を開いて下さい。

プロジェクト設定を開く
図 4.56 プロジェクト設定を開く

 Project Settings が開いたら Input の項目を探します。Input は Engine の項目の中にあります。

入力設定を開く
図 4.57 入力設定を開く

 Inputの設定で、キーボードとゲームパッドの設定をしていきます。設定方法は、

  1. Axis Mappings の横にあるプラスボタンを押し
  2. 入力変数の名前を付けます(後のプログラムで使います)
  3. 変数名の左にある三角ボタンを押して展開して
  4. 割り当てるキーを選択(キーボードのマークを押してから任意のキーを押すか、プルダウンから選ぶか検索する)
  5. Scaleを設定

 という流れになります。

入力設定を開く
図 4.58 入力設定を開く
入力設定を開く
図 4.59 入力設定を開く

 1~4 の手順で他の入力設定も行います。入力設定ができると下の画像のようになります(今回使うのは赤枠で囲っているところだけです)。

今回設定した入力設定
図 4.60 今回設定した入力設定

 次は、先ほど設定したキーボード入力で車を操作できるようにプログラムを作成します。

 まずはビークルブループリント(ここでは BP_MyVehicle)を開いて、

  1. Componentsのツリーから Mesh (VehicleMesh) をクリックし
  2. Event Graph のタブを選択

 してください。

ビークルブループリントのイベントグラフ(Event Graph)開く
図 4.61 ビークルブループリントのイベントグラフ(Event Graph)開く

 そうすると、3つくらいノードが既に置かれていると思います。今回はこれらのノードを使わないので、

  1. マウスで範囲選択して
  2. 削除

 します。

不要なノードを削除する
図 4.62 不要なノードを削除する

 次は、キーボードやゲームパッド入力に応じて車が動くように設定していきます。

 まずは、イベントグラフにツリーにある「Vehicle Movement Component」をイベントグラフにドラッグ&ドロップします。

Vehicle Movement Componentの作成
図 4.63 Vehicle Movement Componentの作成

 Vehicle Movement Component が配置できたら、

  1. Vehicle Movement Component の右側にあるピンをマウスでドラッグして
  2. 適当なグラフエディタ上の場所で離します。離した直後に検索画面が出てくると思うので「Set Throttle」と検索し、
  3. Set Throttle Input を選びます。
スロットル入力の作成
図 4.64 スロットル入力の作成

 続けて、

  1. Event Graph上で右クリックして「Throttle」と検索して
  2. Axis Events の「Throttle」をクリック

 します。

スロットル入力イベントの作成
図 4.65 スロットル入力イベントの作成

 これでスロットル入力に必要なノードは全て揃ったので、

  1. InputAxis イベントの「Axis Value」と Set Throttle Input の「Throttle」を接続
  2. InputAxis イベントの「Exec(白い右向き矢印みたいな)」と Set Throttle Input の「(白い右向き矢印みたいな)」を接続

 します。

ノードの接続
図 4.66 ノードの接続

 1~8の手順でステアリングとブレーキの入力も作成します。

ステアリングとブレーキの入力も作成
図 4.67 ステアリングとブレーキの入力も作成

 ここまでできれば車を操作することはできるのですが、せっかくなのでハンドブレーキも追加します。

 ハンドブレーキのプログラムは下の画像のようになります。ボタンが押されたときにハンドブレーキを有効にして、離すと無効にするというプログラムになります。

ハンドブレーキの設定
図 4.68 ハンドブレーキの設定

 ブループリントが作成できたら、①コンパイルと②保存を行ってください。

ビークルブループリントのコンパイル
図 4.69 ビークルブループリントのコンパイル

 アニメーションブループリントのコンパイルと保存をしていなかった場合は、同じように行います。

アニメーションブループリントのコンパイル
図 4.70 アニメーションブループリントのコンパイル

 これでビークルブループリントの作成は完了です!

4.9. ゲームモードの作成

 最後にゲームモードを作成していきます。今のままでは、デフォルトのかっちょいい車が走る状態になっています。

 ゲームモードを作成するには、まずはContent Browser上で右クリックして「BlueprintClass」を選びます。

BlueprintClassの作成
図 4.71 BlueprintClassの作成

 次に親クラスの選択画面が出てくるので、「Game ModeBase」を選びます。

親クラスとしてGame ModeBaseを選択
図 4.72 親クラスとしてGame ModeBaseを選択

ここでは、「MyVehicle_GameMode」という名前でファイルを作成します。

ゲームモードを作成
図 4.73 ゲームモードを作成

 次に、作成したゲームモードを開いて

  1. Default Pawn Class を「BP_MyVehicle」(4.9. ビークルブループリントの作成で作った)にして
  2. コンパイル
  3. 保存

 をします。

ゲームモードに自作ビークルブループリントを設定
図 4.74 ゲームモードに自作ビークルブループリントを設定

 ゲームモードが設定出来たら、ワールド設定を開きます。ワールド設定を開くには、

  1. Window をクリックして
  2. World Settings を選択

 します。

ワールド設定を開く
図 4.75 ワールド設定を開く

 最後にゲームモードの上書きを行います。ゲームモードの上書きを行うには、

  1. GameMode Override をクリックして(デフォルトはAdvVehicleGameMode)
  2. 自分で作成したゲームモード(ここでは「MyVehicle_GameMode」)に

 変更します。

ゲームモードの上書き
図 4.76 ゲームモードの上書き

 これで全ての設定が完了しました。実際に動かしてみましょう!

5. 動かしてみる

 画面上にある再生ボタンを押すか、「Alt + P」プレイできます。車の操作をはじめるには、画面を一度クリックする必要があります。

 自分で作った車をサーキットで走らせることができます。これは楽しい!!

実際にプレイしてみる
図 4.77 実際にプレイしてみる

6. まとめ

 車の3Dモデルの作成から1本の記事に書いたので長い記事になってしまいました…

 車の自作3Dモデルを運転して走らせたいときに、少しでも参考になれば嬉しいです!

7. 参考文献

  1. UNREAL ENGINE(Epic Games)「How to Set up Vehicles」、(https://dev.epicgames.com/documentation/en-us/unreal-engine/how-to-set-up-vehicles-in-unreal-engine)
  2. YouTube(@Math B)「01 - Rig and export vehicles from Blender to the UE5. (UE5 Vehicle Tutorial)」、(https://youtu.be/CXm8Ruu9saA?si=2JnJTWx-YTTxP1D5)
  3. YouTube(@Math B)「02 - Make your imported vehicle drivable! (UE5 Vehicle Tutorial)」、(https://youtu.be/VC_9hRRTWdM?si=Hh5fBAwFluGSE84I)
  4. パソコン工房 NEXMAG「Blenderインストール方法と基本的なオブジェクトの作り方」、(https://www.pc-koubou.jp/magazine/68319?srsltid=AfmBOoop6ZpQF8_u6_WhaIgGhg0NL8DInaD7bhfUBDLzChj8U1g2taf6)
  5. 岡田和也「猫でも分かるUnreal Engineの学び方 - 超初心者向け編 - 2023 v1.0」、(https://www.docswell.com/s/EpicGamesJapan/KW1WNR-HowToLearnUE5_2023)
  6. ゲームメーカーズ「UE5版 ゲームづくりを始めよう!」、(https://gamemakers.jp/howto/)
  7. Performance Torque「VEHICLE DATABASE」、(https://www.p-torque.co.uk/vehicle-database/)