見出し画像

日本家屋3DモデルをSketchfabに公開するまでのワークフロー[ローポリ作成・ベイク・アップロード編]

はじめに

モデリング編UV展開・マテリアル・モディファイア編に引き続き、ローポリ作成からアップロードまでを記載します。
ちなみに、ローポリを作成する理由は『Sketchfabのアップデート基準に適うため』というよりも、『リアルタイムレンダリングでの表示に適したモデルにするため』です。ゲームやxR関連のプラットフォームでも使用できるようにすることで、可能性が大きく広がります。

[1] ローポリ作成の準備

スクリーンショット 2021-01-19 13.56.26


・ハイポリのコレクションごと複製。このコレクションとその中の各オブジェクトの末尾を".lp"に変更。
・ハイポリコレクションのチェックを外して隠す。

[2] ローポリ作成

スクリーンショット 2021-02-01 19.55.13

ローポリにする方法は下記の通り。

<A> Decimateモディファイアを追加する。
方法: オブジェクトのポリゴン数を減らすモディファイア。SubdivisionやMultiresモディファイアなどを使用した複雑なメッシュ構造のモデルに適している。メッシュが綿密に配置されたようなモデルには向かない(メカニック系とか)
内容:3種類の方式(Collapse/Un-subdivide/Planar)から適した1つを選べる。
- Collapse = メッシュの形状に基づいて、vertexをどんどんマージしていく。UVマップは壊れるので、再度展開が必要。
- Un-Subdivide = Subdivisionで追加されたエッジをDissolveしていくイメージ。UVマップは壊れにくい。Displaceで変形した後のジオメトリに基づくので、若干の凹凸をキープしてくれる。
- Planar = 平面から構成された地形のようなメッシュのディテールを減らしていく。

<B> 単純にSubdivisionとDisplaceモディファイアを削除する。
方法:上記の通り。
内容:モディファイアを削除して、形状に影響の出ない範囲でエッジをDissolveする。UVマップはそのまま使える。Decimateで推奨されていないメカニカルなタイプのオブジェクトはこれで良いかと思う。

今回のモデルでは、窓とドアは<B>で、それ以外は<A>のUn-Subdivideでローポリ化。特に、複製オブジェクトを利用した柱群に関しては、展開図を壊したくなかったので<A>をチョイス。
人型など有機的なモデルやSculptしたようなモデルには、<A>のCollapseを使っている人が多い様子。

上の図は、CollapseとUn-Subdivideを比較したもの。
瓦屋根の形状をCollapseで何とか残したかったけれど、マージして欲しくない点がマージして歪んでしまったり、穴が空いてしまったりしたので、結局Un-Subdivideに決着。まだまだ追求が必要。

[3] ベイクの準備

スクリーンショット 2021-02-01 21.47.56

・UVマップのforBake以外は削除。ただし、ローポリ作成で<B>を選んだものはUVmapは全て保管。
・ローポリ化で崩れたUVは再度展開。
・アップロードできる容量(50MB)から、テクスチャの枚数の目安を計算する。今回は、2Kサイズを20枚程度がMAX。
・結果、(Diffuse+Roughness+Normal)×6+窓のAlphaマップ、にまとめる必要があることがわかる。
・どのオブジェクト(メッシュ)をまとめてベイクするかは、必要な解像度を基準に考えれば良い。大きなパーツや目立つパーツ同士をまとめてしまうと、限られた2Kの中でそのメッシュが使用できるエリアが狭くなり、ローポリに貼り付けてみたときに粗くなる。
・今回は、枚数的にクリアできそうだったので、まとめずにそのままオブジェクト毎にベイクする。(オブジェクトをまとめる場合は、CTR+Jで結合してからUVマップを整える。)
・UVマップの整え方は、手動、デフォルトのPack Islands、またはMagicUVプラグインのPackUVの利用、などがある。
・意図的に重複させたUVマップ(窓とドアと柱)は、ずれない等に気をつけながら手動で位置とスケールを調整する必要がある。
・各オブジェクトに新規マテリアルを追加しておく。

[4]ベイク(Bake Wranglerを使用)

デフォルトのベイク機能を使うには私の気が短すぎたので、Bake Wranglerを使いました。BlenderMarketで購入。もっと安く売っているサイトもありましたが、カードを使う上でセキュリティ面が心配なのと、$15~$25なので応援の気持ちも込めてポチッとな。BakeWraglerの公式ドキュメントも近いうちに翻訳します。

スクリーンショット 2021-02-01 22.02.42

