■ サブディビジョン 曲面化
1. Catmull-Clark をゲームで使うためには Catmull-Clark が GPU と相性が悪いことは既に述べた。では、この Catmull-Clark データをゲームで使用する方法は無いのか? その解の一つが、「Catmull-Clark データをそのままゲームで使う」のでは無く、「Catmull-Clark データを曲面に変換し、その曲面をゲームで使う」方法だ。 最近の GPU に限れば、曲面と GPU の相性は比較的良い。ただし CAD でよく用いられる NURBS という複雑な曲面は、GPU との相性は良くない。ベジェ曲面やグレゴリー曲面(どちらも一番単純な形式のモノ)が、GPU と相性が良いのである。 なお曲面化すると、元の Catmull-Clark よりも入力データ量は増える。しかしポリゴンを入力データとする場合に比べれば小さくて済むので、十分メリットがあると考えられる。 2. 近似 Catmull-Clark サブディビジョン 「Catmull-Clark → 曲面 変換」(以後、曲面変換 と略) で有名な方法として、
3. ACC の曲面変換 ACC の曲面変換は、独自の数式に基づいて行われる。これにより単純な実装が可能となるが、反面 形状が少し複雑な状態になった場合に対処することが難しくなる。 例えば「隣り合う曲面での曲がり方が激しい」ときに、うまく対応出来なかったりするのだ。 4. グレゴリー曲面 グレゴリー曲面はベジェ曲面と異なり、隣り合う曲面どうしを滑らかに繋ぐことが出来る。しかし "滑らかに繋ぐ" 操作を行った場合、曲面内部の自由度(表現力)が落ちるのが欠点である。 逆に "滑らかに繋ぐ" 操作を行なわなかった時は、曲面内部の自由度は落ちないが、当然 滑らかには繋がらない (曲面間で折れる)。ちなみに「グレゴリーACC」では、滑らかに繋ぐことを犠牲にして、曲面内部の自由度の方を取っているように思われる。 なお実際には、PCやゲーム機内部で「曲面 → ポリゴン 変換」(以後、ポリゴン変換 と略) されることで、3DCG 画像として表示する。 5. 「事前処理」と「ゲームアプリ側の処理」 "ACC の曲面変換" をゲームに使う場合、すべての処理をゲームアプリ側で行うと、「Catmull-Clark そのものをアプリ内に組み込む」よりも遅くなってしまう。 そこで、
|