建築を学ぶ人のためのVR入門-開発編
このnoteでは、建築設計者・研究者に向けて、VRを始めるにあたり知っておきたいことを、開発編、思想・概念編、事例編の三本に分けて書いていこうと思います。
今回は開発入門編。「ミニマムコストでVRをとりあえず使ってみる」というところまでのプロセスと考え方をまとめています。
ここでは細かい仕様の話はせずに、VRの開発の骨組みと考え方を中心に書いていきます。
あくまで建築界隈の人に最適化して、かなりプラグマティックに書いているので、VRエンジニアやUnityエンジニアからすると「?」となる箇所もあります。「俺はガチガチのXRエンジニアになるぜ!」みたいな方は引き返して下さい🙏
(1)ざっくりとしたVR利用までの流れ
重要な理解として、実際にVRを利用するにあたり4つのステップがあります。
「3Dモデリング→
ゲームエンジンにExport→
ゲームエンジンで編集→
ビルド(もしくは単にプレイ)」
です。
もう少し詳細に書くと、
(a)まず設計案を作成し、それを3Dモデルとして表現します。
(b)作成したモデルをUnityやUnreal Engine4といった「ゲームエンジン」と呼ばれるものにエクスポートします。
(c)ゲームエンジン上で、機能やレンダリングを設定します。
(d)最後に「ビルド」といって、書き出しのようなプロセスを行います(あるいは単にプレイボタンを押します)。するとVRデバイスやスマートフォンでVR体験ができるようになります。
以下では、4つのステップに分けてもう少し詳細に説明していきます。
(a)3Dモデルを作成する。
RhinocerosやSketchup、3dsMaxなどのモデリングツールで、3Dモデルを作成します。
(b)「ゲームエンジン」にインポートする
詳細の前に、少しだけ「ゲームエンジン」について説明をします。
ゲームエンジンとは、3Dモデルやサウンド、アニメーションやプログラムといった個々のたくさんのパーツを一つのシーンの中で統合的に配置し、それぞれのパーツが一体的に体験できるようにまとめる役割を担うソフトウェアのことです。
簡単に言うと「作成した3Dモデルや、サウンドやアニメーションやプログラムをぎゅっとまとめて一つのシーンにするための場所」。
ゲームエンジンはまとめ役割を担うソフトとして、ゲーム以外のスマホアプリやソフトウェアにも利用されますし、近年では映画製作や、NASAの宇宙訓練などでもゲームエンジンが用いられています。
建築での利用想定に勝手に絞ると、2つのゲームエンジンを抑えておきましょう。
「Unity」と「Unreal Engine」です。
そのうえで、基本的に建築界隈の人に向けてはまずはUnreal Engineをおすすめします。
理由は2つ。
1つ目。グラフィックの性能が高く、デフォルトでレンダリングの設定が楽で早くて綺麗です。
2つ目の理由。
Unreal Engine 4の場合は「ブループリント」というGrasshopperのようなVPL(Visual Programming Language)を用いてシステムを組めます。下記のようなやつです。細かいマテリアルの設定などもこれを用いてかなり簡単にできます。
ガリガリコード書くの無理!という人も多い気がするのでUnrealはおすすめです。
Unityの方が汎用性が高かったり、アセットが多かったり、日本語の記事が多かったりと、開発の中でやりやすい部分が沢山あります。
しかしそこまで複雑な機能を必要とせず、同時にかなりのグラフィック機能をすぐに必要とする建築の人たちには、Unreal Engineの方が楽に使えるだろうと思います。
Unityでもやろうと思えばビジュアルスクリプティングで組むことはできるのですが、そもそもそのためのエディタにお金がかかったり、癖が強かったりします。
ちなみに。
おすすめしているUnreal Engine4の場合、Datasmithというプラグインがあってこれが素晴らしい。
基本は変な処理を挟まずに、Rhinocerosや3ds Max、Sketchupからダイレクトに3Dモデルがインポートができるのです。
以前のDatasmithではマテリアルの引継ぎがほとんどうまくいかなかったのですが、最近ではマテリアルの引継ぎまで一気にできるようになりました。
きちんとインポートすれば、Rhinoceros内の設定が上のような状態でUnreal Engine 4内にインポートされます。細かい手順は省きます。
Unityで細かくやる場合にはこちらをご参照ください。
(c)レンダリングの調整をする。
さてここまでで3Dモデルをゲームエンジンに投入する流れを書きました。
4つのステップのうち2つ終了です。3つ目の、ゲームエンジン内での編集やレンダリングについて考えていきます。
レンダリングは、基本的にはV-rayのレンダリングの考え方と大きくは変わりません。
個々のマテリアルのアセット(木のマテリアル、とかコンクリートとか)を作成し、3Dモデルに貼り付け、太陽光や蛍光灯などの光を調整し、露出やf値を合わせてカメラを調整する。
手順は基本的に一緒です。
(d)ビルド(もしくは単にプレイ)する
3Dモデルをゲームエンジンに取り込み、エンジン内で光やマテリアルの調整をし終わると、こんな画面になります。
あとは「ビルド」してプレイすればいいのですが、Unreal Engineでは「VRプレビュー」を選択すればすぐにVR表示を確認できます。
これでVR体験まで到達です(早い)。
ちなみにビルドとは、コードなどの不備がないか確認して、実行ファイルにまとめ上げるような操作をいいます。
こういう操作をへることで、作成したプログラムをスタンドアローンのHMDなどで利用できるようになるのが一般的です。
(2)HMDの選定
VR体験をするにはゲームエンジンだけでなく、HMDが当然必要になるわけですが、ひとまずとしてはOculus rift sがおすすめです。
MoguraVRさんの記事でOculusシリーズのわかりやすいまとめがありました。PCと移動の必要性から比較されています。
https://www.moguravr.com/oculus-rift-s-quest-go/から引用
建築だと移動はやはりほしいので、Questかriftがよさそうです。
そのうえで、セットアップが一番楽にできるのは(開発を想定すると)Oculus Riftかと思います。最初のセットアップだけやれば「プレイ!」だけでみれるので。
QuestとGoだと、圧倒的にQuestがいいとは思うのですが、基本的にQuestやGoはスタンドアローンといって本来PCを必要としないHMDなので、少しVR表示の手順が違っています。
Riftなどではプレイボタンを押すだけでVRが見れますが、スタンドアローンの場合にはゲームエンジンで作成したファイルをandroidアプリとしてビルドして、作成したファイルをHMDに流し込むとやっと見れる、という手順が必要になります。これはスマートフォンなども基本的に同じです。
ただ調べてみるとQuestでもバーチャルデスクトップを入れれば、Unityで「プレイ」だけでVR表示可能なようなので、Unreal Engine×Oculus Questでもすぐに利用可能かもしれません。検証はしていません。
Oculus Questが気になるかたは、とりあえず購入してみてVirtual Desktopで実行してみるのもありかもです。
ちなみに。
「プレイだけでVR表示できる」との「ビルドが必要」なのは、開発工数的には「かかる時間」と「面倒さ」が違います。ビルドすると時間がかかって、少し面倒になります。
ほかのHMDとしてはHTC VIVEなどがあります。
VIVEの場合VIVEトラッカーといって膝やひじにつけることでモーションを取得できるトラッカーが使えたり、トラッキングの精度と範囲が優れいているなどの強みがあります。
少し割高なので、本格的に行っていく場合はVIVEもありですが、Riftの方が手軽かと思います。
(3)具体的に手を動かしていくために~必要な情報の探し方と勉強の仕方
VRみるまでの4つのステップは、
「3Dモデリング→エクスポート→ゲームエンジンで編集→ビルド(orプレイ)→使える!」
なのでした。
HMDをそろえれば、ある程度のPCを使って上記の4ステップを踏むことができます。
はじめに書いた通り、このnoteでは建築を学ぶ人がVRを始めるにあたり大枠の理解をするためのものです。
細かいステップについては、「Unreal Engine4 VR」などと調べるだけでうわーっとまとまった情報がでてきます。大枠さえ分かっていれば、細かい情報はググりながらですぐに進めることができます。
例えば「datasmith rhinoceros」と打てば
とかがでてきて、それを開くと
こんな感じで懇切丁寧な説明が登場します。
大枠の流れとしては「ビルド」とか「インポート」とかがキーワードになるので、
「(大枠の流れのなかで重要なワード)+(モデリングツール名)+(ゲームエンジン名)」
と検索すればたいていQiitaやはてなブログの記事がでてきて、それ通りにやれば進みます。
もう少し細かいところでは、「ブループリント+マテリアル+設定+仕方」とかを一つ一つ調べていく感じです。
始めた瞬間はある程度調べながら進むのは当然です。しかしそのために、こういったTipsを参照するにあたり気を付けた方がいいポイントがあります。特にその中でも、ブログで使われているゲームエンジンのバージョンに気をつけて下さい。
(4)バージョンの選定に気を付ける
ゲームエンジンを用いるにあたり、「バージョン」に注意してください。
UnrealもUnityも、日々異常なスピードで更新されています。したがって一か月ほどで細かいUIや仕様が変わったり、細かい設定の仕方がかなり違っていたりして、半年くらい前のハウツーはもう結構違っている、ということもあります。これがバージョンの更新ですね。
そのため「ブログなどのTipsをそのまま進めてるのにうまくいかねーじゃねーか!」ということが多々あります。
その際は、いくつか記事を見比べて最新のものを採用するか、複数のTipsで異なる箇所をいろいろ組み合わせてみていじってみると、うまくいったりします。
この感覚がないと意味不明にうまくいかなすぎて本当にしんどくなるので特に気をつけて下さい。
(おまけ)VRで必要なプログラミング能力のレベル
基本は以上で終わりなのですが、ここでは少しおまけを書きます。
VR開発では、多少プログラムがかけるのに越したことはありません。例えばポップアップや解析、クリック一つでVR空間内でマテリアルを変更する機能などを付加するとより便利にVRを使えるからです。
建築のビジュアライズではそこまでのスキルは必要ありませんが、「せめてプログラムがどんな構造で書かれているかざっくりわかる」と、かなり操作しやすくなります。
そこでここでは大まかなコードの読み方を書いてみます。
プログラムは、基本的に
変数を定義して、関数に投げ込み、処理を回して出力するコンポーネントの組み合わせ
と思っていれば大丈夫です。例えば
基本の変数の定義→「a=入力値, b=入力値とする」
関数に投げ込み処理する→「c = 2*a*a+5b」
出力する→「c=○○です!と返す」
という流れ。
プログラムとしては、「a,bの値を教えてください」と問うてくるので、
a=20, b = 5と教えてやると、「c=825です」と返してくる。
この「必要な条件を伝える→処理する→出力返す」という流れはたいてい同じで、求められる情報が数字でなくオンオフだったり、画像ファイルへのパスだったりするわけです。
どんな複雑なプログラムも、基本的に簡単なプログラムは組み合わせなので、例えばマテリアルを作る場合も「画像データAを取得→画像データBを取得→AとBを50%ずつ重ねる→作成された画像を貼り付ける」みたいに細かいコンポーネントの組み合わせでできています。
そうした基本を踏まえたうえで。
ポイントとしては、レベルの高くない開発において必要な機能があったとして、検索すれば類似のスクリプトがでてくることがほとんどなので、それをいじればなんとかなる、と思っておけるとOKです。
「入力値→処理→出力文」の構造だけ大まかにわかっていれば、プログラムをみて「ここが変数だな」とか「ここが処理部分だな」「ここが最後の結果の値を返す文だな」ということがわかるので、入力される画像を変えたり、等倍の数値を変えたりすればたいてい対応できます。
以上プログラムを触るための基本理解でした。
最後に
このnoteでは、建築界隈の人がVRを始めるにあたり、骨組みを提示することを目指しました。
改めて整理すると
・VRを使うのには「モデリング→ゲームエンジンへExport→ゲームエンジンで設定→ビルド」という4つのステップがある。
・ゲームエンジンには主に2種類あり、Unreal Engine4がおすすめ。
・具体的な進め方は検索すれば簡単にまとまっているものがあるので、骨組みに沿って必要なタイミングで検索をかける。
・検索の場合はバージョンによる仕様の変化に注意!バージョンの差で検索結果でうまくいかないことがあるので、複数バージョンを見比べる。
・スクリプトを書く必要がある場合には、検索で類似のものを取ってきて、必要なところだけ編集を加えれれば十分
です。
引き続き、思想・概念編、事例編を書いていければと思います。
もしすこしでも役に立った方がおられたらリアクション、シェア、どうぞよろしくお願いします🙏