2012年5月20日日曜日

【CG】 モデリング基礎編 その3 ベベルとエッジループ

さて、今回も引き続きモデリングの基礎編。今回はベベルとエッジループを使った面取りの違いがわからない!という質問を頂いたので、前回のエントリーを少し補足する感じで、ベベル機能を使った面取りとエッジルールを使った面取りの違いについて紹介できればと思います。

まずは簡単な四角形を使ってベベル機能を使った面取りとエッジループを使った面取りを比較してみようと思う。


<ベベルを使った面取りの場合>
見ていただければ解ると思いますが、赤く表示された部分に三角形のポリゴンが発生したのを確認することが出来ると思います。これはMAYAベベル特有の機能かもしれませんが、複数のエッジが集まる頂点の処理に問題を持っています。またUVを展開した後にUVのボーダーエッジになっているエッジにベベルを使うとUVが破綻して壊れてしまう!というバグにも近い仕様がMAYAベベルにはあります。前回のエントリーでも述べた通り上記理由から、僕はベベル機能をほとんど使用することがありません。これはもちろん好みの問題もあるので、一概に正解というのはありません。



<エッジループを使った面取りの場合>


エッジループを使った面取りと言うのは前回のエントリーでも説明しましたが、面を取りたいエッジを中心に、左右に1本ずつエッジを足して、中心のエッジから左右のエッジの距離を調整して、面取りを行う方法です。
 この方法の利点は、ブロックモデル(プロキシーモデル)などに、そのままエッジを足す(多少、手を加える必要はあり)ことで、ハイモデル、ヒーローモデルへの流用が可能という点が大きな利点です。
また、ブロックモデル(プロキシーモデル)の段階でUV展開しておいても、UVのほとんどを変えることなく流用できることも利点の一つです。 ただ、この方法でモデリングした場合は、サブディヴィジョンを使用することが前提となりますので、MentalRayなどのレイトレーサーで扱う場合は、多少レンダリングに負荷がかかるモデリング方法だと言えると思います。


続いてはベベル機能を使って出来てしまった多角形や三角形がレンダリングに与える影響をご紹介したいと思います。

下記の図はベベル機能を使って作ったジオメトリです。上面に多角形と三角形があるのが確認できると思います。



こちらの下図は実際にレンダリング時に処理させる(レンダラーにより分割方法は異なる)多角形のワイヤーフレームになります。RenderManを代表とするReyes系のレンダラーはレンダリング時に、すべてのジオメトリをマイクロポリゴンと言う四角ポリゴンに変換しますが、MentalRayを代表とするRaytrace系のレンダラーは、レンダリング時にすべてのジオメトリを三角ポリゴンに変換することが多いです。なので、レンダラーがRaytrace系であれば大きな問題になりませんが、レンダラーがReyes系の場合は、多角形がある場合は、レンダリングにエラーが出てしまい、レンダリング出来ないケースも少なくありません。



※マイクロポリゴンをビューポート上で可視化させることは出来ませんので、今回は割愛させていただきます。

下図は同様にエッジループを使って面取りを行ったケースです。どのポリゴンもほぼ正四角形に近い状態で保たれています。
(サブディヴィジョン適用前なので、形状はブロックモデルの時と変化ありませんが、サブディヴィジョンを適用することで角が丸く面を取ることが出来ます。)


下図では同様にRaytracer(レンダラーにより分割方法は異なる)でレンダリングするときの分割線になります。見ていただければ解ると思いますが、すべてのポリゴンを正四角系に近い状態で保っていたため、分割された三角形も、ほぼ左右対称で同じ形状に分割されているのがわかると思います。これはリグ、アニメーション、シュミレーション、レンダリングを行う上で非常に重要なことです。モデラーはただシルエットをモデリングするだけではなく、正しいトポロジーをキープすることも非常に重要な役割の一つです。正しいモデリングを行うことで、リグ、アニメーション、シュミレーション、レンダリングでのトラブルの多くを防ぐことが出来ます。


