How to solve Blender's smoothing problemsの日本語訳feeblemindのOlivier Sarajaさんが著したHow to solve Blender's smoothing problemsの日本語訳です。

 原文のライセンスに従い、この訳文も 表示 - 非営利 - 継承 3.0となります。



Blenderスムージング問題の解決法

 スムージング問題に関する書き込みが、Blenderフォーラムや掲示板で無数にあります。
 たいていは、Set Smoothを使ったときにモデルの表面に黒いしみを見つけて書き込みます。

 この記事はチュートリアルではありません。
 重要な議論、意見、ノウハウを集約したものです。
 初心者を意図してはいますが、熟練ユーザーは初心者を助ける試みが有益なことだと感じることができたでしょう。
 結局のところ、コミュニティとはお互いに助けあうものではありませんか?

 この記事ではBlender 2.44を対象に、個別の問題に関係なく、スムージングに関するさまざまな方法を扱います。
 短く、信頼できる情報にするつもりです。
 何故そうなったのか?
 たとえば、あなたが旋盤や削りを用いた「面がスムーズで、境界線も持つ」というオブジェクト作成しており、とにかくどうにかしたい! というのはわかります。
 しかし、他にもたくさんの事例があるのです。

1.法線問題(The Normal problem)

 これはすべての初心者がモデリングのときに遭遇し、またとてもよく目にする問題です。
 ある時点で、Blenderheadはモデルの表面に奇妙な暗い影を目にしてしまうでしょう。
 作業中、何も間違ったことなどしていないのに、モデリング作業中に暗い影に直面してしまうと非常にいらいらしてしまいます。


例:Monkeyの一部の面の放線を逆にすることにより発生させた黒いシミ

 [TAB]でEditモードに切り替え、ButtonsウィンドウEditingボタン([F9])にあるMesh Tools 1パネルで、Draw NormalsDraw VNormalsをオンにします。
NSizeの値を変化させて、表示する線のサイズを調整してください。
 Draw Normalsは面の放線を、Draw VNormalsは頂点の法線を表示させます。
 一般に、モデルの法線はすべて外側(だいたいの場合)、あるいはすべて内側(そのほかのラジオシティに関わる場合など)に向いているべきです。
 あなたが想定していない黒い部分に直面したとき、おそらくそれは、法線が逆になってることが原因です(よく手作業でポリゴンを張った後に発生します)。


Draw NormalsDraws VNormalsをオンにした状態

 この問題を解決するためにはEditモード

[wiki]
-モデルのすべての面を選択し、''[CTRL]+[N]でRecalculate normals outside(法線をすべて外側に向ける)''、あるいは''[SHIFT]+[CTRL]+[N]でRecalculate normals inside(法線をすべて内側に向ける)''を実行する。一度でうまくいかないときは、何度か実行するとうまくいく。この方法でうまくいかないときは下の方法を使う。
-法線が正常でない面を選択し、''Mesh Toolsパネル''、あるいは''[W]のSpecialsからFlip Normal''を実行する。これをすべての面の法線が正常になるまで繰り返す。面の数が多いと気が狂ってしまうかもしれません。
[/wiki]
 今あげた解決法で、90%の事例を解決できます。

2.二重問題(The Double problem)

 これはよく起こる問題です、大抵、実験的にモデリングをすると発生します。

 たとえば、

[wiki]
-''押し出しツール([E])''を使用した後、頂点を移動させなかった時(同じ場所に配置される)
-''モデルのパーツを分離([P])''させ、後に再び''連結([CTRL]+[J])''させた時。
-''回転(Spin)ツール''を使用したとき(回転したときによく継ぎ目が現れる)
-手動で二つの面をミラーリングしたとき
-DXFなどの変わった形式をインポートしたとき
-などなど
[/wiki]

 これらの症状に共通するのは、同じ空間にコピーした頂点が存在し、それが見た目ではわからないことです。
 二重の点は面にSet Smoothを適用したときに顕著に現れます、原因は黒い継ぎ目としてモデルに現れ、そのエリアにシェーディング問題が発生し、ソフトな面の境界線になります。


