今回はこちらのフォトグラメリでスキャンした3Dデータをゲームなどで使いやすいように Houdini で整える方法を紹介します
スキャンしたデータ
Polycam でスキャンした3Dデータがこちらです
(まだあまり使いこなせていないのもあると思いますが)ちょっと穴があいたりしていますが
しかし、これがスマホで出来てしまうのはすごいですね…
テクスチャは Base Color と Normal が入っていました
このデータの以下の点がゲームのデータとしては使いずらいので、解決していきます
・頂点数が多い(約3万頂点)
UE5 では Nanite によって表示では問題がない時代になりましたが、とはいえデータ容量が重いので減らせるなら減らしたいです
・床部分が不要
メッシュはもちろん、テクスチャの大部分も床が占めてしまっているのでこれまたデータ容量がもったいないです
・UV
人智を超えたUV展開が成されていて、使い方によってはあまり問題ないですが治せるなら治したいところです
Houdini で整える
大まかに説明すると、
読み込んだデータから不要な部分を切り取ったモデルを作る
1のデータの頂点数を減らしたデータを(テクスチャを剥がして)改めてUV展開したモデルを作る
1のモデルを2のモデルにベイクする
という手順です
1. 読み込んだデータから不要な部分を切り取ったモデルを作る
File > Import からスキャンした fbx を読み取ると、File ノードや Material ノードが自動的に生成されるのでそれをもとにノードを組んでいきます
(念のため fuse して近接頂点をマージし、)boolean で必要な部分を切り出して、Transform 位置調整などを行い、これをベイクする際の元データとします
2. 1のデータの頂点数を減らしたデータを(テクスチャを剥がして)改めてUV展開したモデルを作る
マテリアルノードを最下部に移動させ、その手前のノードから分岐させて作っていきます
polyreduce で頂点数を減らします
そして、attribute delete で uv を削除し、split uv seams でシームを付けて uv unwrap、uv layout を使って UV 展開を行います
これを、ベイク先のデータとします
3. 1のモデルを2のモデルにベイクする
1のモデルを2のモデルにベイクします
今回は simple baker を使いました
ベイク結果はこちらです
最初バラバラになっていた画像がまとまり、床の部分が無くなりました✨
これを、適当に principledshader などに設定してマテリアルを作成し、ジオメトリに設定すれば完了です
出力には ROP FBX Output ノードを使いました
データ容量も半分以下になり、ゲームにも使いやすくなりました
(出力するテクスチャのサイズなどを変更すればもっと軽くできます)
ノードを使いまわせば半自動で整形できるので良い感じです!