お問い合わせTopゲームプログラムトップポリゴンポリゴン■ポリゴンポリゴンとは3つ以上の頂点で形成される多角形のことです。頂点にはXやYのような座標情報の他に様々な情報を設定することができます。上の表にある全ての頂点情報を使用する必要はありません。設定内容は構造体の宣言の順番で行います。D3DFVF_DIFFUSE)●ポリゴンの描画方法DirectXでは頂点を利用してポリゴンを作成する際にどのようなポリゴンを作成するか決めることができます。・TriangleList(トライアングルリスト)トライアングルリストは三角形一つ一つを作成するために頂点を3つずつ設定していく方法です。設定する頂点数は3で割り切れる数にしなければいけません。・TriangleStrip(トライアングルストリップ)トライアングルストリップは他の三角形の頂点二つと新しい頂点一つで次々と三角形を作成していく方法です。・TriangleFan(トライアングルファン)トライアングルファンは一つの頂点を使いまわして扇のように三角形を作成していく方法です。■頂点バッファ頂点バッファとはDirectXやOpenGLで使用されている頂点情報を格納したメモリ領域のことです。この領域はVRAM上に作成されます。DirectXではCreateVertexBufferを使用して頂点数分の領域をVRAM上で確保しています。VRAM上のメモリ領域はユーザーが簡単に触っていけないメモリ領域になっていますのでデータの変更などは簡単にはできません。使用するときはまずメモリ領域を使用することを知らせるためにLock関数を使用します。これで、他の処理に邪魔されずそこのメモリ領域での作業を占有できます。その後、メモリの変更作業が完了したら占有を解除するためにUnLock関数を使用します。●DrawPrimitiveとDrawPrimitiveUpの違いDrawPrimitiveとDrawPrimitiveUpの違いを説明したいと思います。こちらを使用する方が適している■インデックスバッファインデックスバッファとはポリゴンを作成するための頂点番号リストのことです。インデックスバッファの目的は「頂点情報」と「ポリゴンを作成する頂点」を分離することにあります。板ポリや頂点数の少ないポリゴンでは頂点バッファのみでも問題ありませんが、モデルファイルなどのポリゴンメッシュを作成するためにはインデックスバッファによる頂点情報の管理が必要不可欠になります。ポリゴンメッシュ:ポリゴンメッシュはポリゴンの集まりのことで、メッシュとも呼ばれています。メッシュを物体として意味のある形にした物がモデルファイルになります。●インデックスバッファを使用した場合のメリットインデックスバッファを使用した場合のメリットを書きたいと思います。いっていいほど頂点情報の重複が発生します。重複が解消され、頂点バッファの数を減らすことが可能です。処理速度の向上が見込めます。上のメリットの項目で出てきた頂点情報の重複について説明したいと思います。ポリゴンメッシュのようなポリゴンを数多く持っているオブジェクトでは同じ頂点情報を使用している箇所が存在します。別の頂点情報として扱われます。トライアングルリストは性質上三角形のポリゴン一つ一つをちゃんと設定しなければいけないのでイメージとしてわかりやすいと思います。上の図はトライアングルリストで2枚の三角形を使用した四角形のイメージです。頂点の1と4、3と5は同じ値ですが、頂点情報としては別物として扱われます。次は床などの正方形ポリゴンが複数並んでいる場合のイメージ図です。このように頂点2と24以外は重複しており、ポリゴンがたった8つでも数多くの頂点が重複していることがわかります。重複による問題点は二つあります。1.メモリの無駄遣い重複している頂点情報でも一つ一つはきちんとメモリ上に領域を確保する必要があります。このような無駄といえるメモリの確保は無視することはできません。重複している頂点情報全てを変更しなければいけません。修正漏れがあった場合は意図した内容と違った形に描画されることになりますので、慎重に修正を行わなければいけません。・インデックスバッファを使用した重複の回避インデックスバッファを使用した場合、問題点は改善されます。1.メモリの無駄遣いポリゴンの描画はインデックスバッファの内容を元にして頂点バッファの情報を使用して行われます。頂点バッファ内に重複した内容が作成されることはありません。これによって、無駄な頂点情報がなくなり、メモリの節約になります。2.頂点の変更がしにくい頂点バッファの内容をひとつ修正するだけで、その頂点情報のインデックスを使用している全てのポリゴンに影響されることになります。これにより、簡単に頂点情報を修正できるようになりました。頂点バッファのみ場合よりもメモリを多く使用してしまう可能性があります。※頂点構造体の内容に左右されますので、必ずというわけでありません。■3Dモデルの表現方法3Dモデルの表現方法はワイヤーフレーム、サーフェス、ソリッドの3種類があります。ゲームで使用されているような3DCGはサーフェスモデルにあたります。●ワイヤーフレームモデルワイヤーフレームモデルは頂点同士を線のみで表現したモデルのことです。立体感をつかみにくくなっています。ワイヤーフレームのメリットとしてはデータ量が少ないことから表示が速いところです。・ワイヤーフレームレンダリングについてCG描画の手法としてワイヤーフレームレンダリングと呼ばれるものがあります。これは面成分などを持っているポリゴンをあえてワイヤーフレームとして描画する方法です。ワイヤーフレームモデルとの違いはワイヤーフレームレンダリングは面成分の情報を持っているので陰線消去などのワイヤーフレームモデルにはできないことが可能です。●サーフェスモデルサーフェスモデルはモデルの表面のみが定義された構造になっています。一般的な3DCGの世界において、もっとも使用されている方式です。中身のないサーフェスモデルと比較されます。ソリッドモデルはCADなどで使用され、物理シミュレーションなどの工業分野で用いられています。探している内容が見つからなかったら以下のサイトにあるかもしれません。筆者が開発にかかわらせてもらったアプリのリンクです。