2015年07月12日

3DCGに関する誤った思い込み

三角ポリゴンを使ってはいけない?

 サブディビジョンサーフェイス(以下 SDS)のモデリングでよく言われるのが、三角ポリゴンは歪みの原因になるのでなるべく使わない、ということだ。

 それは間違いではない。下の画像は三角ポリゴンの所で歪みが発生している。

 では次の画像はどうだろう。

 四角ポリゴンしか使っていないが、歪みが起きている。

 ↑四角ポリゴンを三角ポリゴンにしたが、その前の画像に比べて歪みは増えているだろうか? 増えるどころか減っている。

 2枚目の画像が四角ポリゴンだけなのに歪んでいるのは、1つのポイントから3本、5本のエッジが伸びている所があるからだ。

 SDS で最も安定した構成は四角形の格子状(グリッド)で、1つのポイントから4本のエッジが伸びたものだ。

 たとえ四角ポリゴンのみでも、それが崩れれば歪みの原因になる。
 だから三角ポリゴンを使うなというだけでは駄目で、ポイントから伸びるエッジの本数にまで言及しないと意味がない。

 もちろん格子状だけでモデルを構成するのは無理だ。
 1つのポイントから4本以外のエッジが伸びた箇所は曲面で歪みになりやすいので、メカのようなエッジの立ったモデルは、そういう箇所を平面に追いやるのが一般的な手法だ。

 人間の顔などの有機的なモデルの場合、多くの場合フリーズしてスムースシェーディングをかければ問題にならない(レンダリング時に自動的にフリーズされる)。
 ただ、頬やおでこのような目立つ曲面だとフリーズ後も歪みが見える場合がある。それも三角ポリゴンを使えば必ず出るというわけではなく、ケースバイケースだ。

 要はレンダリング時に問題が出なければいいのであり、問題の出ていない三角ポリゴンまで無くそうとするのは意味がない。

 とか偉そうに書きましたがここを参考にしました。
 http://lightwiki.pro/wiki/Fundamentals_of_Subpatch_Modeling

多角形ポリゴンを使ってはいけない?

 ネットで検索すると、多角形ポリゴンを使ってはいけないという記述がいくつか出てくる。
 しかし、どのソフトでも共通するものとしてその理由を挙げている所は1つもなかった。特定のレンダラーだと問題が出るという記述があったが、ならばそのレンダラーを使わない場合なら問題はない。

 多角形ポリゴンは三角ポリゴンより歪むと言った人もいたが、それは間違いだ。

 ↑これは五角形を三角と四角に分割した図だが、印をつけた部分のポリゴン配列は同じ。従って歪み具合も同じ。いや、五角形の方が粗密が均等な分、まだきれいだ。

 使ってはいけない理由が明確に存在しない場合なら、使っても構わない。

 もちろんクロスシミュレーションなどを行う場合は四角形の格子状が望ましいのでそうする。
 それらのモデルは専用に用意されるものなので、そのときにだけ気をつければいい。普段モデリングするときまで気にする必要はない。

 曖昧な理由で「○○は駄目」と書かれるのは迷惑だ。やめてもらいたい。
 三角形や多角形が駄目という言説が流布しているおかげで、自分の頭でものを考えずにそういう言説を鵜呑みにする人が文句を言ってきて困る。自分で確認もせずに「みんながそう言っているから」という理由で鵜呑みにするばかりでなく、それを他人にまで強要するとは愚の骨頂だ。

テクスチャの解像度は2の累乗がよい?

 ゲーム開発ではテクスチャの解像度を2の累乗(512×512、1024×1024など)にするので、プリレンダの 3DCG でもそうする風潮がある。

 しかしテクスチャの解像度を2の累乗にして効率がよくなるかどうかは、ソフトの設計による。効率がよくなるよう設計されてないソフトで2の累乗にしても効果はない。

 例えば Photoshop は元々写真を加工するためのソフトなので、2の累乗に最適化はされていないだろう。2の累乗に最適化すると、2の累乗以外の場合に効率が悪くなるからだ。そうするとほとんどの場合に効率が悪くなってしまう。

 ソフトがどう設計されているかは、ソフトの開発者しか知らない。だからマニュアルに「テクスチャの解像度を2の累乗にすると効率がよくなる」と書かれていない限り、そうする意義はない。

 少なくとも LW と MODO のマニュアルにはそう書かれてはいない。3dsMax と Maya のマニュアルも検索した限り見つけられなかった。(ただし MODO と Maya の 3D ペイントは解像度が2の累乗に限定されている。OpenGL を使うためだろう)
 また LW は画像の消費メモリを表示するが、それを見ると単純に解像度(画素数)とメモリ消費量が比例している。2の累乗に最適化されている様子はない。

 自分で2の累乗を使うのは自由だが、他人に強制しては駄目だということ。

posted by 葛 at 12:50 | Comment(0) | その他3Dグラフィック
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]