Microsoft DirectX 8.0 (Visual Basic)

D3DXSkinMesh.GenerateSkinnedMesh

スキニングによってメッシュを生成する。

object.GenerateSkinnedMesh( _ 
    Options As Long, _ 
    MinWeight As Single, _ 
    AdjacencyIn As Any, _ 
    AdjacencyOut As Any) As D3DXMesh

指定項目

object
D3DXSkinMesh オブジェクトを表すオブジェクト式。
Options
メッシュに対するオプションを指定する、CONST_D3DXMESH 列挙で定義される 1 つ以上のフラグの組み合わせ。
MinWeight
最小ウェイト固定値を設定する。
AdjacencyIn
ソース メッシュに含まれる各面の 3 つの隣接面を指定する、1 面あたりの 3 つの Long 値の配列の最初の要素。「注意」を参照すること。
AdjacencyOut
最適化されたメッシュの面隣接性配列に使用する転送先バッファ。面隣接性は、配列の配列として格納される。最も内側の配列は、隣接する三角形の 3 つのインデックスで、外側の配列は、メッシュ内の三角形ごとの面隣接性の 1 セットである。

戻り値

スキニングによって生成されたメッシュを表す D3DXMesh オブジェクトを返す。

エラー コード

失敗した場合はエラーが発生し、Err.NumberD3DERR_INVALIDCALL が設定される。

エラー トラッピングの詳細については、Microsoft® Visual Basic® の「エラー処理」を参照すること。

注意

このメソッドでは、すべての行列を指定して各ボーンに適用できる。ジオメトリ ブレンディングは GenerateSkinnedMesh が行うため、Direct3D を使用してジオメトリ ブレンディングを実行する必要はない。特に、このメソッドでは頂点ごとにボーンの影響を 4 つ以上使用できる。

このメソッドにより生成されるメッシュは、スケルトン トランスフォームが変更されるたびに、D3DXSkinMesh.UpdateSkinnedMesh に指定する必要があるメッシュである。

このメソッドはスキン アニメーションに役立つ。

次のサンプル コードは、D3DXBuffer オブジェクトを使用して隣接性情報を渡す方法を示している。

Dim Opts As Long
Dim MinW As Single
Dim D3DXbAdjacencyIn As D3DXBuffer
Dim D3DXbAdjacencyOut As Any

' このコードでは、すべての引数が
' 正しく初期化されていると仮定している。
Call D3DX8.ConvertToIndexedBlendedMesh(Opts, MinW, ByVal D3DXbAdjacencyIn.GetBufferPointer, PalSize, D3DXbAdjacencyOut)