3DCGで何をどう作るか考え中

ZbrushとBlenderの使い方、ヒント、コツなど。たまにZbrushプラグイン開発も。

Zbrushの無限スムーズブラシからの脱出の模索(完成型を作ってトポロジを再構成する)

(約 8,300文字の記事です。)

f:id:yamato-tsukasa:20210117010945j:plain

Zbrushでのハイポリ作業と、形状ができてからのトポロジ再構成作業とは分離させた方がいいとはっきり分かった。これにより、今まで私にとって曖昧だったZbrushとBlenderとの使い分けを明確にできた。同時にハイポリ化したZbrushがなぜ使いにくいのかの理由もわかり、その回避策も理解できた。BlenderでRetopoflowという有料アドオンを主に活用しようと決めた。

この記事はまだ構想であり、もしかしたら既存の枯れた手法であって「車輪の再発明」に相当する一般論を書いている可能性があります。私が気付かなかっただけかも知れない。

Zbrushのハイポリは諸刃の剣

f:id:yamato-tsukasa:20210117010945j:plain

Zbrushの特徴はご存じ、粘土をこねるように造形できることだ。どんどんハイポリにすればデジタル粘土になる。トポロジなどあってないような物だ。真っ黒になるまで超絶ハイポリ化できる。

f:id:yamato-tsukasa:20191225193902j:plain

f:id:yamato-tsukasa:20191225194032j:plain

このメッシュを間違えてクレイビルドアップブラシで触ったことに気付かずに履歴を削除して保存したら、上記の滑らか形状に戻すのは神経を使うだろう……。

ただしご存じのように、ハイポリになればなるほど「ツルンとした面」をブラシでは作りにくくなる。ちょっとでもブラシで表面に触れよう物ならたちまち凸凹にうねる。だから上図ではデフォーム変形で滑らかに変形させているのだけど。

そしてハイポリになればなるほど、スムーズブラシの効きが悪くなる。これはスムーズブラシの動作原理が(大雑把に言うと)ブラシ領域内の全頂点を平均位置に平準化するような処理をしているから、頂点数が増えれば増えるほどその変化は微々たる量になっていく(スムーズストロンガーブラシを使っても限界はある)。

f:id:yamato-tsukasa:20210126233622j:plain

超絶ハイポリにしたらいきなりスムーズがほとんど効かなくなったという経験は誰でもあるはずだ。

ハイポリは細かく彫れる=ムラがいつまでも残りやすい

というわけで、ハイポリのメリットはデジタルなのに粘土をこねるようにブラッシングできることであり、デメリットは「ツルンとした平均的な面を出すことが極めて難しくなる」ことである。だから、ダイナミックサブディビジョンでつるんつるんの綺麗な面を適用してサブディビジョンレベル化した後では、いきなり扱いが面倒になる。そのツルンとした面を保ったまま形状変更が極めて難しくなるからだ。少しでも強引なブラシ操作ですぐにムラだらけになる。そしてムラをならしたくてもハイポリ過ぎてスムーズが効きにくくなる。そうなるとひたすらスムーズブラシをかけまくる時間だけが無限に増えていく。

ほぼ無限ループ。スカルプトしているのかスムーズブラシをかけているか分からなくなる(笑)

作業中盤から後半戦に書けて突然、2, 3時間経っても全然造形が進まない、というオチになる。時間がどんどん吸い取られていく。こういう原因で、ハイポリにすれば一気に作業進度が落ちるわけだ(笑)

例えばこういうハイポリモデルを変形後にブラシで間違って触ってしまったことにあとから気が付くと、その修正にとても時間を取られる。

f:id:yamato-tsukasa:20191225193902j:plain

f:id:yamato-tsukasa:20191225194032j:plain

真っ平らならばフラットに潰すことは容易だが、こういう幾何学的な滑らか形状をハイポリ化した状態でうっかり崩すと元に戻すのが大変だ。厳密に言えば全頂点を完璧に元の位置には戻せない、Undoできない限り。。。見た目上はほぼ元に戻すことはできるけれどそれはきっと修復であって復元ではない。

超絶ハイポリはデリケートで扱いが難しいメッシュ

要するに、便利なはずであってZbrushの強みでもある超絶ハイポリは、実はとってもデリケートで扱いが難しいメッシュになることを意味している。ブラシのアルファ形状で変形させることは得意だが、それ以外の形に整えることはとても苦手になってしまうのだ。一方通行な作業なのだ。

