2021-02-17

【ZBrush】やたら詳しいNanoMesh #2「Alignment」

NanoMeshに用意された拡張的な機能の部分「Alignment」を徹底調査

Article Image

NanoMesh > Alignment

前回の記事:【ZBrush】やたら詳しいNanoMesh

こちらにてNanoMeshのメインの機能をほとんどカバーしたが、紹介しきれない範囲を続いて紹介する。

今回はAlignment

image-20210217005956479

難しい内容あり

Alignmentにはシンプルな機能であるが正しく理解しコントロールするためにはかなり深い理解が必要。

誰が読んでも分かるように直感的に分かりやすい記事を心がけたので読んでもらえたらと思う。

おそらく直感的に操作して適用する人がほとんどだと思うので、この記事のようにやたら詳しい必要ないかもしれないがあえてそこに切り込んでいく。

今回使うナノメッシュモデル

はじめに今回使うナノメッシュのモデルを確認。

Y軸(上側)とX軸(右側)に矢印のような形状にして方向が分かりやすいよう配慮した。

image-20210210050226247

※よく見ると微妙に曲がっているのは気にしないでほしい

ZModeler > Spin Edges

日本語:エッジ回転

こちらはNanoMeshタブの機能ではなくZModelerだがこの先のAlignmentの理解に必要なので先に解説する。

image-20210210050909595

「土台の方向」を変化させるアクション。

※便宜上「土台の方向」と呼ぶが公式も特に呼び方はないように思う。

まずは普通にInsert NanoMesh(All Poligons)をすると

image-20210210051515060

このように全て同じ方向の矢印が適用される。

これを1コだけ別の方向にしたい場合はIndex分け(ポリグループを分けて別で適用)する必要があるように思うが方向を変えたいだけならこのSpin Edgesで良い。

image-20210210051846575

まずこの機能を覚えておきたい。

余談:Spin EdgesZModelerのポリゴンアクションと切り分けられているが、公式の解説を聞く感じではナノメッシュ(とマイクロメッシュ)専用かと思われる。

Alignmentとは?

日本語: (2021.5.1)では「配列」になっているが「整列」の翻訳ミス?

デフォルトはNo Alignment(整列なし)

ナノメッシュが適用される内部的な方向をまとめて変化させることが出来る。

image-20210210052746816

こちらで土台となっているメッシュの方向が設定された後にOffsetなどの変化が計算される。

Alignment理解のために知る必要があること

まず、このAlignmentなのだが直感的に触ってみてもどういうアルゴリズムで方向が変わっているのか全くわからないはずだ。

モデルとの組み合わせによっては何も効果がないことがしばしばあり初心者は間違いなく「なぜ?」となってしまう。

逆にモデルによっては想像以上に変化することもあり理解が非常に難しい。

間違いなくこの機能は最上級者向けだ。

そこでどのような原理でこのAlignmentが作用しているのかを検証して理解する必要がある。

ZRotation=0を使って理解する

Insert NanoMeshブラシはクリックしてからマウスを移動した方向によってナノメッシュの大きさだけでなく方向(ZRotation)が変わる仕様になっている。

※つまりどれだけ慎重にナノメッシュを設定してもおそらくZRotationが0以外の値で適用されているはず。

そのため「いまどの方向にナノメッシュを配置したのかわかりにくく」なっている。

正しい理解のために適当にナノメッシュを配置した後**ZRotationを0に設定する**。

image-20210213024620959

上はAll Polygonsでまとめて全ての面にナノメッシュした例。

まず覚えること①矢印のデフォルト方向は面によって変わる。

面内部の座標を確認

冒頭で解説したとおり矢印の内部での軸は**「短い矢印がX軸」「長いほうがY軸」**である。

image-20210213025540216

ここでまずはAlign To Short Edgeの登場である。

Align To Short Edge

日本語:ショートエッジに整列

image-20210212030756309

解説には「最も短いエッジに整列」するとある。

そこで上の例に意図的に「短いエッジ」をもたせたポリゴンを用意してある。

※次の例はNo Alignmentの状態

image-20210213025912973

ここにAlign To Short Edgeをかけてみると

image-20210213030210115

ここで覚えること②「ナノメッシュX軸を元に整列されている」

※これは私個人の検証による結果なので間違っている可能性もあり

短いエッジの角度を変えるとどうなる?

このままZModelerSlideアクションで短いエッジの角度を変えてみよう。

image-20210213030622341

これでひとつスッキリ理解できたのではないだろうか。

ここまでのまとめ

Long, Short EdgeへのAlignは

「ナノメッシュのX軸と整列対象となっているエッジが一致するように整列される」

これを覚えておきたい。

またZRotationはこの整列処理が終わったあとに加算して計算されるので混乱しやすい。

まずはZRotationを0にしてAlignすることをおすすめする。

Align To Long Edge

日本語:ロングエッジに整列

image-20210213030902787

