こんにちは。
KLabでVRの研究開発をしているfmystBです。
普段3Dのゲームを開発しているプログラマですが、アセットの制作も行っています。
今回から数回に分けて、研究室内で作っているデモの一部を紹介します。

VR研究開発で使用するツール

ゲームエンジンはUE4を使用しています。
アセットの制作は、モデリングにはBlender2.81(連載中にアップデートされたら都度バージョンを上げます)、テクスチャはSubstance Painterを使用しています。
アニメ調のものではなく、フォトリアルなデモを作っているのでこの組み合わせは使いやすいです。
この連載ではBlenderでのモデリング・UV展開、Substance Painterでのテクスチャ作成、UE4でのマテリアル作成やプログラム開発といった、VRデバイスでプレイ可能な作品を作るための一連の流れを紹介していきます。

Blender2.81

今回の記事ではBlenderでの作業を紹介していきます。
この記事を書いている時点での最新版2.81を使用します。
バージョンが2.8になってからEpic Gamesが資金を提供するなど、ここ最近ますます勢いを増しているツールです。

VRで面白アイテムを作りたい!!

デスクトップ向けのゲームではなく、VRという環境なのでより現実に近い体験を3D空間の中に作り出したい。そんな思いで研究開発を進めています。そこでVRで利用できる面白アイテムを多数作っているのですが、今回はその中の一つ、望遠鏡の作り方を紹介します。
実際にVRデバイス(VIVE)でプレイした映像↓

動画のように昔の海賊をイメージしたアンティークな仕上げにします。

オブジェクトのサイズと向き

それでは作業を始めていきましょう! 望遠鏡の全長は30cmとします。 接眼レンズ側が原点に、対物レンズ側がX軸上の30cmのところに来るようモデリングを進めていきます。
Capture001
デフォルトのCubeのサイズは2m×2m×2mです。
Capture002
Capture002a
テンキーの1を押し-Yから+Yへの視点にして、マウスホイールをスクロールして1マスのサイズ(画像の①)が10 Centimetersになるように拡大していきます。この1マスのサイズは②がorthographic(平行投影)になっているときのみ表示されるもので、テンキー1/3/7で視点をY/X/Z軸方向に調整したときは自動的に平行投影になります。

View Clip の調整

視点がオブジェクトに接近すると
Capture003
のように手前側の表示が欠けてしまう事があります。これを避けるために3Dview上でNキーを押して出てくるメニューでClip startの値を調整します。今回は0.001mまで下げておけば十分でしょう。 Capture005

モデリング

Capture006
デフォルトのCubeを削除し、Cylinderを追加してオブジェクト名をTelescopeに変更します。
Capture007
Edit Modeに切り替えて以下の操作にてモデリングを進めます。

キー 操作
G 移動
R 回転
S 拡大縮小
E 押し出し

G/R/Sの操作はCtrlキーを押しながらマウスを動かすことでキリの良い数値に調整することができます。
3D view上で(テンキーではない)キーボードの3を押して面選択モードに切り替えておきます。(左上の方のアイコンからも切り替えることが可能です。)
まずRキーで全体を90度回転させてX軸方向を向くようにたおします。
次にSキーで底面の直径が4cmになるように縮小します。
その後接眼レンズ側が原点に来るようにGキーで移動し、反対側の面のみを選択して10cmの位置に来るようにします。
そこからEキーを押して真ん中の筒を作ります。大きさは直径5cmになるように調整します。
同様に対物レンズ側の筒も作ります。直径は6cmです。

Capture008
Loop Cutを使い、3つの筒に線を入れます。(Loop Cutをすることで辺選択モードに自動的に切り替わります。)
線が入ったら再び面選択モードに切り替えて
Capture009
の面を1周選択(altキーを押しながら選択することでループ選択になります。)してEキーで押し出して少し拡大します。

対物レンズを作ります。 Capture010
Capture011
Inset Facesを使用して筒の底面の中心に向かって面を作ります。
Capture012
Eキーで内側に凹ませます。
接眼レンズも同じように作りましょう。

対物レンズ側の一番太い筒には後で古い皮のテクスチャを貼りたいのでLoopCutで辺を1周追加しておきます。 Capture013

シェーディング(法線の向き)

デフォルトでは全ての面がFlat Shadeになっているはずです。
Capture014
画像のように曲面をすべて選択してSmooth Shadeにしましょう。
レンズやそれぞれの筒の底面などX軸方向に法線が向いている面はFlat Shadeのままにしてください。

マテリアル

Capture015
マテリアルを2つ作ります。 M_Lens:接眼レンズ
M_Telescope:対物レンズを含む望遠鏡本体
M_という表記はUE4の命名規則を意識しています。
接眼レンズにはUE4上でメインのカメラとは別のカメラで撮影した風景を映し出す特殊なマテリアルの効果を割り当てるため、他の面のマテリアルとは分けておきます。
対物レンズは特に何も映し出さず、その他の部分と同じ扱いをするのでM_Telescopeの方にAssignしてください。

UV展開

3D view上で(テンキーではない)キーボードの2を押して辺選択モードに切り替えておきます。 Capture016
画像のように選択してMark SeamしてUVの切れ目を入れます。 両方のレンズは1周選択して丸ごと切り取り、筒の一番下のラインをすべて選択して切れ目を入れることにより、筒のUVを平面に開くことができます。
一番太い筒の皮のテクスチャを貼る部分は別に切り取っておきましょう。

Capture017
UV EditingタブでUV展開用の画面を開き、接眼レンズ以外を選択してUキーでUV Mappingメニューを開いてUnwrapを選択しましょう。
選択した面のみ左側の画面にUV展開されます。UVの面は大きくとるほどテクスチャの解像度を広く利用できるのでギリギリまで広げておきます。

Capture018
次に接眼レンズを選択してテンキー1でY軸方向に視点を向けて今度はUnwrapではなく、Project from View (Bounds)を選択しましょう。 そうすると現在選択されている接眼レンズを3D Viewの視点から真っすぐにUV展開してくれて、サイズも最大限確保してくれます。

エクスポート

完成図は
Capture019
こんな感じです。
この後Substance Painterを使ってテクスチャを作るわけですが、Substance Painter / UE4 の両方にインポートできるようにFBX形式でエクスポートしましょう。 Telescopeオブジェクトのみが選択された状態で、
Capture020
File > Export > FBX(.fbx) を選択します。
Selected Objectsにはチェックを入れて、選択されたTelescopeオブジェクトのみがエクスポートされるようにします。こうすることでその他のカメラやライトを排除してFBX化することができます。 また、上記のモデリングでは全長3mの望遠鏡になっているので、Scaleを0.1にして30cmの大きさにエクスポートします。

Blenderでのモデリング作業はこれで終了です。
今回作ったFBXを使って、次回Substance Painterでテクスチャを作っていきます。

fmystB