VRカーショップのショールームを作ろう!
はじめに
前回は、アセットのインポートとUE4のエンジン設定を行いました。これでVRコンテンツを開発する準備が整ったので、本格的にメイキングを始めます。今回は、本連載のメインコンテンツであるVRカーショップのショールームを作成してみます。初心者の方にも分かりやすいように画像を使って説明しますので、ひとつずつ進めていきましょう。
床を作ってみよう
それでは、前回でインポートした「SuperGrid Starter pack」を使ってマップを作っていきます。まだインポートができていない場合は、前回の解説を参考にインポートしておきましょう。
まず「MotionControllerMap」を開き、アウトライナから以下を除く全てのものを削除してください(図1)。アウトライナで選択して「Delete」ボタンを押せば削除できます。
◆削除しないもの
・Lightingフォルダ及びそのフォルダ以下にあるもの
・SkySphereBluePrint
・VRPawn
削除後のアウトライナは図2の状態になるはずです。
次に、コンテンツ/SuperGrid/Source/Meshesにある「SuperGridBox」をドラッグ&ドロップで追加し、トランスフォームを図3のとおり設定してください(トランスフォームはオブジェクトの位置、倍率、角度、可動性に関する設定項目です。エディタ上でオブジェクトを動かすことでも変更できますが、まずは数値を入力して設定してみましょう)。
これで床が作成できました。
移動範囲を設定しよう
床は作成できましたが、まだ移動はできません。移動するには、画面左にある「モードタブ」から「NavMeshBoundsVolume」を配置する必要があります。
「NavMeshBoundsVolume」は移動関連の制御を行うときに使用する機能です。なお、「NavMeshBoundsVolume」が設定されていない場所には移動できないので、移動させたくない場所がある場合は「NavMeshBoundsVolume」を設定しないことで移動範囲を制限することもできます。
検索ボックスに“Nav”と入力すると「NavMeshBoundsVolume」が表示されるので、ドラッグ&ドロップでレベルに追加しましょう。
追加できたら、トランスフォームを図5の通りに設定してビルドすれば「NavMeshBoundsVolume」の設定は完了です。これで床の上を移動できるようになるはずです。
柱を作ってみよう
床ができたので、続いて柱を立ててみましょう。「CG空間に柱はいらないのでは?」と思われるかもしれませんが、細かい点までしっかり作りこむことがVRの現実感を高めることにつながります。
先ほどと同様に、コンテンツ/SuperGrid/Source/Meshesにある「SuperGridSylinderFull」をドラッグ&ドロップで追加し、トランスフォームを図6の通りに設定します。[Alt]キーを押しながらエディタ上の“→”をドラッグすると「SuperGridSylinderFull」を複製して移動できるので、「SuperGridSylinderFull」を床の四隅に配置してください。
[Ctrl]キー、または[Shift]キーを押しながら選択すると複数選択できるので、四隅へ配置した「SuperGridSylinderFull」を全て選択し、図7の通りにトランスフォーム/拡大・縮小を設定してください。
これで柱も完成しました。
屋根を作ってみよう
次は屋根を作りましょう。屋根は床を複製して高さを調節するだけで簡単に完成してしまうので、今回は天窓付きの屋根を作ってみます。
まず床を複製し、トランスフォーム/位置/Zを図8の通りに設定してください。
続けて、屋根の面積を小さくします。トランスフォームを図9の通りに設定してください。
さらに屋根を複製して、トランスフォームを図10の通りに設定します。
さらにもう1つ屋根を複製して、トランスフォームを図11の通りに設定してください。ここが天窓になります。
最後に複製した屋根を選択して、詳細のMaterialsにコンテンツ/SuperGrid/StarterPack/Source/Materials/Palette以下にある「M_SuperGrid_Holo_Color」を適応してください(ドラッグ&ドロップもしくはプルダウンメニューから選択することで適応できます)。
これで屋根も完成しました。完成イメージは図13のとおりです。このような状態になりましたか?
UE4では、Materialsに各種マテリアルを適応することでオブジェクトの見た目を簡単に変更できます。マテリアルそのものを編集する機能も備えているので、自分で簡単にマテリアルの質感や色をカスタムできます(マテリアルの編集については、次回で紹介する予定です)。
壁を作ってみよう
最後に壁を作ります。ここまではオブジェクトのトランスフォームパラメーターを直接編集しましたが、壁作りではエディタ上から位置を調節する方法を試してみましょう。
エディタ上でオブジェクトを選択し、オブジェクトの周りに出現する赤、青、緑のつまみをドラッグすることで、それぞれ移動(図14)、回転(図15)、拡大・縮小(図16)ができます。モードはオブジェクトを選択した状態で右上のモードパネルをクリックするか、ショートカットキーを押すことでも変更可能です。
少し操作を練習してみましょう。まずは屋根か床を複製して、トランスフォームを図17の通りに設定してください。
先ほど作った壁をさらに複製して、トランスフォームが図18のようになるまで矢印をドラッグして移動させます。
次に、壁2枚を選択([Ctrl]キーを押しながら両方をクリック)して回転モードに変更し、[Alt]キーを押しながら回転させてください、作成された複製が回転するはずです。
図20のように90°回転させ位置調整モードで壁の位置を大まかに調整してください。
大まかな位置の調節ができたので、複数選択を解除して微調整をしていきましょう。2つの壁のトランスフォームがそれぞれ図21、図22のような状態になるように、位置調整モードで壁の位置を調整してください。
これで、ショールームが完成しました(図23)!
早速、VRプレビューで見てみましょう。透明な天井から光が差し込む、ハイセンスなショールームになっているはずです(図24)。
ブループリントで処理を作ってみよう
UE4で処理を実装するには、ブループリントとC++の2通りの方法があります。ブループリントは視覚的に分かりやすいビジュアルスクリプトスタイルの開発言語で、ノードを繋ぐだけで処理を作ることができます。
このような開発言語はUnityでC#の開発に慣れている方や本職のプログラマーの方から見ると自由度が低そうにも見えるかもしれませんが、非常に多様なノードが用意されていることに加え、変数、インターフェイス、構造体なども自由に定義できるため、殆どの場合はブループリントで十分対応できます(特殊な処理を実装する必要がある場合はC++でブループリントを拡張することで対応できます)。
まずはブループリント入門として、簡単なブループリントで処理を作成してみましょう。画面上部の「ブループリント」の右にある「▼」をクリックしてメニューを開き、「レベルブループリントを開く」を選択してください(図25)。
レベルブループリントの編集画面が開くので、画面上で右クリックしてノードの選択画面を呼び出し、検索ボックスに“BeginPlay”と入力します。「イベント BeginPlay」という項目が表示されるので(図26)、クリックして「BeginPlay」ノードを配置してください(図27)。
「BeginPlay」は、ブループリントがフィールド上に呼ばれたとき初めに1度だけ呼ばれるノードです。ブループリントが初めからフィールド上にある場合はプレイの開始時に、途中でスポーンした場合はスポーンした瞬間に呼ばれます。今回編集している「レベルブループリント」はこのレベル自体に付いているブループリントなので、このレベルをスタートした瞬間に1度だけ呼ばれます。
「BeginPlay」ノードの右にある矢印にマウスを合わせてドラッグすると線が引けるので、適当な位置までドラッグしてください。ノードの選択画面で検索ボックスに“String”と入力すると表示される「Print String」という項目をクリックして(図28)、「Print String」ノードを配置します(図29)。「in String」という項目に‟HelloBluePrint”と入力してください(ここに入力された文字列が出力されます)。
次に、左上の「コンパイル」ボタンをクリックしてコンパイルを実行します。これでブループリントの編集は完了です。レベルを起動すると「BeginPlay」→「Print String」の順番で処理が流れ、画面に文字列が出力されるはずです。
それでは、早速動作を確認してみましょう。今回は文字列の出力を確認するだけなので、VRモードではなくシミュレートモードで実行してみます(図30)。
図31のように、画面左上に“HelloBluePrint”の出力が確認できればOKです。今回は、VR空間上にショールームを作り、ブループリントで処理が作成するところまで解説しました。皆さんも少しずつUE4の操作に慣れてきたのではないでしょうか。
次回は、今回作成したショールームに車や光源を配置し、オブジェクトにブループリントを付けて処理を作成していきます。お楽しみに!
“産業VR”とはどういうものでしょうか。多くの方は“産業分野で使われるVR”という印象をお持ちかと思いますが、より正確には“課題を解決することを目的としたVR”が産業VRであると言えます。
例えば、2月にJR西日本が導入した「VRによる災害対策訓練ソリューション」では、“運転士のさらなる判断力の向上”を目指しているそうですし、アルテリア・ネットワークス株式会社が不動産業者向けに提供しているVRを活用した物件の内覧サービス「VR内見」では、“内見の効率化”と“物件稼働率の向上”が期待されているそうです。
このような実例以外にも、世の中にはVRで解決できそうな課題がたくさんありそうです。現在“産業VR”は世界的に注目されており、将来的にはVR市場の9割を占めるようになるも言われています。その背景にはVRの“世の中の多くの課題を解決できる可能性”への大きな期待があると言えるのではないでしょうか。
日本でも、産業分野に強く影響力を持つIT企業が“産業VR”に取り組み始めています。6月には“産業VR”にフィーチャーした製品展示会「第25回 3D&バーチャル リアリティ展(IVR)」が開催され、“産業VR”の業界は盛り上がりを見せています。筆者個人としては今後「VRを活用した課題解決」や「VR活用ソリューション」が流行し、数年前の“スマートフォンバブル”のような“VRバブル”が起こるのではないかと期待しています。
スマートフォンバブルの波に乗って急成長した企業も、次の大きな波としてVRに着目し、産業VR市場を狙った大きな投資を行っているようです。医療系VRスタートアップのHoloEyes株式会社は、VR(AR)による手術レビューシステムを複数の医療機関に納入しています。
今、“産業VR”は急速に動き始めています。