ショートエッジを理解したらこちらは簡単である。

先程と同様の例に適用すると

image-20210213031134867

長いエッジ側にX軸が一致するように整列された。

Short, Long EdgeとSpin Edges

長方形にAlingn To Long Edgeを適用すると長い辺はかならず2つあるのでどちらに整列されるかは明確にはわからない。

そこでAlingn To Long Edgeが入っている状態でSpin Edgesを使うことによりこの2辺のうちどちらに整列するかを明示的にコントロールできる。

image-20210215031259236

※画像は正確な長方形ではないが意味は伝わると思う。またShort Edgeも同様である。

Align To Normal

日本語:法線に整列

image-20210211031500550

面の法線とナノメッシュのZ軸を合わせたまま、ナノメッシュのX軸、Y軸をそれぞれワールド側のX軸、Y軸に可能な限り近づける。

※あくまで私の検証による「こういうアルゴリズムなのでは」という予測なので注意していただきたい。

全く意味がわからないと思うのでこちらもZRotation=0にて次の例

image-20210214041652254

まずNo Alignment。矢印はバラバラとなる。

このモデルにDeformation>Rotationをかけてワールド座標に対してねじれた回転を持つモデルにしてみる。

image-20210214041917857

これは簡単な例すぎて逆に「で?」と思うかもしれないが、それでよい。

モデルそのものを回転させればそれにくっついているナノメッシュも同様にくっついてくる。

では、モデルをもとに戻してAlign To Normalにする。

image-20210214042154953

矢印が上向きに整列されているのが分かる。

ただ、この時点ではどのようなルールで整列されているのかはわからない。

そこで、さきほど同様DeformationRotateを行うと

image-20210214042351363

ここでようやく意味がわかると思う。

モデルを捻っても矢印は上を向こうとしている。

ただし先程述べたが、面の法線にZ軸は固定されているので矢印が面から剥がれることはなく、くっついた状態でX, Y軸が変化している

このように土台のメッシュの角度が変わってもできるだけ同じ方向を向いてほしいケースには有用かもしれない。

Align To Near Edge

日本語:ニアエッジに整列

image-20210215030204651

今回唯一こちらの整列だけ挙動がわからなかった。

公式Docによると「Align Long Edgeのモディファイア」とあるがそもそも別オプションであるためモディファイアかは怪しい。

様々な形状で検証した結果長辺、短辺あたりはあまり関係ないように見えた。

ひとまずわかっていること

  • Deformation > Rotateで回転中に整列が変化するので「ワールド座標となにかしら関係がある」
  • Align To Near Edgeを入れた状態でSpin Edgesをすると、必ず2パターンの変化になるので「一つの土台ポリゴンに対して2つの整列方向が存在する(正方形、長方形でなくても必ず2辺)」
  • 但し三角ポリゴンだと1方向の場合もあり

※上でも述べたが「2つの整列方向」とは例えば長方形にAlign To Long Edgeで整列をすると、長辺はかならず2つあるのでAlignがオンでもSpin Edgesを使うことによって2方向のどちらかを選択することができる。

また分かったことがあれば追記する。

Align By Point Order

日本語:頂点順に整列

image-20210216023119190

メッシュの各頂点には内部的に(ユーザーには見えない状態で)番号が入っている。

この番号に沿って整列を行うためユーザーは意図的にこれをコントロールすることは出来ない。

公式DocにもZBrushでは頂点の番号は見る事ができないと明示してあった。

どのような目的でこの整列を使うかは不明。

ただ、唯一変化が分かるものがあることに気づいたので一応紹介しておく。

image-20210216023530749

Modify TopologyOptimize Points(頂点番号最適化)というボタンが有る。

このボタンは内部的に割り振られている頂点の番号を最適化し、ZBrush外のソフトに読み込ませるようのファイルとして出力するときに効果があるらしい(番号が変わってもモデルの外観は一切替わらない)

Align By Point Orderをオンにした状態でOptimize Pointsすると頂点番号が変化したポリゴンだけナノメッシュの方向が変化する。

逆を言えば**Optimize Pointsによって番号が変化したポリゴンを視認したい場合、このAlign By Point Orderを使えば良いかもしれない。**

かなり飛び道具的使い方である。

Align To Random Edge

日本語:ランダムエッジに整列

image-20210216024153793

ナノメッシュの方向がランダムになる。

image-20210216024321389

最も分かりやすい整列。これ以上解説するところはない。

また、このAlignmentのみRandom Seedを使って調整することが可能

image-20210217005323405

こちらのスライダが動く度にランダムな方向へ再整列される。

以上

正直申し上げると、ここまで深い理解は必要ない。無駄な記事であると私も感じる。

しかし、それでも探求することに意味がある。

これが「謎の技術研究部」なのである。

もしここまで全て読んだ人がいるとしたら、それはもう完全に謎の技術研究部の部員である。



この記事をシェア


謎の技術研究部 (謎技研)