Tips

実験と検証 / Try & Memo編

ポリゴンの裏・表について

まえがき

「おかしいな」と思ったことはありませんか? 綺麗な羽や翼の小道具、さらさらの髪、草や花など、ライトを当ているはずなのになんだか黒ずんでしまったり、服の裏地が真っ黒だったり。ライトの方向を変えたり、いっそ影をOFFにしてしまったりして、ようやくなんとかなったり、それでも直らなかったり。その原因、ひょっとしたら片面ポリゴンとPoserの特性のせいかも知れません。

図1
図1:なんだかおかしいの図

ポリゴンということ

図2
図2:面の集まり

そもそも、ポリゴンとは一体何でしょうか? ゲームやCG映像の普及で、CGに詳しくない人もポリゴンという単語は言葉を耳にすることがあると思います。辞書で調べるとpolygonは「多角形」と出てきます。polyは「複数、多数」という意味の接頭語で、gonは「形」。「三つまたはそれ以上直線と角で結ばれた図形」がpolygonの元の意味です。

ではCGにおけるポリゴンとは何でしょうか。

Poserの基本アイテムからボールを呼び出し、ドキュメントスタイルを多角形シェーディング(ラインつき)に変更してみましょう。ボールの曲面が、小さな四角(場所によっては三角)の面の集まりでできていることがわかります。

この小さな四角(場所によっては三角)の板がポリゴンです。Poserのオブジェクト(物体)は、そのほとんどがポリゴンで構成されています。このように、CGでは、オブジェクトを構成する三角や四角の面のことをポリゴンと呼びます。

3DCGのソフトによっては、五角やそれ以上のポリゴンを扱うことができるものもあります。また、ポリゴン以外にも、自由曲面やサブディビジョンサーフェス、メタボールなどといった方法でオブジェクトを構成するものもあります。が、三角や四角のポリゴンは計算がしやすいため高速な処理が可能で、ゲームなど動画で3DCGを扱う場合は、ポリゴンによる描画が主流となっています。

ところで、面には表と裏があります。ポリゴンも面なので、表と裏を区別します。ではどうやって表裏を判別しているのでしょうか。

図3
図3:頂点を定義

ポリゴンの表と裏は、ポリゴンの定義方法によって決まります。

一般的なファイルフォーマットでは、ポリゴンはまず、その頂点を定義します。

図4
図4:頂点を結ぶ

そして次に、一つ一つの面が、どの頂点を使うかを定義します。

図5
図5:表裏が決定する

ポリゴンの表裏は、この面を定義するときの頂点の並び順で決定します。自分の視点から見て、点が反時計回りに並んでいたら表、時計回りなら裏、という具合です。

こうすると、反時計回りに並んでいた頂点は、反対方向から見ると時計回りになります。Z状に並んでいたら? 面が破綻するだけですね、はい。

3DCGのソフトの中には、両面ポリゴンを扱うものもあります。両面ポリゴンというのはその名の通り、一つの面につき頂点を時計回りに結んだ面と反時計回りに結んだ面の二つを定義します。要するに、片面ポリゴンを2枚張り合わせているのです。当然ポリゴンの枚数は片面の時の2倍になります。

Poserにおける片面ポリゴン

図6
図6:レンダリングすると表示される

さて、ちょっと寄り道をしてしまいましたが、Poserにおける片面ポリゴンの特性を見てみましょう。

小道具の基本アイテムの中から、平面を呼び出します。平面や平面詳細は片面ポリゴンで作られています。平面や平面詳細を扱っていると、画面から消えてしまうことがあります。もちろん実際に消えてしまったわけではありません。

Poserでは片面ポリゴンの裏側は、プレビュー画面では描画されません。どうしても姿を確認したいなら、アウトラインかワイヤーフレーム(陰線消去でないほう)にすると表示されます。

図7
図7:左側=表向き、右側=裏向き

ここで、平面を二つ並べてレンダリングしてみましょう。左側が表向き、右側の平面はY軸を180度回転させた裏向きのポリゴンです。

右の平面は、なんだか暗くなってしまっています。裏面だから暗くなる、ということでしょうか? では別の形状で確認してみましょう。

