このカテゴリでは、サーフェイスの分割率とレンダリング・コストをテーマにしています。3DCGにおけるスムージングとは、一般的にポリゴン・オブジェクトの表面を滑らかに見せかけるための機能の事をいいます。
スムージングに関する設定は、レンダリング・コストを下げるための有効な対策の一つであり、どの 3Dソフトにも共通する基本的な機能ですので、ここで紹介します。
ポリゴン・メッシュにおけるスムージングとは、3Dサーフェイスの曲面を滑らかに見せるためのアルゴリズムで 3DCG ソフトウェア全てにおいて共通する概念です。
3Dサーフェイスに対してどのようにスムージング値を設定するかはソフトウェアによってまちまちですが、スムージングを有効に活用する事でポリゴン数を増やさずにサーフェイスを滑らかに見せかける事が可能になります。
身近な例では 3Dゲームなど少ないポリゴンを滑らかに見せ掛けるのと基本的に同じで、リアルタイム・シェーディングによる表現が可能です。このスムージングを上手く活用する事でレンダリング・コストやメモリ資源を大幅に削減する事が出来ます。
左図は Lightwave 3D の例です。(クリックで拡大) 3つのオブジェクトは全く同じポリゴン・オブジェクトであり、スムージング値だけが異なります。
Lightwave の場合、マテリアル属性で指定します。手前がデフォルトの 89.54 度、中央がなし、奥が 20度 にスムージング角度を設定しています。
手前はスムージング対象エッジの角度(89.54 度)が大きいため、完全に破綻しています。(3Dゲームで見るような) 中央は値なし。 一番奥は、曲面のみにかかるように 20 度に設定しています。
Lightwave 3D はマテリアル属性での指定となるため、スムージングの処理だけでは対処できない場合、エッジを分割するか、スムージング値だけ異なるマテリアルを適用するなどして対応する必要があり、基本設計の古さを感じさせる部分です。
形状データの互換性、パフォーマンスの観点からマテリアル毎にスムージング設定が行える方が都合が良いのかもしれません。(古くてもきっと良い事が...)
レンダリング時に思うような結果が得られない時は、スムージング絡みで問題が発生する事も多いので知っておく良いとおもいます。
左の図を見て下さい。(クリックで拡大) 左側は上記、スムージング20度で処理したポリゴンオブジェクトです。右側は同じ形状をサブパッチで作成しています。Lightwave はモデリングとレンダリングを行うアプリケーションが独立しており、ビューポート上の表示も異なります。
小窓に表示されているのは Modeler 側のビューポートです。左右のオブジェクトの見かけは殆ど変わりませんが、レンダリングを行う Layout の表示では密度の高いポリゴンメッシュで表示されています。
これにより、視覚的に多くのメッシュ数を消費している事に気が付きます。下のイメージはそのレンダリング結果です。得られる品質に差はなく、無駄にレンダリング・コスト、メモリを浪費している事がわかります。
この違いは接近しなければ分かりません。目的に応じて必要最小限のメッシュ数が得られるようにモデリングの段階で意識しておく必要があります。
レンダリング時の分割率の問題は初心者の方が良く見落とす項目です。3Dソフトで作品を作成してる学生さんがそうなのですから、そうなのでしょう。
このサンプルを使用したレンダリング比較は、こちらで紹介しています。
このスムージングに関する処理は、3Dソフトによって設定個所は異なり、頂点ごとに適用可能な柔軟な 3Dソフトもあります。以下は Blender のスムージングに関する機能ですが、自動的にエッジを判別する機能(AutoSmooth)を持っています。
参照 => JBDP - スムージング (Blender のオンラインド和訳キュメント)
このように 3Dソフトによって実装は異なりますが、冒頭で述べたように 3Dサーフェイスを扱う上でスムージングは共通する概念です。レンダリング・コストを削減する上でも重要なポイントとなります。