ZBrushなどの3Dツールで曲面を滑らかにする方法

滑らかな曲面に戻したい

スカルプトや、ポリゴンモデリングで頂点数が多いモデルを修正する時って、気を付けていても不意に曲面に細かい凹凸ができていることってありますよね?

ZBrushでの基本的なスカルプト手法だとメッシュレベルがあるので、それを下げてコントロールすることが可能です。

しかし、2018になってからSculptrisProの導入など、ローレベルのメッシュを削除することもあり、ハイポリ状態での修正方法を探していました。

今回はこれを修正する方法の一つをメモっておきます。

3D界隈の知識が足りてないので業界では常識なのかもしれませんが、そこはご了承ください。


手法

曲面を手で修正するのは難しい

曲面や平面を手動で調整するのは難しいです。

平面であれば軸を調整してスケール0にする手法が一般的ですが、曲面の場合はこの手が使えません。

今回の手法では、サポートメッシュを使います。

ZBrushのスカルプト操作を例にしますが、他のDCCツールでのポリゴンモデリングにも応用できると思います。

要点は、扱えるレベルの頂点数まで下げるorプリミティブから変形などで理想となる形状に加工できるようにして、サポートメッシュを作成するということです。


概要

  1. ベースとなるメッシュをコピー
  2. 扱える頂点数まで減らす
  3. 少ない頂点数で滑らかに調整してサポートメッシュを作成
  4. サポートメッシュに沿わせる形で修正


その他の案

  • スムーズブラシを使う
     曲面に対してスムーズを行うと、どうしても線が残ってしまいがちで時間がかかりすぎるので除外。

  • Tool>Deformation>Polishを直接使う
     メッシュが細かすぎる場合は余り効果がないので除外。

  • SculptrisProの使用を諦めて従来のSubDivだけで行う
     ある意味正解ですけど、今回は使ってしまったor使いたいということを前提なので除外。


修正例

f:id:hildsoft:20180430135910j:plain

途中からSculptrisProを使用しているため、四角ポリゴンや△ポリゴン、密度差がかなり入っている上にハイポリゴンの状態です。

太ももの部分にある細かな凹凸をスムーズにします。

正面から見るとそれほど凹凸は目立たないのですが、斜め上から見ると光の加減で凹凸がはっきりわかる状態です。


手順詳細

サポートメッシュを作成する範囲を選択

f:id:hildsoft:20180430141402j:plain

スムーズをかけたい部分より大きめにマスクをかけます。

全体のコピーを取ると、この後使用するPolishやZremesherなどの機能で処理時間がかかるためです。

また、少し大きめにするのはPolish時に境界部分に縮みが発生するためです。


サポートメッシュのサブツール化

f:id:hildsoft:20180430142120j:plain

サポートメッシュの元となる部分を抽出します。

Tool>Subtool>Extractを使用し、マスク部分を厚み0、片面のみのメッシュでサブツール化します。


サポートメッシュのリトポロジー

f:id:hildsoft:20180430143205j:plain

マスクを解除し、Tool>Geometry>ZRemesherをかけます。

Target Polygons Countは滑らかにしたい形状に合わせて調整します。

今回は比較的大きい凹凸を含めて滑らかにしたいので、ポリゴン数をかなり落とします。

ポリゴン数が多い場合はそれほど滑らかにできないので、目的の形状に合わせて調整してください。


サポートメッシュの調整

f:id:hildsoft:20180430144408j:plain

Tool>Deformation>Polishを強さ1で、数回かけます。

ローポリゴンの状態でPolishをかけているので、スムーズになる凹凸のレベルが変わってきます。

この状態でPolishをかけることにより、微妙な凹凸を消してしまう事が目的です。

f:id:hildsoft:20180430145035j:plain

ここで最終的なフォルムがおおよそ分かるので、この段階で滑らかだと判断できるようなポリゴン数とPolish実行回数を調整してください。

また、この時点でブラシなどを使用して形状を整えることも可能です。


サポートメッシュのSubdivide

f:id:hildsoft:20180430150034j:plain

元のメッシュに転写するために、サポートメッシュにスムーズをかけます。

手法は二つあり、

  • Tool>Geometry>DivideでSmtオプションを使用して分割する
  • Smtオプション無しで分割の度にTool>Deformation>Polishをかける

それほど差は無いですが、若干の差はあるので形状によって使い分けても良いと思います。

今回はsmoothを使用して単純に分割しました。

転写範囲を調整

f:id:hildsoft:20180430151403j:plain

修正したいハイポリモデルのマスク範囲を調整します。

先ほどExtractする前にマスクをしているので、その範囲より小さく、適用したい部分だけマスクを残します。

リトポやsmoothをした影響で境界部分で段差ができてしまうので、適用する境界部分をTool>Masking>BlurMaskを数回適用してぼかします。

Extractする際に大きめにしたのも、ここでの影響を抑えるためです。


f:id:hildsoft:20180430151555j:plain

Tool>Masking>Inverseでマスク範囲を反転します。

Ctrl+ブランクエリアをクリックのショートカットを使う方が早いです。


転写

f:id:hildsoft:20180430152339j:plain

修正したいハイポリモデルをSubtoolで選択して、転写元の滑らかにしたSubtoolを可視状態にします。

安全のため、それ以外のSubtoolは不可視状態にしておくのが良いでしょう。

Tool>Subtool>Project>Projectionを実行します。

設定は初期値で大丈夫だと思いますが、モデル形状により上手く転写できない場合は設定を調整してみてください。


完成

f:id:hildsoft:20180430153208j:plain


f:id:hildsoft:20180430153214j:plain

それほどシルエットを崩さずに消したい凹凸部分だけ滑らかにすることができました。