.wp-block-jetpack-rating-star span.screen-reader-text { border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal; }

サイトアイコン NegativeMindException

ZBrushで作った3Dモデルを立体視で確認できるVRアプリを作る

先日、Oculus改めMeta Quest Proが発表された。

Introducing Meta Quest Pro

今回はさすがに価格が高過ぎて手が出せない。Oculus Meta Quest 2を購入してからもう2年経つ。



併せて購入したEliteストラップは早々に割れてしまった。

今はZBrushで作り途中の3DモデルをQuest 2に持って行って立体視で確認する使い方をしている。
ZBrushでアヴァン・ガメラを作ってみる 口内の微調整・身体のライン修正
1月から仕事が始まって、連続した作業時間は確保しづらくなった。歯と歯茎に手こずってなかなか全体の調整が進まない。。。資料を眺めていて、そもそも特撮のDNAで展示されていたレプリカヘッドと劇中のスーツでは歯の並び方や下アゴのバランスが結構違う...




3Dモデルの確認に使用しているのはQuest 2で動くGravity Sketchというアプリ。
ZBrushからDecimation Masterでポリゴン数を削減(デシメーション率は5%に設定)した3DモデルをOBJファイルにエクスポートして、OBJファイルをLanding Pad経由でQuest 2のGravity Sketchに持って行って立体視で3D形状を確認している。



しかし、この確認方法に少し不満も感じ始めている。
Gravity Sketchは基本的にモデリングツールなので、コントローラーで3D空間にポリゴンMeshを追加していく操作が軽快に処理できるよう、レンダリング品質はかなり低くめになっている。このレンダリング品質は形状確認用途にはちょっと物足りない。形状を確認できるほど陰影や影がキチンと描画されないのだ。

ZBrushで作ったハイポリのモデルをGravity Sketchで表示中に操作をミスってポリゴンMeshを追加してしまうと、アプリの動画が急に重くなって何もできなくなってしまう。その度にアプリを再起動してやり直している。変な話だが、Gravity Sketchのモデリング機能が邪魔だ。

ということで、ZBrushで制作中のモデルをHMDで確認する用途だけに特化したVRアプリを自分で作りたくなってきた。(GoやQuest 2を持っていながら自前のVRアプリを作っていなかったのも不思議な気はする)

UnityでQuest 2向けアプリを作る

盛り込みたい機能やアプリの方針を整理してみた↓

目標設定

モデリング等の余計な機能は入れず、3Dモデルの形状確認に特化する

この目標をもう少し具体的に分解してみると…

といったところか。VRアプリ開発経験が乏しいのであんまり厳密にならず作りながら方針を修正していくことになると思う。


スポンサーリンク

開発環境

Unity 2021.3.11f1を使ってアプリを作っていく。よく分からないのでとりあえずVRテンプレートを使ってプロジェクトを作成↓



こちらこちらを参考にすると、Quest 2アプリを開発する場合はOculus Integrationというアセットを利用すれば良いらしい↓



Oculus Integrationに入っているOVRPlayerControllerというprefabをsceneに配置すれば立体視の設定は完了。



URPにして、sceneにとりあえずアヴァン・ガメラのモデルを配置。背景のSkyBoxにはHorizontal Skybox Shaderを使用して、グラデーションで何となく上下の方向が分かる感じにしておく↓



Quest 2向けにビルドしてQuest 2実機で動作確認することもできるけど、PCとQuest Linkで接続していればUnityのPlayボタンを押すだけでQuest 2で確認できる。PC VRでの動作になっちゃうのでQuest 2のスペックでのパフォーマンスは確認できないけど、パフォーマンスチューニングはまだだいぶ先の話だ。



iOS向けのビルドの手間に比べればQuest 2(Android)向けのビルドもそんなに手間と感じないけど。

ここまで、結局Metaの公式ドキュメントはあまり参考になってないな(笑)
https://developer.oculus.com/documentation/unity/unity-tutorial/?locale=ja_JP
https://developer.oculus.com/documentation/unity/ts-odh/?locale=ja_JP

Oculus Developer Hubってのはつまり何なんでしょう?

