【CG】3Dモデルのデータ量のお話
映像系だとあまりポリゴン数は気にしないがゲーム系ではポリゴン数に制限があるというのはよくある話。まあ当然ですね。ゲームでは持てるデータの量にも制限があるし、ポリゴン数が多ければ描画にも負担がかかるので二重に制限がかかっているようなものです。(近年のゲームではサーバー上にデータを保管するからデータ量に関してはあまり気にしていないかも・・?)
私自身経験豊富というわけではないので、「これくらいのポリゴン数がいいですよ」という話はできません。なのでここでは、どうしてデータ量が増えるかという基本的な理解をして、どうすればデータ量を抑えられるかが簡単に思いつけるようになるのをゴールとして話を進めます。
といっても理解はとっても簡単なので、中級者以上の方には当然の話かと思います。初級者向けだと思って見て頂ければと思います。
キホンのキ
3Dモデルの中身はどうなっているのか?
3Dモデルのデータ量の指標としてよく取り上げられるのが「ポリゴン」ですが、ポリゴンがどうやって表示されているかといえばもちろん3つの頂点が置かれている座標をそれぞれ結んだ領域を計算して表示しているわけです。
※昔と違って今はポリゴンも多角形に対応するようになりましたが、どんな多角形ポリゴンも内部では全て三角形に変換されています。
このことから、1ポリゴンにつき3頂点分のデータ量があることが分かります。つまりポリゴンでデータを持っているわけではなく、全て頂点の集まりのデータになっているわけです。
ちなみに各頂点が持っているデータはワールド座標のXYZだけではありません。例えば頂点カラーを持っていたり、ポリゴンが表を向いているか裏を向いているかの情報も持っています。UVの座標値も持っていないとテクスチャが貼れませんし、スムージングの情報も持っていないと角を滑らかにできませんよね。
多分頂点が持っている情報は他にもありそうですが、とにかく一つの頂点だけでも結構な情報量を持っていることが分かりますね。もうお分かりかと思いますが、軽量化するのであれば「ポリゴンを削減」ではなく厳密には「頂点を削減」する必要があるのです。まあポリゴンを消せば必然的に頂点も消えるわけなのでどちらでもいいんですが。
応用編
例えばこんな場合を考えましょう。
『地面に外灯を立てたい』
これを、データ量の変化が分かりやすいようにわざとハイポリゴンに作って検証してみます。まずはこんなものを作ります。
どちらも円柱部分と板の外側の部分は同じポリゴンです。違いは、画面左は板を円形に穴をあけて円柱と接合しており、右は板は閉じたまま円柱を上に乗せただけの状態です。
こんな感じ。
プロパティを見てみましょう。こちらが右のモデル
こちらが左のモデル
円柱が乗っている部分のポリゴンの割き方を見れば、左のほうがポリゴン数が多いことは一目瞭然ですね。
ただし、頂点数が変わらない点に注目してください。このデータ、果たしてポリゴン数が多い左のモデルのほうがデータ量が多くなるのでしょうか。
結果は、たったの1KBの違いしか出ませんでした。まあポリゴン数の差が67ポリゴンしかないので、67ポリゴンではそれくらいしか差は出ないでしょうと言われたら返す言葉はありません()
それでは次に、ポリゴン数が同じでも頂点数が増えるとどうなるのか試してみましょう。差分が分かりやすくなるように極端にポリゴン数を増やしてみます。
グリッド割りした板のポリゴンを、一つ飛ばしで選択して面の押し出しをしました。
これを二つ用意。左は通常。右は押し出し部分を切り取り、同じポリゴン数のまま頂点だけ増えるように作ってあります。
こんな感じ。
頂点数が多い右
頂点数が少ない左
約4万個ほど頂点が多い状態です。これを書き出すと...
およそ350KBほどの差が出ました。
今回はさすがに頂点数の差が大きいですが、なんにせよ頂点は可能な限り結合して数を減らした方がいいということですね。
とくにこういった、柱と同じ形状で穴をあけているのに柱は結合されずにめり込ませているような場合は、確実に結合したほうが良さそうです。(まあこんな作り普通しないでしょうけど。)
以上3Dモデルデータについてでした。
この記事が気に入ったらサポートをしてみませんか?