仮想現実
新型コロナウィルスによりライフスタイルが様変わりしました
仮想現実(VR)、拡張現実(AR)、複合現実(MR)さらに仮想空間メタバースへと進化を続けます
受動的な動画とは違い、アクティブな世界の構築です
VR(Virtual Reality)
予てから3D CADに取組んできました
依頼頂きました住宅鳥瞰図を参考にVR化への試みです
VRは一般的にオブジェクトを繋ぎ合わせるスティッチングという処理を行います
現状ゲームエンジンを使うのが常とう手段だと考えます
ゲームエンジンは”Unity”と”UnReal Engine”が双璧ですが、今回はUnReal Engine(UE4)を選択することにしました
とりあえず建物内を自由に動き回れることを目標としました
新型コロナ鍋の中、御多分に洩れず時間はたっぷりありTrial&Errorでサンプル程度のものを作りました
手順は
- 3D CADでレンダリングされたソリッドをMotion Builder形式(拡張子.fbx)のメッシュファイルで書出す
- UE4ではFirstPersonCharacter(一人称)から作成する
- UE4のコンテンツブラウザーからメッシュファイルをインポートする
インポートされたメッシュはコンテンツブラウザーでアクタ(Actor)として表示される
UE4では1つの空間をレベルと呼び、コンテンツブラウザーのアクタを自由に配置できる - 床や壁を配置し物理的に衝突できるようにコリジョン(Collision)を設定する
ドアや窓、キッチン、サニタリーを配置する - ドアや窓を開閉させる
ドアや窓はブループリント ビジュアル スクリプティング システムといわれるVPL(Visual Programing Lungage)によって 自動開閉をプログラムしていく - パッケージングして完成
ブループリント(BP)
BPはノード(節)をワイヤー(線)でつないでプログラムします
最終C++でコンパイルしてくれます
例えば、仕組んだトリガー(引金)Box内に”アクタ”が入ると起動させるプログラムは"イベントBeginPlay"ノードで始まり
”タイムライン”というノードで変化させる量をコントロールして”Location”で移動させたり”Rotation”で回転させたりノードからワイヤーを引き出せば状況に合わせたノードが選択肢として表示され論理的な思考さえすればプログラムできます
引き違いのドアは、ドア同士が互いに干渉し合うのでトリガーの対象となる”アクタ”を”FirstPersonCaracter"に限定しました
開き戸でも隣接する戸がある場合、同様の干渉防止をしました
移動の妨げになる通路の物入れの戸は固定したままにしています
V字の折戸は1つのトリガーで連動させたいが”イベントディスパッチャー”を使うのか?奮闘中
3DCADからインポートに関して
”コンテンツブラウザ”でインポート時、空間の座標軸が入れ替わるのでダイアログで調整
UE4の寸法単位がcmなのでmm系での比率をダイアログで調整
”Pivot”(ピボット)ドア等の回転させるアクタの回転の中心は、UE4上では一時的にしか変更できないので3DCAD側で合わせて”エクスポート”した
レンダリングの”マテリアル”の重複と少々エラーログがでます?
”テクスチャー”の縮尺が無視されてインポートされる
UE4のハードルは高いです
専門用語も多いですし、ウィンドウもたくさんあり、どこから入ればいいのかも分からない状態でした
UE4はランチャーから起動していきます
バージョンが沢山あります制作バージョンが違うとクローン(複製)されます
バージョンを選んでUnReal Engineを起動させますとUnReal Editerが立ち上がります
制作物はプロジェクトと云います
プロジェクト名はリネーム出来ないので新規プロジェクト作成時は注意が必要です
最初に”レベル”と呼ばれるウィンドが表示されます
”レベル”は舞台と考えればわかりやすいです
”レベル”は同一プロジェクトで複数扱えます
(主になる大舞台をパーシスタントレベル、各ステージはサブレベル)
”コンテンツブラウザ”と呼ばれるウィンドは”アクタ”(出演者や部材)とそれらの動作プログラム(BP)を登録した舞台裏です
階層ディレクトリーで管理されているので各名称もコンテンツブラウザ内で行わないとダメです
”レベル”に登場させた”アクタ”は”ブループリント”によるプログラムで動かせます
プロジェクトを開いたり・・・Undo Redoも億劫になる程、時間が掛かる場合が多いです
レベルの削除はやめた方が無難、コンテンツの削除も色々影響する場合がありました
随時加筆修正