この例は、Suzieを手動でミラーリングして、結合したものです。二重頂点は対称軸に沿って分割する直線として現れています。

 これを修正するためには、Editモードですべての点を選択し、

[wiki]
-''Mesh Toolsパネル''から''Rem Doublesボタン''を使用する。
-''[W]''で''Specialsメニュー''を呼び出し、''Remove Doubles''を選択する。
[/wiki]

 Mesh ToolsパネルにはRem Doublesボタンの近くにLimitというパラメータがあります。
 これは、二重だと判定する二つの頂点間の距離を定義しています。
 インポートスクリプトで読み込んだメッシュをきれいにするのによく使います。
 もちろん、Limitの値を上げすぎるとメッシュを破壊してしまうかもしれません、メッシュの密度を下げたいだけなら、Decimateモディフィアーを使うと安全です。


Rem DoublesボタンLimitの値


3.Blenderのスムージングツールを使いこなそう

 法線や二重の問題はスムージングではよくある障害でした。

 今なら問題に対する対処を知っているので、スムージングのもっと深い話題にもついて行けます。
 それぞれの3Dソフトはスムージングのためのツールが用意されています。
 Blenderはスムージングについてはとても熱心で、モデルの完全なスムージングを実現するために多くの解決策を用意しています。

3.1「スムージング」とは何か?

 Blenderや他のポリゴンモデラーでポリゴンモデリングをする際には、見た目が数学的ではなく、面によって定義されていることが、落とし穴となります(NURBSやメタ要素を使った場合も)。

 一つのランプでライティングしたシーンなら、それを非常に簡単に確認することができます。
 モデルの各面は端から端までほとんど同じ光を受けています、そして隣り合った面はかなり違うイルミネーションになっています。

 結果、一つのモデルですべてのイルミネーションが連続していないことがわかります。


モデルとそのメッシュ

この問題を扱う、二つの基本的な方法があります。

3.1.1 表面を細かくする

 一つ目はSubsurfによる分割を複数回行い、隣接する二つのイルミネーションをごく小さな面とすることで、違いをかすかに気づく程度に小さくする方法です。

 分割数を高くするとスムーズな結果が得られます、しかしシーンの操作やレンダリングで負荷が大きくなってしまいます。


Subsurfによるメッシュの分割を行っていないものと、分割したもの

 Smoothモディフィアーでも隣り合う面の間をスムーズにできます。
 よりよくスムーズにできることがありますが、残念なことに副作用でモデルが縮んでしまうことに注意してください。

3.1.2 イルミネーションのごまかし(Cheating)

 二つ目は、隣接した面の陰影に基づき、面の陰影を補間することです。

 この方法は面の情報をそのままに、とてもスムーズに見せるイリュージョンを得ることができます。
 モデルの端で、形状が不足している(再分割されていない)ことがわかります。

 この二つのテクニックの名コンビは、恐らくもっともチープにスムージングイリュージョンを得られる方法です。

3.2 Set SmoothとSet Solid

 BlenderのObjectモードでは、Editingボタン([F9])Link and MaterialパネルにあるSet Smooth,Set Solidボタンで二つの状態を自由に切り替えることができます。


SolidなモデルとSmoothなモデルの対比、形状は同一(非常にローポリ)

 また、一つのオブジェクト内のメッシュそれぞれにSmooth,Solidを設定することができます。
 EditモードSet Smooth(Set Solid)を実行すると、選択した面にその効果が現れます。

 ここで重要なのは、一つの面はSmoothかSolidどちらかであるかということです、Editモードではそれぞれ全く独立して面に設定することができます。
 しかし、Objectモードで設定するとEditモードで設定した情報は完全に上書きされてしまいます。
 このことをよく覚えておいてください。