図8
図8:テスト形状とライティング(Shade)

球体を半分に切った、お椀状の形状をShadeで用意します。ポリゴンは外側を向いていますので、内側は裏向きということになります。そして、前方から赤いライト、後方から青いライトを当てます。

図9
図9:Poserのレンダリング結果

この形状をPoserに読み込んで、レンダリングしてみます。

なんだか奇妙な結果になりました。お椀の内側の奥には赤いライトが当たっているはずなのですが、赤色は見られません。そして、実際には影になって当たらないはずの青いライトが反映されてしまっています。どうやらPoserの裏面ポリゴンは、ライトの影響を受けず、表面の情報を反映させるようです。

つまり、裏側を向いた面はレンダリングされているわけではなく、その反対側の表面が透けて見えているのだと考えた方がいいでしょう。

もうおわかりですね。綺麗な羽や翼の小道具が黒ずんだり、服の裏地が真っ黒だったりするのは、その部分がポリゴンの「裏側」だから。反対側の面、すなわち反対方向から見た表側のライティングが反映されてしまっているからなのです。

そして真っ黒になるのは、その表面が、影を受けて真っ暗になってしまっているからなのです。

図10
図10:様々な裏面ポリゴンの現象

図11
図11:左=影有り、右=影無し

試みに、全ての面が内側を向いた球体を用意して、レンダリングしてみましょう。

図12
図12:Poser4互換レンダリング

なんとも珍妙なレンダリングだと思います。ちなみに、Poser4互換レンダリングでは、鏡面反射のみ裏面(本来見えている側)の情報が反映されるようです。

場当たり的回避方法

原因はわかりましたが、それではこの問題は回避できないのでしょうか。髪や草花など片面ポリゴンを使用しているオブジェクトは多くありますし、ダイナミッククロスは片面ポリゴンであることが必須です。

図13
図13:ペイント系ソフトでレタッチ
レタッチする

これはかなり消極的ですが、それなりに強力です。問題箇所が小さな面積なら、Photoshopなりのペイント系ソフトで修正してしまう方法です。しかし、修正個所が広範囲にわたる場合、手作業で修正するには無理が生じます。

図14
図14:別撮り合成
合成する

レタッチする箇所が比較的大きい場合、180度回転させたライト構成で裏面ポリゴンだけをレンダリングし、合成するのも一つの手段です。このとき、裏面から照射するライトは影を落とさないようにするのがコツです。

Poserでレンダリングしない

これも消極的ですが、抜本的に問題が解決します。裏面ポリゴンの珍妙な描画はPoserのレンダリングエンジンの問題ですので、裏面ポリゴンでも問題なくレンダリングできるソフトへ書き出し、そのままレンダリングすればいいのです。しかし、Poser特有のシェーダが使えなくなったり、インポート側のソフトでのシーンの設定が必要だったりと、なんでもかんでもOKというわけにはいきません。

図15
図15:面反転ポリゴンを削除
面反転ポリゴンを削除

裏面のポリゴンを描画したくない場合、レンダリング設定ダイアログの「面反転ポリゴンを削除」にチェックを入れることで、裏面ポリゴンを無視してレンダリングすることができます。ダイナミッククロスなど、裏面が貫通して染みを作ってしまう場合などに有効かもしれません。が、そもそもちゃんとライトを当ててレンダリングをしたいという時にはまったく役に立ちません。

ライティングを工夫する

本来の意図からは外れますが、そもそも黒ずみが発生しにくいようなライティングにすることはできます。後ろから、メインライトと同じような補助ライトを当てる方法です。影が落ちて真っ黒になってしまう場合は、補助ライトの影をオフにすると、服や身体の影になっている部分にも光が届きます。ライトの強度を落としたり、スポットライトで部分的に照らすことで、シーン全体への影響を押さえることができます。

図16
図16:影の作成のチェックを外す
影を落とさない