スカルプトリスプロモードで少しは緩和可能

f:id:yamato-tsukasa:20210126234211p:plain

f:id:yamato-tsukasa:20210126213844j:plain

スカルプトリスプロモードではトポロジをリアルタイムで再構築していく。スムーズブラシ適用時のブラシ半径や各種設定項目によって超絶ハイポリからほどほどに粗いポリゴンに置き換わってスムーズ化するということができる。これはユーザーにとってはかなり思い通りにスカルプトできる便利機能だ。代わりにトポロジは常に変化していく。それを嫌がる人もいる。よく分かる。

だがトポロジを優先すると最初の通り、スムーズ化が難しくなりがちな上に、細部を彫るためにはディビジョンレベルを上げて無意味な所までもが超絶ハイポリになる=ますますスムーズが効きにくい領域が増える。

ここに長年疑問を持っていた。うん、Zbrush、何だかハイポリなればなるほど、使いにくいぞ、と。

だがスカルプトリスプロモードでトポロジを壊しながらっていうのも、気分が悪く、何だかなぁ~、とずっと思っていた。

トポロジを100%無視して形を出すことに集中する

形を作ることに集中すれば、頂点数だとかトポロジとか無視して、スカルプトリスプロモードでガシガシとスカルプトできる。データが重くなりすぎたらZ強度ゼロでスムーズブラシをかければ形状をほぼ維持したまま粗いポリゴンにトポロジを変更できる。

スカルプトリスについての記事はこちら。

Zbrushのスカルプトリス プロの使い方(挙動の理解とワークフローの構築) - 3DCGで何をどう作るか考え中

とにかくまずは「形状をざっくりと完成させる」ことだけを考えてひたすらモリモリとスカルプトする。その際の表面の微妙なうねりや凹凸は一切無視する。理由は簡単で、形状が仕上がったあとからリトポでローポリ・ミドルポリにすることで、ハイポリ特有の面の荒れは消えるからだ。

BlenderのRetopoflowで半自動リトポする

RetopoFlow 3 - Retopology Toolkit for Blender - Blender Market

実はこの工程は、フィギュア造形のみを目的にしていると、「それ、要る?形状ができたらイコール完成じゃないの?」となる。その通りだ。ただし上述した「ハイポリ特有の面荒れやうねりがない場合」ならば、ね。しかしそんなことはあり得ない。となると目立つ面荒れをコツコツとスムーズをかけながら潰すことになる。それもまた膨大な手間だ。そしてそれも万能ではない。ローポリチックな機械的な平面をスムーズブラシだけで出していくことはかなり無茶で、気が遠くなる。平面ならいけなくもないが、ダイナミックサブディビジョンのようなツルンとした形状は、やはりスムーズに膨大な手間がかかる。

それをやるくらいなら、表面状態の荒れ以外を完成させた段階でデシメーションマスターなどで200万ポリ以下にしてBlenderに送り、Retopoflowで半自動リトポして「エッジや谷を出せるトポロジ」に変更した上で、ミドルポリのメッシュのエッジを操作してシャープなエッジや谷を表現し、あとはディビジョンレベルを上げては転写を繰り返すことで、

  1. 形状が最初の通りの理想型になりつつ、
  2. トポロジもその形状に合わせた理想的なトポロジになる

という、一方通行で後戻り無しにメッシュの完成型に近づく。これはつまり、

  1. Zbrushで形状を作り上げる
  2. Retopoflowで形状を表現しつつも理想的な網目を作り上げる

ことになる。頂点位置の制御と、エッジ位置の制御を、それぞれ別工程で仕上げることを意味する。

面倒だよ!1回でやりたいよ、と思っていた自分の罠

これ、かなり矛盾するんだ。なぜならば、

  1. 形が決まらないと鋭いエッジや谷の位置が決まらない
  2. それらが決まっていたとしてそのエッジや谷に沿って頂点が偶然並んでいるとは限らない(最初のトポロジ依存)

なので単なる確率論になる。運が良ければエッジや谷に沿って頂点があれば、綺麗な山と谷ができる。リトポの必要もない。だがそれは運が良かった結果論であって、大抵は階段状のポリゴン面が見える。

f:id:yamato-tsukasa:20210127000221j:plain

消すためにはサブディビジョンレベルを上げるしかない。ハイポリにするしかない。ハイポリになれば確率論として山と谷に重なる頂点の数が増えるので、くっきりした山と谷が表現される。

