- 締切済み
directxでの頂点座標の取得
線と面の当たり判定をするのにメッシュの頂点座標を1面おきに取得したいのですが上手くいきません(確実に線とメッシュが交差するように設定しても正しく処理されません)。 どの辺りが間違っているか教えてもらえるとうれしいです。 g_pMesh、g_dwNumMaterialsはグローバルで宣言されてます。 BYTE *pVertexBuffer; D3DXVECTOR3 v[3]; g_pMesh->LockVertexBuffer( D3DLOCK_READONLY, (LPVOID*)&pVertexBuffer ); DWORD FVF = g_pMesh->GetFVF(); DWORD VertexSize = D3DXGetFVFVertexSize( FVF ); for( DWORD i = 0; i < g_dwNumMaterials; i+=3 ) { v[0] = *(D3DXVECTOR3*)pVertexBuffer; pVertexBuffer += VertexSize; v[1] = *(D3DXVECTOR3*)pVertexBuffer; pVertexBuffer += VertexSize; v[2] = *(D3DXVECTOR3*)pVertexBuffer; pVertexBuffer += VertexSize; } g_pMesh->UnlockVertexBuffer(); これはhttp://www9.plala.or.jp/dequartet/directx_tips.htmのサンプルを改良したものです。 そこで大まかな説明もされています。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- i-kujou
- ベストアンサー率50% (13/26)
3Dについては専門家ではないのではずしているかもしれませんが、 モデルデータが頂点インデックスを利用しているということはありませんか? その場合は頂点バッファーから頂点を3点づつとりだしても、トライアングルの頂点にはならないと思います。
補足
頂点をあえて 1 - 2 l / l 3 - 4 ではなく 1 - 2 6 l / + / l 3 5 - 4 でもダメでした