トラブルシューティング

Playしたら視点が落下し続けてしまう現象に遭遇。
OVRPlayerControllerにアタッチされているOVRPlayerController.csのGravitiy Modifierというパラメータを0にしておかないと、重力の影響で落下してしまうらしい。今回は床のオブジェクトとColliderを用意していないので無限に落ち続けていたようだ。



Skyboxが右目だけ描画されない現象に遭遇。立体視用にShaderを修正する必要があるらしい。
https://redhologerbera.hatenablog.com/entry/2022/01/31/212231

元のShaderをフォークして修正した↓
https://github.com/NegativeMind/UnitySkyboxShaders

現状

現状をOculusMirror Compositor Mirrorで録画してみた↓



まだ3DモデルがY軸回転するだけの状態です。

これからやりたいこと

Quest 2単体で動作するアプリだとしたら、どうやってOBJファイルを持って行くか悩みどころ。PC VR前提であればPC側でOBJファイルをアプリにドラッグアンドドロップするとかかな? クラウドストレージが利用できるとスマートだけど、どうやって実装したらいいのか分からない。

パフォーマンスチューニング

動作を少しでも軽くしたいので、3DモデルのSubMeshを全て結合してtransformを減らす
https://ekulabo.com/unity-combine-meshes
https://docs.unity3d.com/ScriptReference/Mesh.CombineMeshes.html

このVRアプリの開発記事まとめページ↓



スポンサーリンク

関連記事

ZBrushで仮面ライダー3号を造る 仮面編 ClipCurve

ポリ男をリファイン

Manim:Pythonで使える数学アニメーションライブラリ

スターウォーズ エピソードVIIの予告編

ZBrushのTranspose Masterでポーズを付ける

Blendify:コンピュータービジョン向けBlenderラッパー

IronPythonを使ってUnity上でPythonのコードを実行する

OpenMesh:オープンソースの3Dメッシュデータライブラリ

openMVG:複数視点画像から3次元形状を復元するライブラリ

手を動かしながら学ぶデータマイニング

ZBrushでアヴァン・ガメラを作ってみる 口のバランス調整

ZBrushでアヴァン・ガメラを作ってみる 頭頂部と首周りを作り込む

映画から想像するVR・AR時代のGUIデザイン

ZBrushでゴジラ2001を作ってみる 身体のバランスを探る

科学技術計算向けスクリプト言語『Julia』

Mechanizeで要認証Webサイトをスクレイピング

ワンダーフェスティバル2017[冬]に行ってきた

トランスフォーマー :リベンジのメイキング (デジタルドメイン)

参考になりそうなサイト

SIGGRAPH ASIA 2009で学生ボランティア募集してるみたい

オープンソースのテクスチャマッピングシステム『Ptex』

「ベンジャミン·バトン数奇な人生」でどうやってCGの顔を作ったのか

シン・ゴジラのファンアート

ちょっと凝り過ぎなWebキャンペーン:全日本バーベイタム選手権 (MITSUBISHI KAGAKU...

iPhone・iPod touchで動作する知育ロボット『ROMO』

2012のメイキングまとめ(途中)

顔のモデリング

法線マップを用意してCanvas上でShadingするサンプル

SculptrisとBlenderで作ったGodzilla 2014 (Fan Made)

ヘッドマウントディスプレイとビジュアリゼーションの未来

ZBrushでアヴァン・ガメラを作ってみる 腕の作り込み

CGのためのディープラーニング

ZBrushの練習 手のモデリング

Iridescence:プロトタイピング向け軽量3D可視化ライブラリ

MPC社によるゴジラ(2014)のVFXブレイクダウン

OpenFace:Deep Neural Networkによる顔の個人識別フレームワーク

OpenCVで顔のモーフィングを実装する

ブログが1日ダウンしてました

映画『ブレードランナー 2049』のVFX

OpenCV 3.1とopencv_contribモジュールをVisual Studio 2015で...

ZBrushでアヴァン・ガメラを作ってみる 頭頂部の作り込み・舌の追加

Dlib:C++の機械学習ライブラリ

モバイルバージョンを終了