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 |
|
Bibliothèque |
|
Voir aussi