Partager via


Fonction D3DXComputeTangentFrame

Calculez des vecteurs tangentes, binormals et normaux pour un maillage.

Syntaxe

HRESULT D3DXComputeTangentFrame(
  _In_ ID3DXMesh *pMesh,
  _In_ DWORD     dwOptions
);

Paramètres

pMesh [in]

Type : ID3DXMesh*

Pointeur vers un objet de maillage ID3DXMesh d’entrée .

dwOptions [in]

Type : DWORD

Combinaison d’un ou plusieurs indicateurs D3DXTANGENT .

Utilisez NULL pour spécifier les options suivantes :

  • Pondre la longueur normale du vecteur par l’angle, en radians, subtendé par les deux arêtes qui quittent le sommet.
  • Calculez les coordonnées cartésiennes orthogonales à partir des coordonnées de texture UV.
  • Les textures ne sont pas encapsulées dans des directions U ou V
  • Les dérivés partiels en ce qui concerne les coordonnées de texture sont normalisés.
  • Les sommets sont classés dans le sens inverse des aiguilles d’une montre autour de chaque triangle.
  • Utilisez des vecteurs normaux par vertex déjà présents dans le maillage d’entrée.
  • Les résultats seront stockés dans le maillage d’entrée d’origine. La fonction échoue si de nouveaux sommets doivent être créés.

Valeur retournée

Type : HRESULT

Si la fonction réussit, la valeur de retour est S_OK. Si la fonction échoue, la valeur de retour peut être l’une des suivantes : D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

Notes

Cette fonction appelle simplement D3DXComputeTangentFrameEx avec les paramètres d’entrée suivants :

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);

Les singularités sont gérées en fonction des besoins en regroupant les arêtes et en fractionnant les sommets. Si des sommets doivent être fractionnés, la fonction échoue. Le vecteur normal calculé à chaque sommet est toujours normalisé pour avoir une longueur unitaire.

La solution la plus robuste pour le calcul des coordonnées cartésiennes orthogonales consiste à ne pas définir d’indicateurs D3DXTANGENT_ORTHOGONALIZE_FROM_U et D3DXTANGENT_ORTHOGONALIZE_FROM_V, afin que les coordonnées orthogonales soient calculées à partir des deux coordonnées de texture UV. Toutefois, dans ce cas, si U ou V est égal à zéro, la fonction calcule les coordonnées orthogonales à l’aide de D3DXTANGENT_ORTHOGONALIZE_FROM_V ou D3DXTANGENT_ORTHOGONALIZE_FROM_U respectivement.

Spécifications

Condition requise Valeur
En-tête
D3DX9Mesh.h
Bibliothèque
D3dx9.lib

Voir aussi

Fonctions de maillage

D3DXComputeTangentFrameEx

D3DXTANGENT