近年様々なアプリケーションで自動リトポロジーのソリューションが導入されつつあるものの、キャッチ―な比較記事とタイトルで正確な情報を書いていないものが多く見受けられるため、今一度ZRemesherの様々なパラメータについて解説をしていきたいと思います。

現在ZBrushに採用されているZRemsher v3は、こちらの公式ドキュメントにも書かれている通り、ZBrush2019で、よりハードサーフェスや、CADソフトウエアから送られてくるメッシュのリトポロジーを担うことを想定し、設計がされています。

なぜZBrushにZRemesherが搭載されたか

ZRemesherの前進となるQRemesherという機能が4R4より搭載され、この機能が開発された背景に、4R2のDynameshでベースメッシュの生成をしやすくなったためだ。

これ以前のZBrushはどうだったかというと、ソフトウエア内でベースメッシュを生成するのはZsphereまたはPrimitiveを活用したものであり、土台を作るための機能を他のソフトウエアに依存せざるを得ない状態だった。

Dynameshはボクセル的な計算方式を用いており、メッシュをバウンディングボックス内に収めた上でそれをグリッド上に割るため、均一な立方体を生成できるものの、形状の特徴に沿ったエッジラインなどを持たないため、大まかなベースメッシュの作成には特化しているものの、ディテールを彫るための土台には適しているとはいいがたい。

そのため、ZRemesherを利用し、Dynameshのメッシュをきれいにし、ベースメッシュとして活用することで、前の記事で書いた”マルチレゾリューションメッシュエディティング”へのワークフローが完成することとなる。

ZRemesher v3 vs Legacy(2018)モード

ZRemesherには様々なオプションがあり、それらは公式ドキュメントでも解説されている。

zremesher_setting.jpg

ZBrush2019 以降のZRemesherには2つのモードがあり、ZRemesher v3を利用する標準モードと、ZBrush 2018以前に搭載されていたLegacy(2018)のモードがある。

ZRemesher v3は、CADなどからインポートされたデータや、Livebooleanの結果をリメッシュし、スカルプトしやすいように設計されており、有機的な造形ではZRemesher v2と似た出力を行うものの、ZRemesher v2を好む人もいるかもしれないということで公式が配慮し、両モードを搭載した背景がある。

こちらの動画にてZBrushの開発マネージャーのPaulがZRemesher v3とv2の違いを解説している。

主なv3とv2の違い

  • v3のほうが計算速度が速い
  • より指定したポリゴン数に近い結果をもたらすように
  • エッジのCreaseを維持するオプションの追加
  • DetectEdgesオプションの追加
  • より角ばった位置のエッジを考慮してリトポロジーをするようになった。

Cubeに対して実際に使ってみるとこのような結果となる。

設定はLegacy / v3ともに

ポリゴン数0.1K指定 Adapt以外その他オプションなし

Legacy

zremesher_legacy2.jpg

v3

zremesher_legacy1.jpg

「おいおい、一見違いがないじゃないか。」

という意見もあるかもしれないが、まぁ待ってほしい。何もオプションを有効にしていないのだから、まだZRemesherの真価は発揮されていない。

レガシーモードを有効にするとグレーアウトする項目があることにお気づきだと思う。

zremesher_setting2.jpg

Keep Creaseと Detect Edgeという項目だ。

これら2つがv3とv2の最大の違いともいえる。

では先ほどのCubeに対して以下の条件で実行してみよう

設定は


Legacy

ポリゴン数0.1K指定 Adapt以外その他オプションなし

zremesher_legacy6.jpg

結果 386頂点(指定の3倍)

ポリゴンの揺らぎがある。


v3

ポリゴン数0.1K指定 Detect Edge + Adapt以外その他オプションなし

zremesher_legacy5.jpg

結果 98頂点(ほぼ指定通り)
各面にPolyGroupが適用され、Creaseもついた状態となっている。
ポリゴンの揺らぎもない。


上記点から、Detect Edgeのオプションがいかに強力かを理解していただけたと思う。

他の形状でもこのように、上がDetect Edgeありのv3 下がv2のオプションなし となっている。

zremesher_legacy7.jpg

詳しい内容は公式の動画でこれらの特徴を解説しているのでご覧ください。

各種オプションとパラメーターについて

では、実際にZRemesherのオプションおよび、パラメーターについて解説していきたいと思う。

Freeze Border(境界フリーズ)

オブジェクトの境界となる頂点を変更せず、できる限りリトポロジーをするオプション。

左:元のポリゴン
中央:オプションあり
右:オプションなし

zremesher_freezeborder.jpg

Freeze Group(グループフリーズ)

グループを維持し、PolyGroupの境界となる頂点を維持し、できる限りのリトポロジーをするオプション。

左:元のポリゴン
中央:オプションあり
右:オプションなし

zremesher_freezegroup.jpg