・Bake Wranglerをインストールすると"Bake Node Editor"がエディタータイプに追加されるので開く。
・"+NEW"をクリックして新規ノードツリーを作成。
・上図はwoodpartsオブジェクトの設定例。
・一番大事なのは、Meshノードにあるベイクターゲットとソースに設定するメッシュとUVマップを間違えないこと。上図の場合、ハイポリのforTextureマップからローポリのforBakeマップへのベイクに設定している。
・テクスチャの保存先を設定。同じ階層にtexturesフォルダ(なければ作成)が管理しやすい。テクスチャ毎にフォルダ分けはしなくて良い。一覧性を優先。
・テクスチャのネーミングルールは、"オブジェクト名_パス名.拡張子"。壁面オブジェクトのテクスチャであれば、"wall_diffuse"や"wall_roughness"など。

下のリストは、Sketchfab公式ガイドラインのキャプチャ。Sketchfabにアップしない場合でも、このルールは守った方が後々共有しやすいし管理しやすい。

スクリーンショット 2021-01-18 11.20.05


・Ray Distanceを.001くらいに設定して、まずベイクしてみる。
・コンソールでエラーがないか確認して、アウトプットされたテクスチャをオブジェクトに追加した新規マテリアルに接続してみる。
・結果が理想通りになるまで、RayDistanceの数値を.001くらいづつ変更して調整。
・Normalマップのベイクに使用するRayDistanceは、DiffuseやRoughnessで使用した数値と大きく異なる場合が多いので、woodpartsオブジェクトの設定例のように、Meshノード自体を分けるとやり易い。
・UVエディターで、ベイクしたテクスチャを開いておくと、ベイクの度に確認しやすく変化もわかり易い。
・ベイクし終わったら、別途新規ノードツリーを作成し、次のオブジェクト用にセットアップする。(ノード構成はコピペでOK)。後日やり直しとなった時に、最後の設定がオブジェクト毎に残っていると安心するため。

スクリーンショット 2021-01-21 13.05.29

・上の図は、ローポリ作成で<B>モディファイアの削除を選んだオブジェクト向けの設定。MeshノードのTargetとSourceは同じオブジェクトに設定し、UVマップだけ”forTexture"から"forBake"へベイクする設定。
・同一オブジェクトでのベイクでは、RayDistanceは関与しない。
・Normalは、メッシュの形状を加味したBlenderのNormalではなく、テクスチャ上のNormalだけ転写するPBRの"Texture Normal"に設定。

・全てベイクし終えたら、各マテリアルに接続して全体の確認。

[5]ベイク結果

スクリーンショット 2021-02-01 22.50.43

・気になる点は、屋根のメッシュ自体の凹凸が少なすぎることと、近寄ると木目がギラギラしている箇所があること。
・RayDistanceの調整やCageの上手な使い方もわかっていないので、さまざまなモデルで経験を重ねる必要がある。

[6] アップロード

スクリーンショット 2021-02-01 23.02.21

・今回はローポリのみをアップロードするので、Blenderファイル自体を複製し、複製したファイルからハイポリを削除。
・ハイポリに使用していたマテリアルやテクスチャを削除。
・ローポリで使わないUVマップやVertexGroupなども削除。
・整理し終えて、最後にモデルを確認したら、File>External Data>Pack All into  .blendを選択。参照しているテクスチャが全てblenderファイル内に取り込まれる。
・新規フォルダを作成して、その中にPackしたBlenderファイルを入れ、File>External Data>Unpack all into filesを選択。表示されるリストから、 "Use files in current directory (create when necessary)"を選択。
・フォルダの中にtexturesというフォルダが作成され、その中にテクスチャが書き出されているのを確認。
・追加の形式でモデルをアウトプット。今回はFBXのみ。
・全て入ったフォルダをZip.

スクリーンショット 2021-02-01 23.14.05

・Sketchfabにログインして、UploadページにZipファイルをドラッグ&ドロップ。プロパティエディタが表示されるので、モデルのアップが終わるまで詳細を埋めていくとよい。

スクリーンショット 2021-02-01 23.20.03

・プロパティエディターでは、タイトル、説明文、カテゴリー、タグの設定、ダウンロードの可否、ライセンスの設定などなどが行える。
・ちなみに、ダウンロード可にすると、月1回のアップロード制限には影響しない。何個でもアップできる。そうやって無料モデルが増えればユーザーも集まるだろうろうから、プラットフォームの活性化に繋がりますね。めでたし。

スクリーンショット 2021-02-01 23.17.00

・モデルのアップが終わると、3Dビューワーの設定を細かく行える。
・テクスチャのネーミングを正しくできていれば、マテリアルへの接続は勝手にしてくれる。もし間違っていても、テクスチャの追加や変更は可能。
・ライティングの追加や環境光の設定も可能。すごいー。楽しい。

アップロード結果

試行錯誤でやっとアップロードしたモデルは初心者丸出しで情けないですが、こうやって記録してまとめて振り返ることで、今後に生かそうと思います。
ご拝読いただき、ありがとうございました。


この記事が気に入ったらサポートをしてみませんか?