D3DXComputeTangentFrame-Funktion

Berechnen sie Tangente, binormale und normale Vektoren für ein Gitter.

Syntax

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

Parameter

pMesh [in]

Typ: ID3DXMesh*

Zeiger auf ein Eingabe-ID3DXMesh-Gitterobjekt .

dwOptions [in]

Typ: DWORD

Kombination aus einem oder mehreren D3DXTANGENT-Flags .

Verwenden Sie NULL , um die folgenden Optionen anzugeben:

  • Gewichten Sie die normale Vektorlänge nach dem Winkel in Bogenmaßen, untergeordnet von den beiden Kanten, die den Scheitelpunkt verlassen.
  • Berechnen Sie orthogonale kartesische Koordinaten aus den UV-Texturkoordinaten.
  • Texturen werden nicht in U- oder V-Richtung umschlossen.
  • Partielle Ableitungen in Bezug auf Texturkoordinaten werden normalisiert.
  • Scheitelpunkte werden gegen den Uhrzeigersinn um jedes Dreieck angeordnet.
  • Verwenden Sie pro Vertex normale Vektoren, die bereits im Eingabegitter vorhanden sind.
  • Die Ergebnisse werden im ursprünglichen Eingabegitter gespeichert. Die Funktion schlägt fehl, wenn neue Scheitelpunkte erstellt werden müssen.

Rückgabewert

Typ: HRESULT

Wenn die Funktion erfolgreich ist, wird der Rückgabewert S_OK. Wenn die Funktion fehlschlägt, kann der Rückgabewert einer der folgenden sein: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

Bemerkungen

Diese Funktion ruft einfach D3DXComputeTangentFrameEx mit den folgenden Eingabeparametern auf:

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

Singularitäten werden nach Bedarf durch Gruppieren von Kanten und Teilungsvertices behandelt. Wenn Scheitelpunkte aufgeteilt werden müssen, schlägt die Funktion fehl. Der berechnete Normalvektor an jedem Scheitelpunkt wird immer normalisiert, um eine Einheitslänge zu haben.

Die robusteste Lösung zum Berechnen orthogonal kartesischer Koordinaten besteht darin, keine Flags D3DXTANGENT_ORTHOGONALIZE_FROM_U und D3DXTANGENT_ORTHOGONALIZE_FROM_V festzulegen, sodass orthogonale Koordinaten aus beiden UV-Texturkoordinaten berechnet werden. Wenn in diesem Fall jedoch U oder V 0 ist, berechnet die Funktion orthogonale Koordinaten mit D3DXTANGENT_ORTHOGONALIZE_FROM_V bzw. D3DXTANGENT_ORTHOGONALIZE_FROM_U.

Anforderungen

Anforderung Wert
Header
D3DX9Mesh.h
Bibliothek
D3dx9.lib

Siehe auch

Gitterfunktionen

D3DXComputeTangentFrameEx

D3DXTANGENT