![]() |
Catmull-Clark細分割曲面 | |
|
http://f11.aaa.livedoor.jp/~hige/index.php?%5B%5BCatmull-Clark%BA%D9%CA%AC%B3%E4%B6%CA%CC%CC%5D%5D |
←ObjectHooks / 原文 / SubSurf用の重み付きCrease→
Blenderはいくつかの高度なモデリング機能を提供します。その多くは、複雑なメッシュを簡単に扱うことや、複雑で滑らかな面を少ない頂点数で実現することを目的にしています。
Catmull-Clark細分割曲面、略してSubSurfは、メッシュを「滑らかに」細分化する数学上のアルゴリズムです。 これを使えば、通常のメッシュであればどんなメッシュからでも、細分割した滑らな曲面を生成することができます(訳注:「通常」とは、「Manifold:多様体」なメッシュのことを言っていると思います。一方通常でないメッシュとは、「Non-Manifold:非多様体」なメッシュのことでしょう。詳細は後述)。モデリング時でもレンダリング時でも、元のメッシュに対する操作がリアルタイムに曲面に反映されます。大量のデータを保存したり調整したりすることなく、高解像度のメッシュモデリングが行えます。また、モデルに滑らかな「生き物」のような外観を与えることができます。
SubSurfされたメッシュとNURBSサーフェスには、実は多くの共通点があります。双方とも、低ポリゴン数のいわゆる「粗い」メッシュを利用して、「精密」でなめらかなサーフェスを作ります。しかし、この2つには注意すべき違いもあります。
SubSurfはメッシュのオプションであり、これはEditing Context([F9])のMeshパネル(図1)にあるSubSurfボタンで有効にできます。SubSurfボタンのすぐ下にはふたつの数値ボタンがあり、左側にある数値ボタンは3Dウインドウでの細分割の解像度(displayレベル)で、右側にあるのはレンダリング時の解像度(renderレベル)です。オブジェクトモードなら[Shift O]でSubSurfのオン・オフを切り替えられます。また、SubSurfのdisplayレベルを[Ctrl 1]から[Ctrl 4]で変更できます。
SubSurfの演算は、リアルタイム(モデリング中)でもレンダリング時でも行われ、どちらもCPUを消費します。通常は、モデリング時にはSubSurfのレベルを低く(ただし0にはしないこと)、レンダリング時には高くするように設定しておくとよいでしょう。
訳注:SubSurfボタンの横に、SubSurfタイプを選ぶメニューがあります。通常はCatmull-Clarkのままにしておいてください。Simple subdiv.にすると形状は元のままでメッシュの密度が上がります。これはディスプレイスメントマップを使うときに利用します。
図1. SubSurfボタン
Blender ver2.3からSubSurf関連のボタンが増えました。Optimalボタンです。このボタンはSubSurfされたメッシュの描画方法を変え、モデリングしやすくします。図2は、Suzanneメッシュに様々な組み合わせを試した結果を示しています。
図2. SubSurfされたSuzanne
図3は、四角形や三角形の面に、SubSurfを0,1,2,3レベル適用したものを並べて表示しています。一般的なメッシュの場合、このような細分割は、四角形や三角形の面それぞれに適用されます。
この図で明らかなように、nをSubSurfのレベル(解像度)としたとき、ひとつの四角形面からSubSurfによって生成される面の数は4のn乗になります。また、ひとつの三角形面から生成される新しい面の数は3×(4のn-1乗)です(図3)。このように面数(と頂点数)が劇的に増加するのにともない、編集とレンダリングの速度は遅くなります。編集プロセスでは、レンダリング時に用いるよりも低いSubSurfのレベルを用いて作業をしましょう。
図3. シンプルな四角形面と三角形面のSubSurf
Blenderの細分割システムは、Catmull-Clarkアルゴリズムに基づいています。これは滑らかなSubSurfメッシュを生成します。しかし、SubSurfされた面、つまり、元のメッシュの1つの面から生成された複数の小さな面は、元の面の法線の向きを共有します。
これは、図4にあるように、その形状自体には影響を及ぼしません。しかし、レンダリングやSolidビューで問題になります。法線の向きが急激に変わる箇所で、おかしな黒い線を生成してしまいます(図5)。
図4. SubSurfされたメッシュの側面図。上はランダムな法線。下は整列した法線。
エディットモードで全ての頂点を選択して[Ctrl N]コマンドを使うと、Blenderは法線を再計算します。
図5. SubSurfされたメッシュのSolidビュー。上は一貫性のない法線。下は一貫性のある法線。
この図では、面の法線がシアンで描かれています。法線を描画するには、エディットモード中にEditing Context([F9])のMesh Tools 1パネルのDraw Normalsボタンを押してください。
メッシュが「Manifold:多様体」でなく「Non-Manifold:非多様体」である場合には、Blenderは法線を正しく再計算することができません。「非多様体」メッシュとは、「外側」をはっきりと計算することができないメッシュを指します。基本的に、Blenderの視点から見て、3つ以上の面に属している辺がある場合、非多様体とみなされます。
図6はとてもシンプルな「非多様体」メッシュの例です。普通、「非多様体」メッシュは、内側の面を作った場合やそれと同種のものを作った場合に発生します。
図6. 「非多様体」メッシュ
「非多様体」メッシュは、通常のメッシュでは特に問題になりません。しかし、SubSurfされたメッシュでは、おかしな異物が生じることがあります。さらに、Decimatorが使えません。ですから、これをなるべく避けたほうが良いでしょう。
メッシュが「非多様体」であるかどうかを知るには、2つのヒントがあります。
SubSurfツールを使えば大変良い「有機的」なモデルをつくれます。しかし憶えておいて欲しいのは、メッシュを三角形でなく四角形で構成すると最良の結果が得られる、ということです。
図7および図8は、BlenderのSubSurfでどのようなことができるかを示す例です。
図7. ガーゴイルの元となるメッシュ(左)と、適切なレベルといえるレベル2のSubSurfされたメッシュ(右)
図8. ガーゴイルのSolidビュー(左)と最終的なレンダリング結果(右)
※この注釈追加時の2.41では、SubSurf機能は「ボタンウィンドウ→Panels→Editing(F9)→modifier」の中の1要素に修正されています。
←ObjectHooks / ↑目次 / SubSurf用の重み付きCrease→