その代わり、どんどんハイポリ化が進む。重くなる。PCによっては作業の限界がすぐに来ることになる。あるいはZbrushが落ちる(笑)

でもこれを、エッジと谷に注目したラフな形状の完成型と、それに沿うようにエッジを配置した手動リトポを行えば、結果、欲しい山と谷に綺麗にエッジ(頂点)を配置できるので、最初の頃と比べてずっと少ない頂点数で理想の形状を表現できることになる。加えてハイポリ特有のブラッシング由来のうねりや凸凹も消える。(だから最初の造形段階では無視していたわけ。)

今はサブスタンスペインターを使ってUV展開し、リグ入れポージングなどを考えれば、どうやってもZRemesherによる「単なるポリゴン数削減のためのリトポ」では足りない部分が多くて、結局は自分にとってもっとも扱いやすい「エッジ位置の指定」つまり半手動リトポの重要性が良く分かる。

あと、仮にZRemesherがかなり理想的なトポロジを出力できたとしても、例えば脇の下、手の平から指へ、あるいは手の平から腕にかけてのポリゴン密度が変わる領域のトポロジ処理については、理想的になっていない可能性がある。そこは最終的に手動での調整になるが、その場合でも元の形状の表面に自動的に沿ったまま作業ができれば効率がいいことは明らかだ。なぜならばあくまでも最初に完成させた形状を再現しつつ、メッシュの形状を作る必要があるわけだから、前者に拘束された頂点位置の制御ができれば効率的な作業となる。Retopoflowではそれができるのだ。

とりあえずいったんは「それがZbrushでもできるのかどうか」は割愛します。両者のツール比較記事ではないので(汗)

形状作成とトポロジ再構成のメリット

実はあとからのメッシュ修正に強い。というのも、最初に形を完成させて作業を続けていて、やはり更に服のシワを追加したくなったりした場合、

  1. スカルプトリスモードで納得いくまでシワを追加する
  2. 影響を受けたトポロジの部分だけをRetopoflowでリトポする
  3. ローポリレベルから転写&サブディビジョンレベル上げで形状を復元する

これをやれば、いつでもスッキリ「今の理想の完成型にぴったりそうトポロジ」に再構成できる。全部やり直すのではなく、追加・修正した部分のトポロジだけを修正すればいいので、何度もやり直しにはならない。

初期トポロジを踏襲しながら造形しつつトポロジ変更することはかなり無謀

これをもし1回でやるスタイルでトポロジを変更しようとすると、以下のような場合に迷路に入る。

  1. トポロジ変更したい部位のトポロジが、完成型のエッジや谷を作るために既に利用されているので、そのトポロジを変えると完成形状の部位に影響が出てしまう
  2. 例えば2つのエッジループでエッジを挟むことでクリース相当の鋭角なエッジを表現している場合にエッジが追加されるとどこかに必ず影響が出る
  3. トポロジ変更によって不自然な部分に不自然な高密度のトポロジができる(例えば二の腕の中間部位に謎のバンド状のループエッジが現れる、など)

などなど。私は割とこれで行き詰まることも多かった。例えばよくある手法として、ダイナミックサブディビジョンありで2つのループエッジで1つのエッジを挟んで鋭角化する表現(疑似クリース)は、トポロジを変えることで本来の完成型の形を作るという「逆説的な造形方法」を採用しているため、トポロジが変わると形が変わるのだ。試しにエッジループを好きなところに挿入するだけで、ダイナミックサブディビジョンの形がどんどん変わる。

トポロジは本来、まずは形が完成し、その形の山と谷に沿うようにエッジが再配置されることで、完成形状にもっともフィットした自然なトポロジとなるはずなのだが、コントロールエッジによる疑似クリース造形手法では、逆にトポロジを利用・変更することで形を作っているので、当然、トポロジを変更すれば形が変わる。鶏と卵のどちらが先かという無限理論に入っていく。

作業が後半に進むにつれてどんどんZbrushが使いにくくなる原因は、これでもあった。初期の偶然決まったトポロジを利用して形状を作ってしまったが為に、後半でトポロジを変えようとすると既存の完成した形状に悪影響が出てしまうのだ。お手上げです。悩みながら修正するしかない。作業のフローが一気に滞るし、影響が出ていないかのチェックが「その部位を修正するごとに発生する」ため、さらに悪循環に陥る。そしてその修正の結果、別のもう一方にも悪影響が出ていないかチェックする必要がある、という無限ループに入る。だから作業が全然進まなくなる。

