D3DXIntersectSubset 関数
指定したレイと、指定されたメッシュ サブセットと交差します。 これにより、 D3DXIntersect と同様の機能が提供されます。
構文
HRESULT D3DXIntersectSubset(
_In_ LPD3DXBASEMESH pMesh,
_In_ DWORD AttribId,
_In_ const D3DXVECTOR3 *pRayPos,
_In_ const D3DXVECTOR3 *pRayDir,
_Out_ BOOL *pHit,
_Out_ DWORD *pFaceIndex,
_Out_ FLOAT *pU,
_Out_ FLOAT *pV,
_Out_ FLOAT *pDist,
_Out_ LPD3DXBUFFER *ppAllHits,
_Out_ DWORD *pCountOfHits
);
パラメーター
-
pMesh [in]
-
種類: LPD3DXBASEMESH
テストするメッシュを表す ID3DXBaseMesh インターフェイスへのポインター。 メッシュは属性を並べ替える必要があります。
-
AttribId [in]
-
種類: DWORD
交差するサブセットの属性識別子。
-
pRayPos [in]
-
型: const D3DXVECTOR3*
レイの始点を指定する D3DXVECTOR3 構造体へのポインター。
-
pRayDir [in]
-
型: const D3DXVECTOR3*
レイの方向を指定する D3DXVECTOR3 構造体へのポインター。
-
pHit [out]
-
種類: BOOL*
BOOL へのポインター。 レイがメッシュ上の三角形の面と交差する場合、この値は TRUE に設定されます。 それ以外の場合、この値は FALSE に設定されます。
-
pFaceIndex [out]
-
種類: DWORD*
pHit が TRUE の場合、レイの原点に最も近い面のインデックス値へのポインター。
-
pU [out]
-
型: FLOAT*
バーセントリック ヒット座標 (U) へのポインター。
-
pV [out]
-
型: FLOAT*
バーセントリック ヒット座標 (V) へのポインター。
-
pDist [out]
-
型: FLOAT*
レイ交差パラメーターの距離へのポインター。
-
ppAllHits [out]
-
種類: LPD3DXBUFFER*
最も近いヒットだけでなく、すべてのヒットを表す D3DXINTERSECTINFO 構造体の配列。
-
pCountOfHits [out]
-
種類: DWORD*
ppAllHits から返される配列内の要素の数。
戻り値
種類: HRESULT
関数が成功した場合、戻り値はD3D_OK。 関数が失敗した場合、戻り値には次の値を指定できます: E_OUTOFMEMORY。
解説
D3DXIntersectSubset 関数は、三角形が実際に配置されている場所とは関係なく、三角形内および三角形周辺の点を理解する方法を提供します。 この関数は、V1 + U(V2 - V1) + V(V3 - V1) の式を使用して、結果のポイントを返します。
平面 V1V2V3 内の任意の点は、barycentric 座標 (U,V) で表すことができます。 パラメーター U は、結果に加重される V2 の量を制御し、パラメーター V は結果に加重される V3 の量を制御します。 最後に、[1 - (U + V)] の値によって、結果に加重される V1 の量が制御されます。
Barycentric 座標は、一般的な座標の一種です。 このコンテキストでは、barycentric 座標の使用は座標系の変化を表します。 デカルト座標に対して true を保持するものは、barycentric 座標の場合は true を保持します。
Barycentric 座標は、三角形の頂点の観点から三角形内の点を定義します。 バーセントリック座標の詳細については、「 Mathworld の Barycentric Coordinates Description」を参照してください。
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|
関連項目