Suzanneの半分をそれぞれSmooth、Solidに設定したもの(左右対称のほぼ同じメッシュ)

3.3 Auto Smoothを使う

 様々なケースで、モデルの境界線を保持する必要があるでしょう。

 そして、EditモードでSmoothとSolidを自由に選択できることを知っているかと思います。

 Auto Smoothはあなたを魔法のように助ける機能です。

 面をSmoothかSolidか、二つの隣接した面のなす角の大きさによってセットします。

 もし、なす角がMeshパネル内のAngleボタンの基準値より大きければSoildに、小さければSmoothにします。

 シリンダ(円柱)を考えてみましょう。
 柱の部分が二つのふたと同じように完全にスムーズになることを期待するでしょう。

 しかし、柱とふたのぶつかるところで境界線を期待しても、全体にSet Smoothを適用したモデルではうまくいきません(切り取るように循環する縁が見えます)。

 そこで、Auto Smoothを使うと、柱部分とふたの間のなす角が90度であることから境界線を出力するでしょう。
 Auto Smoothでは、モデルのスムーズな部分とソリッドな部分をうまく分ける基準角度を探す必要があります。



 右から、Set Solidを適用したシリンダ、Set Smoothを適用したシリンダ、Auto Smoothを適用したシリンダ。
 Set Solidを適用したシリンダはふたは良いが、柱部分が良くない。
 Set Smoothを適用したシリンダは柱部分がスムーズだが、ふたが変に暗い。
 Auto Smoothを適用したシリンダは完璧です。


3.4 境界線をコントロールするためのトリック集

 Auto Smoothによる解決法はほとんどの場合で役に立ちますが、境界線の例外的なコントロールは提供しません。

 時々、角度が小さくても境界がくっきりして欲しいときがあるでしょう。

 そんなときは、押し出し([E])で境界をくっきりしたままにできます、ただし、押し出し距離を非常に短くします。

 あるいは、境界をくっきりさせたい範囲をEdge Loop([Ctrl]+[R])で狭くカットします。


シンプルな回転体のサンプル

 シリンダに球体を接続した、シンプルな回転体について考えましょう。

 すべての表面がスムーズに見えますが、シリンダーのキャップとシリンダーと球体を接続する部分は除外することにします。

 Edge Loop([Ctrl]+[R])を使い、境界線にしたい部分を狭くカットし、Set Smoothを施したモデルに境界線イリュージョンを施します。


追加のループで境界がくっきりと見えます!

しかし、この解決法はモデルに対して余計なポリゴンを追加してしまう問題点があり、ポリゴン数が重要な時に困ったことになります。

3.5 Edge Splitモディフィアー

 Edge SplitモディフィアーはBlender 2.43から登場した、モデラーにとってとても有用なツールです、
 なぜなら境界線について非常に良いコントロールを提供するからです。

 これは、UV unwrapping時のSeamと同じように使うことができます、Editモードで境界線にしたい辺を選択し、Edge Specialsメニュー([Ctrl]+[E])からMark Sharpを使用します(Clear Sharpしたいときも同様です)。

 そして、ObjectモードEditingボタン([F9])内ModifiersタブAdd ModifierからEdgeSplitを選択します。



基本的にすべての面がSmoothだとして計算されますが、Mark Sharpした辺の近くの領域はSmoothにはなりません。

これは、From Marked As Sharpオプションの効果です。

さらに、From Edge Angleオプションもあります、これはAuto Smoothと同じくユーザーが指定した角度によってスムージング効果が決定されます。ある境界で隣接する面のなす角度が指定した角度を越えると、境界線だと判断します、面はこれに従って陰影がつけられるでしょう。

4. 最後に

このちょっとした考察が、奇妙な挙動を見つけてしまった初心者や、熟練したBlenderheads、その両方に役立つことを願っています。
うまくいけば、あなたは自作モデルの外観の完全なコントロールを得るでしょう。