ZBrush

ZBrush猫(4) Dynamesh+ZRemesherはモデリング革命である

「数日おき」と書いた端から2週間…(==;;
予感はあったんですよね、こうなりそうな。多分7月半ばくらいまではこんなペースになってしまうかも…。

気を取り直して本題へ。
私のブログは不親切で、ZBrushの基本解説みたいな話題はろくすっぽスッ飛ばして書きたいことだけ書いてるんですが、今回はちと説明的な話から入ります。

Dynameshというのは、(たぶん)ボクセル・ベースでオブジェクトの構成ポリゴンを自動的に再構築(Re-Topology=リトポ)する機能です。

たとえばこんな形状。
dynamesh_before
ZBrushのブラシによる変形は、対象形状のトポロジーを一切変更しません。
※ZBrushの普及と共に「トポロジー」という単語が独り歩きしてローカル語法的な使われ方してるみたいですが、ポリゴンメッシュを構成する頂点構造が変化しない以上どんなにグチャグチャな形になっても、トポロジーは変化してません。ZBrushのブラシによって対象オブジェクトのトポロジーが”破壊される”という表現は、言葉の定義からすると誤用と言えるでしょうね。小姑みたいに五月蝿いコト言ってスミマセンけれども。

なので球体オブジェクトの表面をこんなふうにウニョ~ッと引っ張り上げると、引っ張られた部分のポリゴンはご覧のとおり極端に間延びしてしまいます。
この間延びした触手部分はこのままだとポリゴン分布が荒過ぎて、もうこれ以上細部を作り込むのは不可能です。
オブジェクト全体をSubdivideしてやれば触手部分の密度は上がりますけど、球本体の方も一緒に分割されて不必要に過密化してしまいますしね。

そんなお困りのアナタにDynamesh。
dynamesh_afterオブジェクト全体のポリゴン密度が均等になるように、トポロジーが再配分されます。
この図では説明の為に荒目にしてますが、私の実際の作業ではもっとずっと細かくリメッシュすることが多いです。

スカルプト中は当然アッチ引っ張ったりコッチ押し込んだりとオブジェクトをこねくり回しますが、そうするとだんだん部分部分のポリゴン分布に粗密の差が広がり、遂には「これ以上造形不能」な領域も出てきます。
バーチャル・フィギュアの髪の毛パーツなんかが典型。
そうした時に、対象パーツをDynameshに変換してリメッシュしてやると、粗くなってた部分の密度が復活するので、引き続きどんどんスカルプト続行可能になる(゚д゚)ウマー 、という手筈です。

(ただしDynameshオブジェクトはZBrushの元々のお家芸であるSubdivide階層を保持出来ません。Dynameshを取るかMulti Resolusion Subdivide機能を保持するか、の二者択一にはなります。)


ZBrushをデジタル彫刻ツールとして使い、動きのないオブジェクトをゴリゴリと仕上げていくだけなら、もうなんもかんもDynamesh一本やりでもエエんやないか、と踊り出したくなるくらい便利な機能なんですが。
しかしDynameshで作り込んだ形状を他アプリに持っていってキャラクタ・アニメーション、などということになると、ちょっと困ったことになります。

まず前述したようにSubdivisionを持てないDynameshオブジェクトは、やたらにポリゴン数が多い。100万200万はアタリマエ。
100万単位のポリゴン数持ったオブジェクトのボーン変形なんて全く現実的じゃありません。スキニング(ボーン変形のセッティング)やったことある人なら分かるでしょうけど、メタクソ重い上に関節の潰れの修正作業なんてもうほとんど悪夢ですよね。

またスキニング変形を綺麗に仕上げるには、モデルを形成するポリゴンも実物の筋肉の流れをなぞるようにトポロジー構築してることが望ましいわけですが、Dynameshはご覧の通りメカニカルに頂点を再配分しますから、筋肉の流れなんか無視です。


で、こういう高密度のオブジェクトを、再度表面をなぞるようにメッシュを張り直し、低ポリゴンのオブジェクトに置き換え再構成してやろう、というのがRe-topology、いわゆる“リトポ”です。

基本、リトポと言えば使うツールがZBrushであれ他の3Dアプリであれ、ベースになる形状の表面にマウスポインタを拘束(constraint)した状態で、チクチク頂点を縫い上げてポリゴンメッシュを張り直す手作業を意味します。
でも、大きい声では言えませんが私このリトポ作業が嫌いです。一旦造形が完了したベース・オブジェクトの上にペタペタ障子紙でも貼り付けていくかのような、あの家内手工業的アナクロ感!
ですが上述したように筋肉の流れやなんかを意識してリトポしようとすると、手作業でやるしかないんだろうな、と渋々あきらめてたのです。

それがかなりの部分まで自動で出来てしまう。
そう、ZRemesherならね。
ZRemesh000
QRemesh001ZRemesh002

上はZBrush付属のDemoHeadさんをDynamesh化したもの。これをZBrush4R5までのQRemesherと4R6のZRemesherで、TargetPolygon数1.5万で(あとはデフォルト設定のまま)リトポした結果が下2枚。
ご覧のとおりZRemesherはQRemesherに比べると、すごく賢く形状の“流れ”を読み取りながらリトポしてくれます。
目や口元に沿ったエッジの流れ、何より耳を見比べて下さい。品質の差は一目瞭然! 一体どんなアルゴリズム使えばこんなに首尾よくメッシュの流れを再構築出来るんでしょうね…恐るべしテクノロジーの進歩。

ZRemesherの詳しい使い方は私がここでうだうだ書くよりも、BlestarさんがYouTubeで非常に丁寧に解説して下さっているので、そちらをご覧下さい。(リンク先YouTube、いきなり音が出ますのでご注意)

ZRemesh003
実際に幾つかの形状で試してみると、さすがに何でもかんでもZRemesher使えば全自動で理想的なトポロジーに変換出来るってわけではないんですが、必要な箇所には左図のようにZRemesherGuidesブラシを使ってガイド線を引いておけばそのラインに沿ってトポロジーの流れを誘導出来ますから、納得いくまでガイド線を加えながらリトポ計算をやり直せばいいんです。
それでも1から全部手作業でリトポ・オブジェクトを編んでいく手間に比べたら、限られた重点箇所だけガイドしてやれば充分なクオリティでリトポしてくれるZRemesher様々です。

多少大袈裟に言えば、DynameshとZRemesherの組み合わせは、一部の形状のモデリング手法を革命したんじゃないか、とすら思うのです。

今までのモデリングでは、スタート時点から完成時のトポロジーを予測して、メッシュの流れをコントロールしながらの作業が必要でした。
私が外部アプリでかっちりトポロジーをまとめたベースメッシュを組んでから、それをZBrushに読み込んでスカルプト始めたがるのもこのためです。

ですがDynameshではトポロジーを一旦意識の外へ放り出して造形に集中し、完成してからトポロジー構築をZRemesherに担当させる、つまり造形作業とトポロジー構築を別工程に分離して作業できるわけです。

モデリングに対するこの意義ってものすごく大きいと思うんですけど、どですかね?>その筋の各々方


…今回は随分と御託が多くなりました。ようやく最後に来て肝心なワークフローの話を駆け足で。

  1. Dynamesh_to_ZRemesher01まず、形状をDynameshに変換してから、スカルプト作業を行って造形を完成レベルまで仕上げていきます。
    このぬこで頂点数ポリゴン数とも150万くらいです。

  2. Dynamesh_to_ZRemesher02続いてZRemesherでリトポします。まずはガイド線など引かずにZRemesherお任せで計算してみます。
    右図はデフォルト設定のままZRemesherかけたもので、頂点数は一気に8000強まで削減。一見これでも充分そうですが、、、

  3. Dynamesh_to_ZRemesher03手足の指のあたりを眺めるとさすがにちょっと減らし過ぎたかなと。
  4. Dynamesh_to_ZRemesher05なのでリトポ自動計算時に顔や手足の部分を選択的に密度を上げるよう、ColorDensityで調整します。
  5. Dynamesh_to_ZRemesher04さらに指の股の間などにZRemesherGuidesブラシでガイドを付け加えて、納得できるまでZRemesher計算のやり直し、というルーチンの繰り返しです。
  6. リトポの目的はポージング等の変形を効率よく精度よくやることにありますから、リトポ後の形状はクオリティを保ちつつも可能な限りローポリゴンで軽く仕上げたいものです。
    今回は最終的に2万ポリゴンくらいになりました。
    Dynamesh_to_ZRemesher06

さて、、、どんなに綺麗にリトポしても、ポリゴン数を減らす限り元形状にあった細部のディテールが失われてしまうのはどうしようもありません。この細部ディテールはリトポして出来た形状を何度かSubdivideして、Projection機能を使って元形状のディテールを転写していくんですが、、、
このProjectionがまたちょっとした鬼門で、単純にProject Allボタンをポチッとするだけだと、細部のディテールがうまく転写できずに崩れてしまう部分が割合頻繁に生じます。
このProject作業のコツみたいな話は回を改めて書きます。

こうして仕上がったモデルは最終的にSubdivideレベルの低い状態でmax等のフィギュア・コントロール用外部アプリに出力し、細部ディテールはDisplacement mapやNormal mapとして差分を取り出して外部アプリに渡すのですが。
これも1ネタありますので、そのうち別の回にて。
(こんなペースでいつ書けるかなぁ…(((;^^))


One thought on “ZBrush猫(4) Dynamesh+ZRemesherはモデリング革命である

Comments are closed.