Zbrushで完成型を作り、それに基づいてリトポするのが「急がば回れ」

これが私の結論だ。1頂点ずつ張り直す手動リトポは効率が悪すぎるので、半手動リトポとしてBlenderのRetopoflowを利用するというだけだ。もちろんZRemesherも使ってみていい感じにリトポできた部分はそのまま利用し、不満のあるメッシュだけをRetopoflowでサッと修正すればいい。

いずれにせよ、

  1. Zbrush(のスカルプトリスモード)で気ままに自由に完成型をざっと作る
  2. 完成型にもっともフィットするメッシュとなるようにリトポする
  3. 完成型を修正したら影響が出たメッシュ部位だけを再リトポする

これの繰り返しで、どんどん「完成型に最適なメッシュで作業を続けられる」。後戻りはしなくていい。トポロジと形状とに依存関係がないので、一部分のトポロジ変更が他の形状に影響を与えることはない。(ダイナミックサブディビジョンを上げると全体には当然影響は出るけれど。)

これならば初期の偶然いいところにあるエッジに依存して造形が影響を受けることはなく、自由にスカルプトした結果、欲しいところのシワの山・谷に沿うように半手動リトポすれば、最初に作ったシワの山・谷は最後まできちんと形として残る。またその形状変更も、メッシュのエッジ部分を移動させることで微調整は可能だし、大幅なシワの形状変更ならば、スカルプトリスモードで自由にねんど細工で再度シワを作り直し、その後、その形に合わせて影響を受けるメッシュ部分だけを半手動リトポすれば、以下同文。

一見、2度手間に見えるが、ちょっとした位置の微調整の際にはエッジを動かすだけで完璧に凹凸表現が追従してくれるし、ハイポリ化しなくても変なガタツキも出ない。中盤から後半にかけてのハイポリ仕上げ作業に入らない限り、ハイポリ化しなくても作業ができる。ミドルポリ程度までで作業を進められる。

ミドルポリの利点は多い

ミドルポリでの作業が多いと、全体の形状変更やバランス取りが簡単になる。頂点数が少ないと、必然的に不用意なシワや凹凸ができにくい。当然スムーズブラシの効きもいい。さらにはミドルポリまでならばBlenderとの連携もしやすい。GoBアドオンでの往復が快適だ。

ミドルポリならば面荒れはほとんど起こらない上に、ごく一部分だけ精細な表現が必要な場所についてのみ、高密度なポリゴンになっていれば、全体としては制御しやすいミドルポリながらも、本当に必要な精細な表現はすでにこの段階で表現できていることになる。あとは精度を上げるためにサブディビジョンレベルを1つずつ上げたときにガタツキが出るほどの急激な凹凸の変化ならばその部分だけ半手動リトポすればいいし、そうでもない緩やかな変化ならば現在のトポロジがたまたま今の形状に合っているのでそのまま作業を続行すればいい、ということになる。

問題はRetopoflowなどで半手動リトポを面倒に思うかどうか

f:id:yamato-tsukasa:20210127002437j:plain

これが最大のネックかも知れない。まずアドオンやソフトを使いこなすための勉強量。実際のリトポの手間と必要時間と、得られた効果のバランスだ。あとはトポロジ変更は非可逆だから、大きなポーズ変更には対応できないという弱点もある。

【結論】Blenderのアドオン「Retopoflow」の使い方を身に付ける

RetopoFlow 3 - Retopology Toolkit for Blender - Blender Market

というわけで暫くはRetopoflowの使い方の勉強をする予定です。この1行の結論のために何でこんなにも長文になったのか、自分でもよく分からない(笑)

あとは私自身が実践してみて、この理論のいいところ・悪いところや間違いなどを検証し、記事として執筆する予定。

予感としては「真っ当なアプローチ」だと感じている。そして、ある種のわくわく感がある時点で、きっとこのアプローチは当たりなのだろうという予感がある(笑)今後の記事に乞うご期待。





今回の創作活動は約2時間30分(累積 約2,168時間)
(677回目のブログ更新)

筆者はAmazonアソシエイト・プログラムに参加しています。(AmazonアソシエイトとはAmazon.co.jpの商品を宣伝し所定の条件を満たすことで紹介料をAmazon様から頂けるという大変ありがたい仕組みのこと。)
以下のリンクを経由してAmazonで何かを買うと購入額の1~3%ほどのお小遣いが私に寄付されます(笑)