100万ポリゴンのCADデータを3000ポリゴンにリトポする

こんにちは。株式会社Synamonで開発責任者(CDO)をしている西口([@nishiguchi3d])です。

みなさんはVRでCADのデータを見たいと思ったことはありませんか?

Unityにインポートして表示させるだけなら大して難しくないですがやはり問題になるのがそのポリゴン数と質感付けの部分じゃないでしょうか?

今回は実際に使用したデータをもとにVRに適したデータを作成しUnityで表示するところまで解説してみたいと思います。 

 ポリゴン数を削る

こちらが今回使用するBECKHOFFのEPCのCADデータです。細部まで作り込んであるのでこの段階で1,150,374ポリゴンあります。

f:id:Synamon:20180727015713j:plain

 ポリゴン数もさることながらこのディティールの3角ポリゴンのデータをUV展開するのかと思うとゾッとしますね!なのでこれをリトポ(リトポロジー)して可能な限りポリゴン数を削減していきます。

そしてこれがリトポ後のデータ3,132ポリゴンです(画像は3角化した後のものです)

f:id:Synamon:20180727020157j:plain

リトポといいましたが本当はハイポリデータを下敷きにして全部1から作り直しました、形状的にそのほうが早く綺麗にできそうと判断したからです。シルエットが変わらないように大きいディティールはそのまま、テクスチャで表現できそうな小さい凸凹は大胆に削って再構成していくのがポイントです。

f:id:Synamon:20180728165054g:plain

中央に見えるくぼみは最初削った状態で作ったんですがVRに持っていって確認したらNormalマップだけでは穴が空いていないのがバレバレだったので空けました。

 

UVを展開します、3000ポリゴン程度ならUV展開も楽々ですね!

f:id:Synamon:20180728140041j:plain f:id:Synamon:20180728140335j:plain 

画像は3角ポリゴン化した後のものになりますが、実際には三角ポリゴン化する前のほうが連続面の選択やエッジの選択がやりやすいので開きやすいです。

もしリトポせずに3角ポリゴンで構成されたハイポリのモデルをUV展開するとなると大変です。自動展開ツール等あるので出来ないわけではないですが細かくUVを制御することができなくなるので後の工程で苦労するかもしれません。

テクスチャにディティールをベイクする

 UVも開いたのでハイポリのディティールをローポリモデルにベイクしていきます。

f:id:Synamon:20180728143130j:plain f:id:Synamon:20180728143149j:plain

まずはNormalマップ、MODOとSubstance Painterの2つで焼き比べてみましたが今回はMODOのNormalを採用しました。どうしてもうまく焼けない部分は設定を変えながら焼いた複数枚のマップをPhotoshopで合成してます。一発でうまく焼くのはなかなか難しいです。ちなみにオブジェクトを3角ポリゴンに変換せずにNormalをベイクしてUnityに持っていくと見た目が変わってしまったりするのでベイク前に3角ポリゴンに変換してから焼いてます。

f:id:Synamon:20180728143334j:plain f:id:Synamon:20180728143401j:plain

Ambient occlusion(AO)はSubstance Painterのものを採用しました、これも2つのソフトで焼いてみて綺麗だった方を選びました。今回のモデルは凹凸が多いのでAOが入ると立体感が出ていい感じですね。

 

あとはSubstance Painterで質感をつければ完成です。後はUnityに持っていってStandardShaderのマテリアルで設定して終了。

f:id:Synamon:20180728144142j:plain

f:id:Synamon:20180728144733j:plain

 上:Substance painter 下:Unity 

 まとめ

最近はオートリトポやプロシージャルの技術も進んできているのでもっと簡単に軽くて綺麗なデータを作れるようになるかもしれませんが、やはり主役となるモデルは一手間かけるとぐっと存在感が増すので、時間をかけて作り込むか簡単に済ませるかは登場するオブジェクトの重要度によって選択するといいと思います。