Blenderでスキャニングしたモデルのリトポロジをアドオンで効率化してみよう!

どうもおそらく世界で一番EEVEEの略称ではない名前を言わせたCGSLABのハヤシヒカルです。

Blender Advent Calendar 2018 の22日目です。

データフロー関連を話そうかなーと思ったんですがBlendxJP3で話しきれなかったところを書いてみようかなと舵取りしてみました。
普段はCGSLABにて2D/3DスキャニングのRnDを行っています。


特にモデリング関連とレンダリング関係、ワークフローとして落とし込む上でのパイプライン整備などもやっています。

今回はCGSLABでスキャニングを行った後に、最低限使えるデータに変換する上で必ず発生するリトポ作業をBlenderでも行っているので、その点をご紹介したいなと思いました。


RAWデータとは?

RAWデータとは何かということですが、何かから取得した直後の無加工なデータのことをRAW(生)データとCGSLABでは呼称しています。(業界的にも一般的?

ですので2Dスキャナを使用してスキャニングした最初の撮影画像もRAWデータですし、3Dスキャニングしてメッシュ化したメッシュデータもRAWデータになります。


RAWデータはまさに何も手が入れられてない生の状態の食材のような状態です。

そのため非常に高密度・高解像度ではあるのですが、そのままではレンダリングするにも他の環境に持っていくのにも一苦労します。

  • 一例ですがこのような問題があるでしょう。
  • 読み込みが遅い(できない)
  • ビューポートでのプレビューが遅い(できない)
  • レンダリングが遅い(できない)
  • UVを開くことが困難(人力での適正展開は不可能)

そこで、様々な加工を行って受け皿のソフトウェアに渡すことで上記のような問題点を解消しつつ扱いやすいデータにしなければなりません。
今回は3Dスキャニングしたデータに注目して解説していきます。

リトポロジとは?

前述したRAWデータを扱いやすいデータに加工する作業といえばリトポロジでしょう。
最近ではリトポという単語はよく目にしますが略称で、リトポロジ(ReTopology)が略さない言い方です。


メッシュの形状を維持しながら、メッシュの構造をきれいな構造を作り直すことを指します。
Blenderでは手動で行う場合はスナップ機能を使って、サーフェイスに吸着させる方法が手っ取り早いです。


しかしサーフェイスの内側に入り込んでしまった頂点などは不正な状態になってしまう等の問題もあります。

そのあたりを解決するアドオンたちを今日は紹介していきたいと思います。

便利なアドオンたち


それでは、CGSLABで検証したリトポツールたちの紹介です。
年末年始にゆったりとアドオンを探すときに少し思い出してもらえればなと思います。

RETOPOFLOW2

https://blendermarket.com/products/retopoflow

Blenderでリトポするならの鉄板アドオンです。
やはり手動でリトポするのは一番きれいではあります。
理想的なポリゴン構成にすることで、後のUV展開も楽になるでしょう。


いくつかの問題点としては特殊なRETOPOFLOWモードのような形のUIになるので、少し慣れが必要です。


また実行時に全体のメッシュ構造を読み込む様で
しかし、すべての部分を手でリトぽし直すのは正直つらい時があります。

スキャニングによってリアリティがあふれるモデルを手早く取得する

もちろんクオリティの担保ができる分、スキャニングが無意味にはなりませんしモデリングの良い練習にもなるでしょう。
しかし大まかなところは自動で保管してくれればいいのにと思います。

そこでよいアドオンがこちらです。

DynaRemesh

https://blendermarket.com/products/dynremesh-1

この記事を書いてるタイミングでVer1.6です。2.0もかなりいい感じなのでリリースが待ち望まれます。


DynaRemeshで先日スキャニングしたサルの頭蓋骨をSubdiv=1で行ってオリジナルモデルと比較したのが以下の画像です。

かなりディテールも維持したままクアッドポリゴンにリトポされています。


ほとんどワンボタンで、パラメーターも少なくて試行錯誤しやすいのが良いです。

ただし、このまま何かに使うといういみではちょっと難しく、自動展開したUVにNormalなどをベイクしてプロップなどに利用するにはよいでしょう。

手間を少なくしてそれなりにリアルタイム・オフラインのどちらのレンダリングにも対応できるモデルを用意するにはちょうどいいかと思います。

必要な部分だけ手作業でリトポした内容とマージするならばかなり便利かなと思います。

さて任意のトポロジーラインとそれ以外はなんとなくいい感じに・・・そんな都合の良いものがあるのでしょうか?

Tesselator

https://blendermarket.com/products/tesselator

あります、いいとこ取りのBlenderらしいリトポアドオンです。
サーフェイスの表面にパーティクルを生成して、その均衡をベクトル化してメッシュラインと密度と流れをコントロールするといういい感じリトポアドオンです。

またGreecePencilとの合わせ技で、GreecePencilのStrokeに沿ってガイドパーティクルを制御するので、ある程度のメッシュラインを手動でコントロールすることも可能です。

同じようなものでinstant-meshesというリメッシュツールがOSSで公開されています。

基本的なアルゴリズムは同じでしょう。ちょっと安定性が低いですがこちらも良いセミオートなリトポツールです。

https://github.com/wjakob/instant-meshes

BlenderVDB Remesher

https://gumroad.com/l/jqLNZ

ついでにはなりますが、リトポする際に問題点があったりすることもあります。

どういったことかというと、理想的なリトポベースのモデルとはメッシュに穴の空いていないワンメッシュオブジェクトになります。

しかし、スキャニングを行ったモデルには大抵小さなゴミメッシュが内外にあり、また細かく穴が空いている場合などがあります。

またぶっ刺しモデリングなどをしたモデルをきれいにクリーンナップしたいということもあるでしょう。

このアドオンはOpenVDBを利用してメッシュをボリュームグリッドに変換して、そのボリューム同士を結合したり削ったりします。

ボリュームとして処理するのでどのようなトポロジー状態でも、大抵の場合は丸め込んで均一なメッシュ構造に変換することが可能です。

最近ではCINEMA4D R20でも実装されたボリュームモデリング機能として同じ機能を実装しました。

またHoudiniでもOpenVDBのサポートが行われたときから同じようなことがノード構成で可能になっていますが、そちらはHoudini Advent Calendar 2018の本日22日目に紹介しているのでそちらも御覧ください。

OpenVDBを使ったリメッシュワーク

ざっくりではありましたがリトポロジアドオンたちどうでしたでしょうか。

すでにTwitterなどで見知った人もどういう面で使うと良いかといったところで参考にしてもらえればと思います。

スキャンしたアセットの利用は今後拡大することは間違いないなく、CGSLABでは日々こうした、スキャニングに付随した研究開発を行って情報発信を行っていきたいと思っています。

なお今回の記事は動画化しています。

また動画中で猿のモデルのポリゴン数を480万といっていますが、実際には半分の240万ポリゴン程度です。

何を勘違いしたか、合計値で表示されることを忘れておりました。何卒ご容赦ください。

2D/3Dのスキャニングサービス自体も提供していますので、もし案件などで利用されたいと思いましたら問い合わせフォームやメンバーにご連絡いただければと思います。

それではBlender Advent Calendar 2018 22日目担当のハヤシヒカルでした。

明日23日目はNuttiさんの「Blender2.7xで作られたアドオンをBlender 2.8向けに対応する方法を書きます」です!