Phong タグ

Phongタグを適用すると、ポリゴンの法線が補間され、オブジェクトをスムーズに見せることができます。下左図は、Phongタグを適用する前の球体オブジェクトです。下右図は適用した球体です。一見スムーズなオブジェクトに変換されたように感じられますが、輪郭部分を注意してみると、多角形のまま変化してしていないことがわかります。つまり、Phongタグはポリゴンの形状を変えず、ただポリゴンのつなぎ目だけをスムーズにするのです。したがって、輪郭までスムーズにすることはできません。

これをスムーズにするには、ジェネレータなどを使ってポリゴン自体をさらに細かく分割する必要があります。またこのタグの中にある「角度を制限」オプションを使うと、スムージングするエッジを制限できます。

Cinema 4Dは、各ポリゴンの法線の向きが正しくそろっていると仮定してスムージングを計算します。したがって、もし法線の向きがばらばらだと、不自然な影が生じます。Cinema 4Dに含まれるプリミティブオブジェクトは、法線の向きが全てそろっているのでこのような問題は生じません。

Phongタグによるスムージングは、メモリを節約し、レンダリング時間を短縮するための優れた手法です。もしスムージング機能がなかったら、オブジェクトをスムーズに表現するために、はるかに多くのポリゴンが必要になります。ただし、スムージングはつながったポリゴンの間でだけ計算されるという点に注意して下さい。

Phongタグが働く仕組み

シェーディングには、いわゆる頂点法線が必要です。各ポリゴンは、それぞれのコーナーポイントに自身の頂点法線を持っています。Phong あるいは法線タグを追加しないと、最初はこの頂点法線の方向はポリゴン法線と同じになります。ポリゴンコーナーポイント(他の隣接するポリゴンの一部)はそれぞれ、下の画像の左側に見られるように、隣接するポリゴンの数による追加の頂点法線を持っています。

画像の白い頂点法線は、最初はポリゴン法線の方向を指しています(Phong タグがないと左)。シェーディングでは、ポリゴン自身の頂点法線間を補間する法線(シェーディング法線)を使って、ポリゴン内で明るさを計算します。両方のポリゴン間のハードエッジが作成されるのが、即座に明らかになります:中心点が大きく異なる2つの頂点法線(明るさが急転)になり、多くの場合それは望ましいものではありません。

この明るさの差をどうしたら避けられるでしょうか?両方の頂点法線の方向が並んでいると想像してください。シェーディング法線が補間されれば、明るさの急転はエッジで起こりません。

これがまさにPhong タグの機能です。しきい値(2つの隣接するポリゴン間の角度)により、この値に達しない場合は、頂点法線は隣接するポリゴンの平均値に設定されます。上の画像に表示され、両方の頂点法線がお互いの上にあるポイント毎に置かれ、エッジ全体を一定の明るさのグラデーションにします。

もうひとつのメモ:このシェーディング法線がオブジェクトポイント間で補間を行わず、任意の方向を向くことを想像してください。これは、法線マテリアルチャンネルに読み込める法線マップがまさに行っていることです。

頂点法線に影響するために使用するCinema 4Dのエレメントは法線タグです。

隣接するポリゴンのポリゴン法線は反対方向を向かず、均一に外向きあるいは一つの側に向いていることに留意します。それ以外は、シェーディングが正しく働きません。

ヒントポリゴン法線 オプションが、属性マネージャの ビュー メニュー(ビューポート/オプション/設定メニュー)で有効な場合、法線ベクトルが表示されます。
そのためには、オブジェクトを選択し、ポリゴンを使用モードに切り替え、次に選択ツールを使ってポリゴンを選択します(あるいは選択メニューから全て選択を選択します)。