[JBDP]
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

[ リロード ]   [ 新規 | 編集 | 差分 | 添付 ]   [ トップ | 一覧 | 単語検索 | 最終更新 | バックアップ | ヘルプ ]

Blender Documentation 日本語版 : (原文の最終更新日 August 07 2005 by S68)
2003-08-30 (土) 13:25:00 by OQ
2005-05-22 (日) 18:30:25 by morita

ObjectHooks / 原文 / SubSurf用の重み付きCrease


高度なメッシュモデリング

Blenderはいくつかの高度なモデリング機能を提供します。その多くは、複雑なメッシュを簡単に扱うことや、複雑で滑らかな面を少ない頂点数で実現することを目的にしています。

Catmull-Clark細分割曲面

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.にすると形状は元のままでメッシュの密度が上がります。これはディスプレイスメントマップを使うときに利用します。

SubSurf04_new.png

図1. SubSurfボタン

Blender ver2.3からSubSurf関連のボタンが増えました。Optimalボタンです。このボタンはSubSurfされたメッシュの描画方法を変え、モデリングしやすくします。図2は、Suzanneメッシュに様々な組み合わせを試した結果を示しています。

SubSurf01_new.png

図2. SubSurfされたSuzanne

図3は、四角形や三角形の面に、SubSurfを0,1,2,3レベル適用したものを並べて表示しています。一般的なメッシュの場合、このような細分割は、四角形や三角形の面それぞれに適用されます。

この図で明らかなように、nをSubSurfのレベル(解像度)としたとき、ひとつの四角形面からSubSurfによって生成される面の数は4のn乗になります。また、ひとつの三角形面から生成される新しい面の数は3×(4のn-1乗)です(図3)。このように面数(と頂点数)が劇的に増加するのにともない、編集とレンダリングの速度は遅くなります。編集プロセスでは、レンダリング時に用いるよりも低いSubSurfのレベルを用いて作業をしましょう。

SubSurf04b.png

図3. シンプルな四角形面と三角形面のSubSurf

Blenderの細分割システムは、Catmull-Clarkアルゴリズムに基づいています。これは滑らかなSubSurfメッシュを生成します。しかし、SubSurfされた面、つまり、元のメッシュの1つの面から生成された複数の小さな面は、元の面の法線の向きを共有します。

これは、図4にあるように、その形状自体には影響を及ぼしません。しかし、レンダリングやSolidビューで問題になります。法線の向きが急激に変わる箇所で、おかしな黒い線を生成してしまいます(図5)。

SubSurf05a.png

図4. SubSurfされたメッシュの側面図。上はランダムな法線。下は整列した法線。

エディットモードで全ての頂点を選択して[Ctrl N]コマンドを使うと、Blenderは法線を再計算します。

SubSurf05b.png

図5. SubSurfされたメッシュのSolidビュー。上は一貫性のない法線。下は一貫性のある法線。

この図では、面の法線がシアンで描かれています。法線を描画するには、エディットモード中にEditing Context([F9])のMesh Tools 1パネルのDraw Normalsボタンを押してください。

メッシュが「Manifold:多様体」でなく「Non-Manifold:非多様体」である場合には、Blenderは法線を正しく再計算することができません。「非多様体」メッシュとは、「外側」をはっきりと計算することができないメッシュを指します。基本的に、Blenderの視点から見て、3つ以上の面に属している辺がある場合、非多様体とみなされます。

図6はとてもシンプルな「非多様体」メッシュの例です。普通、「非多様体」メッシュは、内側の面を作った場合やそれと同種のものを作った場合に発生します。

SubSurf06.png

図6. 「非多様体」メッシュ

「非多様体」メッシュは、通常のメッシュでは特に問題になりません。しかし、SubSurfされたメッシュでは、おかしな異物が生じることがあります。さらに、Decimatorが使えません。ですから、これをなるべく避けたほうが良いでしょう。

メッシュが「非多様体」であるかどうかを知るには、2つのヒントがあります。

SubSurfツールを使えば大変良い「有機的」なモデルをつくれます。しかし憶えておいて欲しいのは、メッシュを三角形でなく四角形で構成すると最良の結果が得られる、ということです。

図7および図8は、BlenderのSubSurfでどのようなことができるかを示す例です。

SubSurf07.png

図7. ガーゴイルの元となるメッシュ(左)と、適切なレベルといえるレベル2のSubSurfされたメッシュ(右)

SubSurf08.png

図8. ガーゴイルのSolidビュー(左)と最終的なレンダリング結果(右)


※この注釈追加時の2.41では、SubSurf機能は「ボタンウィンドウ→Panels→Editing(F9)→modifier」の中の1要素に修正されています。

ObjectHooks / ↑目次 / SubSurf用の重み付きCrease


添付ファイル: fileSubSurf04_new.png 437件 [詳細]   fileSubSurf01_new.png 398件 [詳細]   fileSubSurf08.png 462件 [詳細]   fileSubSurf07.png 446件 [詳細]   fileSubSurf06.png 432件 [詳細]   fileSubSurf05b.png 438件 [詳細]   fileSubSurf05a.png 440件 [詳細]   fileSubSurf04b.png 424件 [詳細]   fileSubSurf04.png 445件 [詳細]   fileSubSurf03.png 426件 [詳細]   fileSubSurf01.png 440件 [詳細]
リロード   新規 編集 差分   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: Mon, 20 Feb 2006 14:55:33 JST (1451d)
Link: 目次(452d) SubSurf用の重み付きCrease(1371d) Decimator(1371d) ObjectHooks(1712d) SubSurf(2353d) EditingContext(140d) ページ作成テスト(1005d) ディスプレイスメントマップ(1371d) CCGSubSurf(1712d)

Modified by Hige

"PukiWiki" 1.3.4 Copyright © 2001,2002,2003 PukiWiki Developers Team. License is GNU/GPL.
Based on "PukiWiki" 1.3 by sng
Powered by PHP 4.3.11

HTML convert time to 0.408 sec.