トップページ > 過去ログ > 記事閲覧
3Dモデルの表示処理時間・ミラーリング
名前:PATOLE 日時: 2010/03/28 21:44

メタセコイアで作成したモデルを表示しています。 大量に3Dデータを表示するため、非常に重くなったりします。 そこで質問なんですが、 メタセコイアにはミラーリングというのがありますが、あれを複数利用して作成したモデルを表示するのと、 ミラーリングを使用せずに普通に作成したモデルを表示するとでは、どちらのほうが処理時間がかかりますか? 同じ3Dモデルを何百って表示するようなゲームです。 普通にfor文でモデルを何百って表示していますが、 他にもっと最適な表示方法があったりしますか?

Page: 1 |

Re: 3Dモデルの表示処理時間・ミラーリング ( No.1 )
名前:管理人 日時:2010/03/29 06:52

> メタセコイアにはミラーリングというのがありますが、あれを複数利用して作成したモデルを表示するのと、 > ミラーリングを使用せずに普通に作成したモデルを表示するとでは、どちらのほうが処理時間がかかりますか? ミラーリングを使用する場合としない場合でモデルのフレームの数が変化しないのでしたら ミラーリングをしてもしなくても処理時間は同じです > 同じ3Dモデルを何百って表示するようなゲームです。 > 普通にfor文でモデルを何百って表示していますが、 > 他にもっと最適な表示方法があったりしますか? 特にfor文で描画する以上に最適な方法はありません 3Dモデルを大量に描画したい場合は、3Dモデルの方も高速に描画することを前提に調整する必要があると思います どう調整すれば3Dモデルの処理負荷が小さくなるのか、ですが シェーダーモデル2.0が使用できる環境を前提とするかどうかで変わります まずシェーダーモデル2.0が使用できる環境を前提とする場合は ・マテリアルの種類を減らす、なるべくなら1つにする ・フレーム( ボーン )の数を可能な限り少なくする ・メッシュの数を減らす、人体モデルの場合はなるべくなら1つにする 最低でもマテリアルの種類の数だけ Direct3D に描画コールをしますので、 マテリアルは少ない方が良いです、人体モデルの場合は、一つのテクスチャに 顔や服など1キャラに必要な画像を全て書き込んでしまうことで可能です ( スペキュラさせたい部分とさせたくない部分などがあるかもしれませんが、 速度を考えると諦めるしかありません( 若しくはスペキュラマップを使用する ) ) フレーム( ボーン )も少ない方が良いです、何百もモデルが動作する場合は 各ボーンのアニメーション処理のCPUの処理負荷もそれなりに高くなりますし DXライブラリでは一度の描画処理で処理できるボーンの最大数がシェーダーモデル2.0を 使用する現状では54ボーンですので、もし54ボーン以上使用されている3Dモデルを 描画する場合は仮に1マテリアル&1メッシュで構成されていても Direct3D への描画コールが2回に増えます 次にシェーダーモデル2.0が使用できない環境を前提とする場合です ・マテリアルの種類を減らす、なるべくなら1つにする ・フレーム( ボーン )の数を可能な限り少なくする ・人体モデル( スキニングメッシュ )は使用しない マテリアルとフレームの数に関してはシェーダーモデル2.0が使用できる環境と同じですが、 スキニングメッシュ( 1頂点に複数のボーンを影響させる、人体モデルでは最近ではごく普通に 使われるメッシュ形式 ) を避けるべき、というのが違います シェーダーモデル2.0が使用できない場合はスキニング処理をCPUで行うのですが、 これがかなり負荷が高いからです、CPUでスキニング処理を行う場合で人体モデルを何百も 描画するのは、1モデル辺りの頂点数にもよりますがかなり厳しいと思います
Re: 3Dモデルの表示処理時間・ミラーリング ( No.2 )
名前:PATOLE 日時:2010/04/01 20:23

これほど詳しくありがとうございます。 いろいろと言われた通り試していきたいと思います^^

Page: 1 |