VR型ドライブシミュレータの設計

平石研究室 S18059 柏瀬 悠輔

⽬次
1.

はじめに

2.

ゲーム制作方法

3.

卒業研究Aの内容

4.

使用機材

5.

OculusQUEST2の説明

6.

LogicoolG29の説明

7.

開発環境

8.

ゲーム内容

9.

Level別の車の最高速度

10. 自車を操作するプログラム
11. 自車プログラムの説明
12. 障害物を配置するプログラム
13. 設定の手順
14. PCとOculusQUEST2の接続方法
15. Unityの設定
16. 実行方法
17. 実行動画
18. おわりに
19. 参考文献

はじめに
本研究では，VR型のドライブシミュレータの作成を目的とする．
VR技術を利用することで，実際の運転ではなく，シミュレーション環境による現実に近い形での実験を可能にする．
作成したドライビングゲームをゲーム用のドライビングコントローラに対応させ，VR 装置への拡張を行なった．

ゲーム制作⽅法
ドライビングゲームを制作するためにUnityを使用した.
ゲームに使用する車や道路(図2)はアセットストア(図1)からインストールした.

図1:unityのアセットストア

図2:ゲーム素材

卒業研究Aの内容
卒業研究Aでは，ゲームエンジンであるUnityを利用し，簡単なドライビングゲームを作成した．
他の車をランダムに配置し，PCのキーボードを使って自車を操作し，他の車との衝突を避けながら，移動することを可能にした．

使⽤機材
・Oculus QUEST2(図3)・ LogicoolG29のドライビングコントローラ(図4)

図3:Oculus QUEST2

図4：ドライビングコントローラ

OculusQUEST2の説明本研究では，ドライビングゲームをVRに拡張するため
OculusQUEST2を使用した．
OculusQUEST2は，Unityに対応しており，UnityでOculus Integrationというライブラリをダウンロードすることで，作成したアプリケーションをVR環境に対応させることが可能である．

LogicoolG29の説明
本研究では，Logicool社製のDRIVING FORCEレーシング
ホイールG29を採用した．
この機種はOculusQUEST２と同様でUnityに対応しており，Logitech SDKを利用して独自のプログラムに，ドライビングコントローラを対応させることが可能である．

開発環境
・Windows10

使用しているPC

・Oculus Integration Unityのプロジェクトに取り込む
・ Logitech SDK
Unityのプロジェクトに取り込む
・Unity 2020.3.25f1 ゲーム開発エンジン

ゲーム内容本研究のドライビングゲームは,障害物の車に当たらないように直線の道路を走る簡易的なゲームになっている.
障害物に衝突せずに，制限時間が0になるとGAMECLEARという文字が画面に表示されてゲームが終了される(図5)．
障害物に衝突した場合には，その場でGAMEOVERとなる(図6)．

図5:GAMECLEAR画⾯

図6:GAMEOVER画⾯

Level別の⾞の最⾼速度
本研究のドライビングゲームの最初の制限時間(Time)は45秒に設定しており，Levelが上がるにつれて10秒ずつ制限時間が長くなるように設定した．
また，Levelが上がるごとに車の速度が速くなる(表1)．

表1:最高速度の変化表
Level
Level 1

最⾼速度(m/s)
50

Level 275

Level 3100

Level 4125

Level 5150

⾃⾞を操作するプログラム
1行目のrec.lXはハンドル操作の値（steer）．
2行目のrec.lYはアクセルペダルの値(accel)．
3行目の rec.lRzはブレーキペダルの値(brake)．
rec.rglSlider[0]ハンドブレーキの値(hand)を取得するための変数である．
それぞれ，符号付き整数２バイトの範囲（-32768から32767）でデータを取得することができる．

1 steer =rec.lX / 32768f;
2 accel = -1 * rec.lY / 65536f + 0.5f;
3 brake = -1 * rec.lRz / 65536f + 0.5f;
4 hand = -1 * rec.rglSlider[0] / 65536f+0.5f;

⾃⾞プログラムの説明
ハンドルの値は，左に限界まで切った状態 1 steer
で-1，真ん中で0，右に限界まで切った状態 2 accelで１となるようにしている．
3 brake
2行目から4行目のアクセルの値，ブレーキ 4 hand
+0.5f;の値，ハンドブレーキの値では，それぞれの変数の値が，踏んでいない状態でプラス，踏んだ状態でマイナスとなるため，踏んでない状態で0，強く踏んだ状態で-1となるように，それぞれの値をセットしている．

=
rec.lX / 32768f;= -1 * rec.lY / 65536f + 0.5f;= -1 * rec.lRz / 65536f + 0.5f;= -1 * rec.rglSlider[0] / 65536f

障害物を配置するプログラム
右側のプログラムは障害物をランダムに配置するプログラムの一部である．
１行目から4行目で，他の車のオブジェクトを４つ生成している．
6行目から8行目の処理によって，自分の車が座標値で80だけ移動するごとに，他の車をランダムに生成している．

1
2

public GameObject enemy1;
public GameObject enemy2;

3

public GameObject enemy3;4public GameObject enemy4;5void Update() {6if (transform.position.z > 80) {7CreateEnemy();8}9}

設定の⼿順OculusQUEST2をUnityで使用するために以下の手順で設定を行った．

スマートフォンにOculusのアプリをインストール

UnityがOculusに対応できるように設定を行う

アプリで設定を行い，OculusQUEST2と連動させる

PCとOculusQUEST2を接続させる

OculusQUEST2の初期設定を完了させる

ドライビングゲーム
を実行

PCとOculus QUEST2の接続⽅法
PCとOculus QUEST2を接続するためにUSB Type-Cケーブルを使用した．
PCとOculusQUEST2をケーブルで接続すると図7のようにPCのUnity画面をOculusQUEST2で見ることが可能になる．
図7:接続後の画面

Unityの設定
OclusQUEST2でUnityの画面を見るためにUnityで設定を行う.
設定の手順は以下の通りである.
Unity Hub で Unity をインストール

Unityの新規プロジェクトを「3D」テンプレートで作成

Asset Store から
Oculus Integrationをインストール

Edit > Project Settings>
XR Plugin を開いて「InstallXR Plugin Management」
ボタンを押すlug-in Provides が表示されたら“Oculus” にチェックを入れる

ビルド・実行する

実⾏⽅法
PC側のUnityの実行ボタンをクリックすると，OculusQUEST2でドライビングゲームの実行画面を見ることが出来る．
次のスライドの実行動画は指定された50MBのサイズ制限を超えないように動画を圧縮している為，画質が少し粗くなっています．

実⾏動画

おわりに
本研究では，Unityで作成したドライビングゲームをドライビングコントローラに対応させ，VR装置への拡張を行なった．
設定を完了するためにダウンロードするものが多く，時間がかかるため環境が整った場所で作業をする必要がある．

参考⽂献
コース作成方法
https://hiyotama.hatenablog.com/ent
ry/2015/05/05/080000

G29ハンドルをUnityで使う方法
https://fujiya228.com/unitylogitech-g29-setup

https://codegenius.org/open/course
s/24/sections/118

OculusQUEST2をUnityで使用する方法
https://manurito.com/3d_vrdev01/

衝突したらゲームオーバーシーンにhttps://framesynthesis.jp/tech/unity/oculusquest/

追跡カメラコード切り替えるコード
https://futabazemi.net/notes/unity_scene/