D3DXIntersect 関数

レイがメッシュと交差するかどうかを指定します。

構文

HRESULT D3DXIntersect(
  _In_        LPD3DXBASEMESH pMesh,
  _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 インターフェイスへのポインター。

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 構造体の配列を含む ID3DXBuffer オブジェクトへのポインター。

pCountOfHits [out]

種類: DWORD*

ppAllHits 配列内のエントリの数を含む DWORD へのポインター。

戻り値

種類: HRESULT

関数が成功した場合、戻り値はD3D_OK。 関数が失敗した場合、戻り値は E_OUTOFMEMORY になります。

解説

D3DXIntersect 関数は、三角形が実際に配置されている場所に関係なく、三角形内および三角形周辺の点を理解する方法を提供します。 この関数は、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」を参照してください。

要件

要件
ヘッダー
D3DX9Mesh.h
ライブラリ
D3dx9.lib

関連項目

メッシュ関数