次の方法で共有


D3DXComputeTangentFrame

メッシュの接線ベクトル、従法線ベクトル、および法線ベクトルを計算します。

HRESULT 
D3DXComputeTangentFrame(
  ID3DXMesh * pMesh,
  DWORD dwOptions
);

パラメータ

pMesh

  • 入力 ID3DXMesh メッシュ オブジェクトへのポインターです。

dwOptions

  • D3DXTANGENT フラグの 1 つ以上の組み合わせです。
  • 次のオプションを指定するときは、NULL を使用します。
  • 頂点から出る 2 つのエッジが成す角度 (ラジアン単位) により法線ベクトルの長さを重み付けします。
  • UV テクスチャー座標から正射影デカルト座標を計算します。
  • テクスチャーは、U 方向および V 方向にはラッピングされません。
  • テクスチャー座標を基準とする偏微分を正規化します。
  • 頂点は、各三角形の周囲を反時計回りに並びます。
  • 入力メッシュに既に存在する頂点ごとの法線ベクトルを使用します。
  • 結果は元の入力メッシュに格納されます。新しい頂点を作成する必要がある場合、この関数は失敗します。

戻り値

成功すると、S_OK を返します。失敗した場合は、次のいずれかの値を返します。D3DERR_INVALIDCALL、D3DXERR_INVALIDDATA、E_OUTOFMEMORY

解説 

この関数は、次の入力パラメーターの D3DXComputeTangentFrameEx を単純に呼び出します。

 D3DXComputeTangentFrameEx(pMesh, D3DDECLUSAGE_TEXCOORD, 0,          D3DDECLUSAGE_BINORMAL, 0, D3DDECLUSAGE_TANGENT, 0,        D3DDECLUSAGE_NORMAL, 0,        dwOptions | D3DXTANGENT_GENERATE_IN_PLACE,       NULL, 0.01f, 0.25f, 0.01f, NULL, NULL); 

特異点は、エッジのグループ化および頂点の分割によって必要とされるとおりに処理されます。頂点を分割する必要がある場合、この関数は失敗します。頂点ごとに計算された法線ベクトルは、常に単位長を持つように正規化されます。

正射影デカルト座標を計算する最も強力な解法では、フラグ D3DXTANGENT_ORTHOGONALIZE_FROM_U およびフラグ D3DXTANGENT_ORTHOGONALIZE_FROM_V を設定しません。正射影デカルト座標は UV テクスチャー座標から計算されます。ただし、U または V が 0 の場合、関数はそれぞれ D3DXTANGENT_ORTHOGONALIZE_FROM_V または D3DXTANGENT_ORTHOGONALIZE_FROM_U を使用して正射影デカルト座標を計算します。

要件

ヘッダー: D3DX9Mesh.h 宣言

ライブラリ: D3dx9.lib 内容

関連項目

D3DXComputeTangentFrameEx, D3DXTANGENT