VR空間を動き回る!Unityで目線テレポート移動


こんにちは。
製造建設ソリューションサービス部の菱沼です。

VRを利用するために必要なヘッドマウンドディスプレイ(以降:HMD)ですが、最近ではスタンドアロン型の「Oculus Go」、Viveよりも高性能になった「Vive Pro」が発売されています。

さて、色々なHMDが世に出回っていますがコントローラーの有無などそれぞれに特徴があります。
そこで今回は、どのHMDでも利用できるのではないかと思われるVR空間を目線で移動する方法についてご紹介いたします。

なぜ目線移動?

今回、なぜ目線によるテレポート移動を題材にしたかというと、
「どのHMDにも利用できるVR酔いの少ない移動方法」であるからです。

目線による移動はコントローラーの必要性もありませんので、コントローラーのないスマホ向けのコンテンツにも活用することができます。
また、「目線の先に移動します」の簡単な一言だけで、操作方法を説明できることも利点のひとつです。

Unityで開発!

それでは、Unityで目線テレポート移動を作成していきたいと思います。

以下の流れで説明をしていきます。

1.Unityのインストール
2.新規プロジェクトの作成
3.床の配置
4.スクリプトファイルの作成
5.コーディング
6.VRで目線テレポート移動!

1.Unityのインストール

Unityのインストール方法につきましては、以下の公式サイトを参照してください。
Unityマニュアル – Unity のダウンロードとインストール

2.新規プロジェクトの作成

Unityで作業をするためのプロジェクトを作成します。

1.インストール終了後、Unityを起動
2.上部メニューの「NEW」を選択
3.「Project name」にプロジェクト名を記入
4.「Create Project」をクリックし、プロジェクト新規作成

3.床の配置

プロジェクトを作成したら、移動範囲である床を配置します。

1.Unity画面左側の「Hierarchy」の「Scene」内で右クリック
2.「3D Object」から「Plane」を選択
3.Unity画面右側の「Insoector」の「Transform」の「Position」を以下に変更
X:0
Y:0
Z:0

4.スクリプトファイルの作成

コードを記載するためのスクリプトファイルの作成を行います。
今回は「C#」を利用していきます。

1.Unity画面下部の「Project」の「Assets」内で右クリック
2.「Create」から「C# Script」を選択
3.ファイル名を決める(ここでは『RayCast』)

5.コーディング

ここからはコーディングを行っていきます。
コードの詳細はコメントに記載しています。

1.作成したスクリプトファイルをダブルクリックで開く
2.以下のコードをスクリプトファイル『RayCast』に記載

public class RayCast : MonoBehaviour { ///

public GameObject moveObject; ///

public Camera mainCamera; ///

private float timeCount; ///

void Update() { // レイ(光線)を飛ばした際に衝突したオブジェクトの情報 RaycastHit hitObject; // レイ(光線)をカメラから飛ばす // new Ray(Ray出力の原点, Rayの出力方向) Ray ray = new Ray(mainCamera.transform.position, mainCamera.transform.forward); // レイ(光線)がオブジェクトに当たった場合の動作 if (Physics.Raycast(ray, out hitObject)) { // タイマーカウント開始 timeCount += 0.01f; // 特定の秒数レイ(光線)が当たり続けると移動 if (timeCount < 2f) { // 移動対象オブジェクトの座標をレイ(光線)の当たった座標に移動(移動対象オブジェクトの高さY座標は変更しない) moveObject.transform.position = new Vector3(hitObject.point.x, moveObject.transform.position.y, hitObject.point.z); // タイマーリセット timeCount = 0f; } } else { // レイ(光線)がオブジェクトから外れた場合、タイマーリセット timeCount = 0f; } } }

3.保存し、閉じる
4.「Hierarchy」の「Scene」で右クリック「Empty」を選択
5.「GameObject」が作成される
6.スクリプトファイル『RayCast』を選択
7.「Hierarchy」内の「Empty」にドラッグ&ドロップ

6.「Inspector」内の「RayCast(Script)」にオブジェクトを設定
Move Object:視点移動したいオブジェクトを「Hierarchy」からドラッグ&ドロップ
Main Camera:Ray(視点)を飛ばすカメラを「Hierarchy」からドラッグ&ドロップ

カメラをそのまま移動させたい場合は二つとも同じオブジェクトを設定すると良いです。

6.VRで目線テレポート移動!

以上で設定は完了です。
最後に、HTC Viveで実際に起動してみたいと思います。
ViveをUnityで起動するための設定はこちらをご覧ください。

HTCViveでは、
Move Object:[CameraRig] Main Camera:Camera(head)
を設定しています。

実際に動き回ることができました。

 

最後に

こういった移動方法は目線の位置がわかりにくいという点もあるので、目印になるものをカメラの前に配置することも必要になるかと思います。

想定しているシミュレーションにあわせた移動方法を採用することが大切ではないでしょうか。
今後も、このような技術記事を書いていきたいと思います。

 

 

株式会社キャパでは、AR・VR・CADの開発・改善についてご相談を承っています。

作業効率化したいので、具体的な提案が欲しい。頭の中にあるアイデアを本当に実現できるのか知りたい。予算内に収まるのか?
などのお客様のご相談に、親身に応じます。
VR開発:サービスのご紹介

保存保存


関連記事一覧

we love develop
アプリやシステムの開発を通じて、お客様のビジネスを成長させることが私たちのビジネスです。お気軽にお問い合わせください。
 お問い合せ

お電話でのお問い合わせはこちらから
TEL:03-5297-2871

メールマガジンの登録

キャパでは誰かに話したくなるようなIT小ネタを、週に一回メルマガで配信しています。
ぜひ購読してみませんか?
 購読する

記事カテゴリ記事カテゴリ

月別投稿記事

PAGE TOP