VRChat雑記

かやのみちゃのVRChat関連の雑記ブログです

iPhoneのScaniverseで撮った食べ物をなるべくきれいにしてVRChatにもってく備忘録

 

リアルな食べ物モデルを求めて

LiDAR搭載のiPhoneで使えるScaniverseは、撮影したものをFBXで出力することができる。だが、そのままの状態だと普通は余計なものが移りすぎていて容量も無駄が多い。UV展開の内容もかなり扱いづらい形になっているはずだ。

f:id:kayanomi:20220211121809p:plain

Blenderにとりこんで余計な頂点を削ったあと

f:id:kayanomi:20220211121904p:plain

横に広く使ってないテクスチャが多数含まれるカオスなUV

フォトグラメトリ、LiDARのアプリはオブジェクトを認識しない。そのためUVは全部ばらばらで、テクスチャにも無駄が多い。カオスである。これを一つにまとめたい。

 

これらをきれいにまとめるにはBlenderでハイポリのモデルをローポリに転写する、ベイクという手法がおそらく適切であろうと考えた。かなり自己流で手抜きではあるのだけれど、一応うまくいったしとりあえずはコレでいいだろうと思っている。

実例は以下の通り。カツ丼なのだが、器の部分はうまくキャプチャできなかったので、単純な形だし円柱をうまく切り出して作成。もとのカツ丼部分は余分な部分を削ったものとモデルをローポリモデルのように使ってベイクしたものを使っている。

f:id:kayanomi:20220211122046p:plain

理想的な結論としてはこうなる

f:id:kayanomi:20220211122218p:plain

望ましいUVとテクスチャ

Blenderでの操作について

note.com

参考になったのは上記URL。Blenderは2.83を利用していた。(アップデートをサボってた)

まずは元のモデルをハイポリとここでは定義する。ハイポリ部分も使わない机の部分とかは削っておく。使える部分の中でベイクしたい部分だけ切り出す。カツ丼の場合は器の部分はボロボロで使えないので全削除。具の部分だけ切り出す。これをローポリとする。

f:id:kayanomi:20220211122738p:plain

上の部分だけ切り出したモデル

で、モデルの原点を一応変更しておく。よくわからない位置が原点になってるとのちのち面倒なので。今やらなくてもVRChatとかに持ち込む前にはやったほうがいい。

f:id:kayanomi:20220211123246p:plain

Layoutとかのウィンドウでオブジェクトモード中に右クリックで出るよ

で、元のハイポリモデルにローポリモデルを重ねておく。特に動かしてなければ完全に一致するはずだ。お互い動かさなくていい。

f:id:kayanomi:20220211123458p:plain

わかりやすくローポリモデルを赤に着色しておいた

で、ローポリモデルについてはUV展開をやっておく。開き直す。

f:id:kayanomi:20220211123736p:plain

うわ…ってなるけど気にしない

カツ丼はなんかうまく一枚で開けているのだけど、だめなときはばらばらになる。それはしょうがない。きれいにしたい場合は自分でローポリモデルを作ることになるだろう。ローポリモデルにノーマルまで焼けばおそらく綺麗にできるはず…だが大変なのでまだやってない。

f:id:kayanomi:20220211123932p:plain

これはうまく開けてなかったメロンパン

まあそれでもテクスチャの効率はたぶんいいはずだし、あまり気にせずやっていこう。

 

 

さて、その後に基本的な準備をする。レンダーエンジンをCyclesにバイスをCPU -> GPU。VRChatやってるならいいGPUがあるはずだ。使ったほうがいい。

SceneタブのレンダーエンジンからCyclesを選ばないとベイクという項目がでてこない。
で、ベイクタイプもディフューズでいいらしい。いじるとライティングの影響をうけたり大変らしい。直接照明、間接照明のチェックを外す。カラーだけにする。

f:id:kayanomi:20220211123014p:plain

魔法の設定(よくわかっていない)

レイの距離によって品質が変わるらしいが…よくわからない。0.01とか0.05にしておくといいだろう。

 

設定後、ベイクを押せばベイクされるが…その前にShadingのウィンドウに移動し、設定をこなす必要がある。

まずハイポリモデルに移動して、ハイポリモデルにつながっている画像テクスチャを選択してアクティブにしておく。

f:id:kayanomi:20220211124232p:plain

左上の画像ノードを一回クリックしておく(おまじない)

で、ローポリモデルのほうでなにもないところで画像テクスチャを作成。

f:id:kayanomi:20220211124330p:plain

なにもないとこでShift +A または 上の方にある”追加”でメニューが出る

画像テクスチャノードの新規を押して、最終出力するための画像の名前を書いておく。

f:id:kayanomi:20220211124538p:plain

解像度とかは高めのほうがいいかも?

作成したら特にシェーダーには繋がなくてOK。一応クリックして選択状態にしておく。

 

最後にLayoutタブに戻りハイポリ -> ローポリの順でCtrlをクリックしながら複数選択する。で、先程いじったCyclesのレンダリングメニューのベイクを押して暫く待つとベイク画像が生成される。…うまく行かなかったら再調整を繰り返していくしかない。

 

あとは生成された画像を保存し、ローポリモデルをFBXとしてエクスポートする。
UnityへFBXをインポートし、VRCPickUpやObjectSyncを使うことで持って遊ぶことができる。

 

いまのところこんな感じで作っているが、もっといい方法が作れるようになったら新しく記事を書く予定。