簡単にいうと各ポリグループを別々のオブジェクトとして考慮して、Freeze Borderをかけているので、結構難しい計算を要求しているため、個人的にもあまり使用頻度は高くない。

Keep Groups(グループ保持)

適用されているPolyGroup情報をできる限り維持して形状のリトポロジーを行う。このオプション単体では、境界部分の頂点は固定しない。

左:元のポリゴン
中央:Keep Groupsあり
右: KeepGroupsなし

zremesher_keep group.jpg

Smooth Groups(スムーズグループ)

上記Keep Groups(グループ保持)が有効な状態でスライダーを調整することにより、各PolyGroupにスライダーの数値のポリッシュを適用する。(計算順としてはリトポロジー後。)

左:元のポリゴン
中央:Smooth Group 1
右: Smooth Group 0

zremesher_smooth group.jpg

Keep Crease(クリース保持)

エッジに適用されているクリースを保持し、ついでにそのクリースが適用されているエッジを基準にPolyGroupを分ける。

左:元のポリゴン(PolyGroup境界部にCreaseを適用)
中央:Keep Creaseあり
右: Keep Creaseなし

zremesher_keep_crease.jpg

Detect Edges(エッジ検出)

エッジの角度が急激に変化している部分を検知し、その位置に自動的にCreaseやPolyGroupを適用する。
左:元のポリゴン(Creaseがない状態)
中央:Detect Edgesあり
右: Detect Edgesなし

zremesher_edge_detect.jpg

設計上CAD/Livebooleanのメッシュへの用途を想定しているため、スロープ形状は角度的にも検知がなかなかできないため、オプションの使いどころが重要。
上手く利用するとこんな感じの結果も。(XZ軸をシンメトリにしている)

zremesher.jpg

Target Polygon Count(ポリゴン数指定)

文字通り目標のポリゴン数を指定項目 単位が1000ポリゴン単位なので、1の場合には1000ポリゴン 5の場合には5000ポリゴン。

左:元のポリゴン(Creaseがない状態)
中央:Detect Edgesあり + Target Polygon Count 5 (結果 5048)
右: Detect Edgesなし +  Target Polygon Count 1 (結果 1016)

zremesher_edge_detect2.jpg

Half / Same / Double(半分 / 同一 / 倍)

現在のポリゴン数からリメッシュしたポリゴン数をおよそ半分/同一/ 倍にする。

zremesher_edge_detect3.jpg

左から5KのZRemesher結果に対して半分を適用してさらに半分を適用した様子。

結果: 左5048 中央2564 右1292

主に気に入った結果がでた後に、半分などのオプションを有効にして再度ZRemesherをかける用途で使う。

Adapt

ZRemesherができる限り入力された形状に沿うように、トポロジーの密度を部分的に上げる必要がある場合に、それを許容するかどうかのオプション。

Adaptive Size (アダプティブサイズ)

Adaptを利用した際にどこまでポリゴンの歪みを許容するかというオプション。数値が低ければ低いほどできる限り真四角に近いようにし、数値が大きい場合には多少の伸びを許容し、ディテールを回収しようとする。

左がAdaptive Size 0 右が Adaptive Size 50

目の周りの密度や、唇などの密度が違うことがわかる。

adaptive.JPG

Curves Strength (カーブ強度)

Zremesher Guidesというカーブブラシのカーブにどの程度合わせるかというスライダーオプション。100に近いほどカーブに合わせることができる。

DetectEdgesと合わせて利用するとポリグループが生成される。
左 : 元のポリゴン+カーブ指定
中央 : Curve Strength 0
右 : Curve Strength 100

edgedetection_curve.JPG

Use Polypaint (Pペイント使用) / Color Density (カラー密度)

有効にすることで密度を指定するペイント機能を利用できる。

同じ 5Kのリトポロジーにもかかわらず、目と耳の周りの密度が高くなっていることがわかる。paint_density.JPG

Zremesherのもう一つのアルゴリズム

Zremesherにはメッシュを生成する際に、ALTキーを押しながらZremesherをクリックし実行することで、シンメトリに適したメッシュの生成を行うアルゴリズムを採用している。そのため、好みにあわせてALTキーをクリックして実行するか、ALTキーなしで実行するかを選ぶことができる。

左 : 元のポリゴン
中央 : ALTキーなし
右 : ALTキーあり

alt_algo.JPG

Zremesherには多くのパラメーターがあり、好みや用途に合わせて様々なリトポロジーをすることが可能となっている。ただ、これらの”スカルプト”用には最適なメッシュということであって、”ローポリにとっての完璧なメッシュ”や”アニメーション用途で使いたいメッシュ”を追い求めている方は手動でリトポロジーをする必要がある。それらを置き換えるために設計されている機能ではない。

上手く活用するとこういうこともできるよ。

comparison4.png