続いてエッジループを使った面取りを具体的に図をまじえながら紹介したいと思います。図の左側はサブディヴィジョン適用前、右がサブディヴィジョン適用後になります。見ていただければ解ると思いますが、サブディヴィジョン適用前は、ブロックモデルの時と何も変わりません。ただ、エッジが足されているだけです。もちろんUVも同じです。


こちらは上記モデルよりもエッジループの幅を広くした物です。ブロックモデルのときの形状は、UV共に変わりませんが、サブディヴィジョン適用後の面取り具合に違いがあるのが確認できると思います。これがエッジループを使った面取りという訳です。左右のエッジの幅を広くしたり、狭くしたりすることで、面取りの角度を調整する面取りの方法です。
※この方法を用いる場合、すでにUV展開の作業を終えた場合は、エッジを動かすのではなく、エッジを加えた後に、古いエッジを削除するようにしてください。バーッテックスやエッジを動かすことで、UVが歪んだり、破綻してしまいます。


続いてはおまけで、なぜ多角形がいけないのか!?と言うことご紹介したいと思います。まず下図のような多角形平面を作成してみました。見た目は非常に綺麗な平面ですが、レンダリング時の分割線を見てみると。。。。。。


こちらがレンダリング時の分割線です。見ていただければ解ると思いますが、どの三角形も形状が異なり、細く長く伸びた三角形になっていることが確認できると思います。

Raytracerの場合は、レンダリング時に三角ポリゴンに変換するので、多角形でも完全平面であれば、問題なくレンダリングすることは可能ですが、湾 曲した曲面や完全平面でない場所に、細く長く伸びた三角形があると、Raytracerでもレンダリングのエラーになる場合があります。最近はレンダラー も発達して、多少の不正なポリゴンなどでも、内部的に自動処理して、レンダリングすることも可能ですが、必ずしもレンダラー側で処理できるとは限りませ ん。特にReyes系のレンダラーの多くは多角形ポリゴンをサポートしていません。(特にサブディヴィジョンを扱う場合は特に問題になることが多いで す。)

なので、モデラーは格好いいシルエット、モデルを作ることも重要ですが、内部的に正しいトポロジーも同時に作成する必要があります。背景やハードサーフェースに比べて、特にキャラモデラーを目指す方は、特に正しいトポロジーと言うのを意識された方が良いでしょう。キャラの場合は、リグ、アニメーション、シュミレーション、レンダリングと多肢のセクションと関わることになります。
正しいトポロジーでなかったために、不要な問題、トライアンドエラーを抱えてしまい、他セクションに多大な迷惑をかけることにもなりかねません。


と言うことで、今回はベベルとエッジループを使った面取りの比較を行ってみました。今後、モデラーを志す学生さんや、モデリングについての知識を深めたい方の参考になれば幸いです。

あと補足ですが、ベベル機能、三角形ポリゴンが悪い、使用しちゃいけない!という訳ではありません。要は長所と短所を理解して、使い分ければどちらも非常に便利な 機能です。

すべてを四角で、極力正四角形に近い状態にトポロジーを保つと言うのは、非常に長い時間を要し、困難な作業です。ある程度の経験も必要になってきます。なので、要はレンダラーなどの長所、短所を理解した上で、迅速かつ適切な方法を選択すると言うことに限ると思います。

ちなみに僕はレンダラーがMentalRayやRaytrace系だった場合、けっこう三角形は使ったりします。ベベルは個人的にあまり好きじゃないので、レンダラーに関わり無くほとんど使用しませんがwこの辺は、何度も言いますが、好みの問題ですね(^^;
あと多角形は絶対に使いませんね。レンダリングだけでなく、アニメーションやリグ、シュミレーションにも悪影響がでますので。

次回は更に掘り下げて、トポロジーについてご紹介できればと思います。

0 件のコメント:

コメントを投稿