VRカーショップのショールームに自動車を飾ろう!
はじめに
前回は、VRカーショップのショールームの床と屋根、柱や壁を作りました。これでUE4の基本的な使い方はマスターできましたね。
さて、今回は下記の2つの作業を行っていきます。
- VR空間に手で掴めるオブジェクトを作る
- ショールームに自動車を配置する
「VRでモノを掴むなんてちょっと難しそう」と思うかもしれませんが、サンプルで提供されている機能を手順通りにそのまま進めていけば簡単にできてしまいます。
では、さっそく始めましょう!
1. 掴めるオブジェクトを作る
ブループリントの環境を準備する
まずはブループリント編集用の作業フォルダを作りましょう。コンテンツブラウザ上でコンテンツフォルダを右クリックしてメニューを開き、「新規フォルダ」を選択します(図1)。
新規フォルダが作成されたら、名前を“work”とします(図2)。同様の手順で、「work」フォルダの下に「BP」フォルダも作成してください(なお、作成したフォルダは場所がすぐに分かるよう整理しておきましょう。後でフォルダが見つからなくなると大変です。通常のプログラム作成の時も同じですね)。
ブループリントを作る
前回は「レベルブループリント」を使用して文字列を出力する処理を作成しましたが、今回は新規にブループリントを作成します。
その前準備として、コンテンツ/SuperGrid/StarterPack/Source/Meshes以下にある「SuperGrid_Box」(図3)をレベルエディタにドラッグ&ドロップして追加してください。
追加したSuperGrid_Boxを選択すると、右側に「ブループリント/スクリプトを追加する」というボタンが表示されるのでクリックしてください。さらに作成場所を選択するポップアップが表示されるので、先ほど作成した「BP」フォルダを選択してブループリントを作成しましょう(図4)。
これで「BP」フォルダに「SuperGrid_Box_Blueprint」が作成されました。分かりやすいように、名前を“pickupGridBox_Blueprint”に変更しておきましょう(図5)。
「pickupGridBox_Blueprint」を開くと図6の画面が表示されるので、各項目を表1の通りに設定してください。
項目 | 設定値 |
---|---|
トランスフォーム/可動性 | ムーバブル |
Physics/simulate physics | チェック |
Collision/オーバーラップイベントを発生させる | チェック |
●トランスフォーム/可動性
オブジェクトを“ムーバブル(動く)”に設定します。動かないオブジェクトの場合は効率的にライティング処理できます。処理をなるべく軽くしたい場合は“ステーショナリー”や“スタティック”にする方法もあります。ムーバブル>ステーショナリー>スタティックの順で動くオブジェクトに適したライティングとなっている代わりに処理コストがかかると認識しておけば大丈夫です。
●Physics/simulate physics
物理演算を“有効”に設定します。サンプルの処理では“物理演算が有効なもののみを掴む対象にする”となっているので、ここをチェックする必要があります。
●Collision/オーバーラップイベントを発生させる
オブジェクト同士が重なり合った場合にイベントを“発生させる”に設定します。「手のブループリントに付属している透明の球がオーバーラップしたオブジェクトに処理を行う」というロジックになっているので、ここにチェックが入っている必要があります。
次に「BP_PickupCube」のイベントグラフを開き、インターフェース項目の「追加」ボタンをクリックします。プルダウンメニューから「PickupActorInterface」を選択して、左上の「コンパイル」ボタンをクリックしてください(図7)。
これで「PickupActorInterface」を実装できました。
設定が完了したら、「VirtualRealityBP/Blueprints」以下にある「BP_PickupCube」を開いてください(図8)。
「BP_PickupCube」のイベントグラフに書かれているブループリントで有効なものを全て選択して、「pickupGridBox_Blueprint」のイベントグラフへコピーしてください(図9)。「イベントグラフ」上で左クリックしドラッグすることで範囲選択できます。
掴む処理は、手のブループリントと掴む対象のブループリントの両方の処理によって構成されています。手側のブループリントはかなり複雑なので今回は解説しませんが、興味のある方は中身を見てみるとよいでしょう。非常に勉強になると思います。手のブループリントの処理は「VirtualRealityBP/Blueprints/BP_Motion_Controller」に書かれています。
具体的な処理内容は次の通りです。参考にしながらブループリントの処理をひも解いてみましょう。
■手側
手のブループリント側でインターフェースが実装されているか、simulatePhysicsが有効かを調べて、PickupActorInterfaceが実装されておりsimulatePhysicsが“有効”の場合はキューブ側の「Grab」イベントを呼び、“無効”の場合は「Drop」イベントを呼びます。
■キューブ側
「Grab」イベントが呼ばれた場合はsimulatePhysicsを“無効”にしてイベントの呼び元に自分を結合させ、「Drop」イベントが呼ばれた場合は“有効”にして呼び出し元から自分を分離させます。
これで、掴むための設定も完了です。VRプレビューを実行し、作成した「pickupGridBox_Blueprint」に手が触れている状態でトリガーボタン(OculusTouchの場合)を押してみましょう。図10のようにキューブを掴むことができるはずです。
2. ショールームに自動車を配置する
続いて、VRカーショップのショールームの主役、自動車を配置していきましょう。
まずは、アセット「Broby Car2」(図11)をインポートします。インポート手順は第1回で解説した「SuperGrid Starter pack」のインストールと同じなので、詳しい説明は割愛します(今回はアセットストアからインポートしたモデルデータを使用しますが、UE4はFBXモデルのインポートも可能なので、Mayaなどで作成されたモデルデータをインポートして使うこともできます)。
Broby Car2のアセットをインポートできたら、早速配置していきます。自動車をそのまま置くだけではショールームらしくないので、まずは自動車を乗せる台座を作りましょう。
前述した「ブループリントを作る」の項の説明と同様に「SuperGrid_Box」を配置し、トランスフォームを図12のように設定します。
設定できたら、「BrobyCar2/Assets/Cars」以下にある「SkMesh_CarMeshes2」を開いてください(図13)。
ここで、「SkMesh_CarMeshes2」をそのまま配置しても3Dモデルを配置できますが、今回はショールームなのでタイヤに角度をつけたり、ボンネットを開けてエンジンルームが見えるようにしたり展示車らしくしてみましょう。
まず、右上の「スケルトン」ボタンをクリックしてボーン編集モードに入ります(図14)。ここではボーンの角度などが編集できるので、図14~17の画像を参考に各ボーンの角度を表2の通りに設定してください。
部位 | ボーン | 角度 |
---|---|---|
タイヤ(左前) | Wheel_rear_left | -20 |
タイヤ(右前) | Wheel_front_right | -20 |
タイヤ(左後) | Wheel_rear_right | -20 |
タイヤ(右後) | Wheel_front_left | -20 |
ボンネット | hood | 40 |
トランクドア | trunk | -40 |
左ドア | door_left | 60 |
ボーンの角度を設定できたら、「work」フォルダ下に新規に「Meshes」フォルダを作成します。「スタティックメッシュを作成」ボタンをクリックして「Meshes」フォルダを指定し、スタティックメッシュを作成しましょう(図18)。
先ほど編集したボーンの状態を保持した“StaticMesh”という名前のスタティックメッシュが作成されるので、“displayCar_SM”にリネームしてレベルに追加し、トランスフォームを図19の通りに設定してください。
自動車を置くと台座と床の区別がつきにくいので、台座のマテリアルを「M_SuperGrid_Auto」に差し替えてください。このように、作っている途中にマテリアルの変更など細かい調整を簡単にできるのもUE4の強みです。
ライトを追加する
これで自動車を配置できましたが、内部が影になってしまい内装がよく見えません。自動車の内部に光源を置いてみましょう。「ポイントライト」をドラッグ&ドロップでレベルに追加します。
図22を参考に、ライトのintensity/Light Color/Attenuation Radiusを以下の通りに設定してください。
- 位置:X=710、Y=290、Z=260
- intensity(ライトの強さ):1000
- Light Color(ライトの色):淡い暖色
- Attenuation Radius(ライトの半径):250
これで、車の内装もよく見えるようになりました。ショールームにふさわしい自動車が完成したのではないでしょうか。また、ここまでの解説で、もう簡単なVRコンテンツなら作れるようになったのではないかと思います。
次回からは、もう少し深い内容を解説していきます。「Interface」の作り方やブループリントの主要なノード機能など、メイキングだけでは説明しきれない重要な部分も出てきますので、VRメイキングと併せて解説する予定です。
それでは、次回もお楽しみに!
2016年3月30日、世界初のコンシューマ向けVRデバイス「HTC Vive」と「Oculus Rift」の発送開始とほぼ時を同じくして、Microsoftから開発者向けのAR HMD「HoloLens」が発売されました。HoloLensはMicrosoftが2015年1月に発表した、現実空間に3Dホログラムを重ね合わせて表示する機能「Windows Holographic」の開発デバイスです。
■HoloLensの紹介動画(YouTube(英語))
・#MakeWhatsNext: Change the Odds
・Microsoft to ship Acer’s Mixed Reality headsets later this month
最近では、N高等学校(https://nnn.ed.jp/)のHoloLensを用いた入学式(「平成29年度 N高等学校 ネット入学式」を実施 ~ 2002名の新入生が入学)が大きなニュースとなり、HoloLensのことを耳にした人も増えたのではないかと思います。
MicrosoftはVR/ARに熱心に取り組んでいる企業の1つで、2017年にはVR/AR両方の機能を備えたMRデバイスをリリースする予定で、既に開発者キットの出荷も始まっています。
このMRデバイスはAcer、ASUS、DELLなどのメーカーと協力し、300$の低価格帯から高価格帯まで多数のモデルが発売され、先日配信されたWindows 10 Creators UpdateによりWindows 10にこれらのデバイス向けの機能が追加されています。Window 10のPCを持っている人なら誰でもPCにつなげるだけで手軽にMR体験ができる製品となっていることから、一般にVR/ARの普及に大きな役目を果たすことが期待されています(動作環境の詳しい情報は発表されていませんが、発表時に一般的なノートPCで動作可能としていることから、ビデオカード非搭載のPCでも最低限の動作はするものと思われます)。
さらに、Microsoftが2017年に発売予定の家庭用ゲーム機「XBOX Scorpio」向けのMRデバイスを提供することも発表されており、この分野で大きな攻勢をかけてきていることが窺えます。
ここまでMicrosoftが熱心にVR/ARに取り組む背景には、「VR/ARといった新たな分野でプラットフォーマーになる」という強い決意があるように感じます。
Microsoftは自社のデバイスや製品に厳しい認証や利用制限を設ける傾向があるため、プラットフォーマーの地位を狙ってこれらのデバイスをリリースしようとしていると聞くと、Windowsストア経由のコンテンツしか利用できないのでは、などの懸念を持つ人も多いかもしれません。しかし、24時間ごとの認証システムを導入すると発表して大きく批判された(後に撤回)「Xbox One」がコンソールプラットフォームのシェア争いで「PS4」に大敗したことや、GoogleがAndroidで大きく成功を収めたことなどから、ユーザーに比較的自由な利用を認める方針に転換している感じがありますし、3月に出荷開始されたHoloLensの開発者バージョンでも特別な制約があるというような話はなく、あまり心配する必要はないでしょう。
本連載の読者のようにVRに興味のある方でも、VR/ARデバイスを持っている方はまだまだ少ないと思います。VR/ARに興味はあるけど購入するにはちょっとハードルが高いと感じられている方も、MicrosoftからMRデバイスが発売されたら購入を検討してみてはいかがでしょうか。
低価格モデルはディスプレイのリフレッシュレートが低めになるという情報もあります。リフレッシュレートはVR体験にとても重要なので、購入の際はリフレッシュレートが90Hz以上のモデルを選択することをお勧めします。