シーン全体のライティングを変更したくない場合、そして問題の裏面ポリゴンを黒くしている原因がセルフシャドウ(自分自身が落とす影)の場合、特製パレットでそのオブジェクトだけ影を落とさない設定にすることができます。ただし、この設定をしたものは他の形状にも影を落とさなくなってしまいますので、シーンによっては、周囲から浮いてしまうことがあります。

ポリゴンを裏返す

その場だけなんとかしたい! というときは、グルーピングツールを使用してその部分だけポリゴンを裏返すことができます。

図17
図17:グループ編集パレット
1.グルーピングツールを呼び出す。
図18
図18:ポリゴングループの作成
2.裏返ししたい部分のグループを選択する。

グループ分けされていなかったり、最適なグループがなければグループを新規作成します。

図19
図19:グループの法線を逆転
3.「グループの法線を逆転」をクリック。

法線というのは、面から垂直に出ている線、つまり面の向きのことです。

図20
図20:ポリゴンが逆転する
4.選択したグループのポリゴンが裏返る。

グルーピングツールは「他のオブジェクトを隠す」にチェックを入れていても、少々使い辛いです。モデリングに慣れているなら、モデリングソフトにそのオブジェクトを読み込んで、面を反転してしまった方が手っ取り早いでしょう。しかし、面を反転させるということは、元の.objを変更してしまうということですので、自分で作成したデータならともかく、部分的な修正などには向きません。ちなみに、グルーピングツールを使用してグループを編集したフィギュアをライブラリに登録すると、新しくobjファイルが作成されます。

まとめ

いくつか対処方法を書いてきましたが、どれも決定的ではありません。シーンごとにケースバイケースで対処していくしかないようです。しかし、裏面ポリゴンの特性を知っていれば、思うようなレンダリング結果が出ない時にすぐに対策をとることができるでしょう。

もしあなたがレンダリングして、不自然に暗い部分や真っ黒になっている部分が現れた場合、そこがポリゴンの裏面でないかを確認してみて下さい。裏面である場合、その反対側の面すなわち表側が、どのような状態か(ライトが当たっているか、影を受けているかなど)を調べることが、対処の近道になると思います。

2006年2月28日追記

長々と対策を書いてきましたが、根本的な対策というか解決方法が分かりました。非常に簡単かつ正攻法です。

図 追記1
図 追記1:ノーマル_前にチェックを入れる
『ノーマル_前』にチェックを入れる

問題のあるマテリアルがあれば、マテリアルルームでそのマテリアルのルートノードの一番下にある「ノーマル_前」にチェックを入れます。

図 追記2
図 追記2:裏面ポリゴンが表を向く

その状態でレンダリングすると、それまで表側の黒い色を反映していた部分が裏返ったように本来の情報を反映するようになります。

「ノーマル_前」はPoser6のSR1で追加された機能です。ルートノードに「ノーマル_前」の項目がない場合は、Poserの公式サイトからアップデータをダウンロードし、適用して下さい。

「『ノーマル_前』って何? 専門用語?」という疑問はもっともです。が、少なくともCG用語ではありません。「Normals_Forward」もしくは「法線を手前に向ける」と読み替えると分かりやすいかと思います。

この項目にチェックの入ったマテリアルは、どの状態でも強制的に法線(=面の向き)を手前の視点の方向に向けるようになります。つまり全ての面が表を向くわけです。

このチェックボックスは、本来両面ポリゴンをレンダリングしたときに現れる不正な模様を削除するために付け加えられた機能のようです。追加機能なので、デフォルトではオフになっています。裏面を向いている方が良い効果が出る場合もあるので、不自然と思われる場合にだけチェックを入れるようにするとよいでしょう。

片面ポリゴンの特殊な使い方

反対側の状態を反映してしまうという片面ポリゴンですが、その特性を利用すればこんな使い方もできます。

図21
図21:裏面ポリゴンの活用例(笑)

通常の3DCGソフトでは、反対側から落とされた影を見るためにはマテリアル設定などを工夫しないといけません。しかし、Poserなら面の向きにさえ気をつければ、この影絵という現象が結構手軽に実現できます。

影絵の他にも、使い道はあるかもしれませんので、いろいろ試してください。

▲ Tipsタイトルに戻る
◆ ホームに戻る