D3DXComputeTangentFrame-Funktion

Berechnen sie Tangens,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-Gittermodellobjekt.

dwOptions [ In]

Typ: DWORD

Kombination aus mindestens einem D3DXTANGENT-Flag.

Verwenden Sie NULL, um die folgenden Optionen anzugeben:

  • Gewichten Sie die normale Vektorlänge nach dem Winkel im Bogenmaß, der von den beiden Kanten, die den Scheitelpunkt verlassen, unterstützt wird.
  • Berechnen Sie orthogonale kartesische Koordinaten aus den UV-Texturkoordinaten.
  • Texturen sind nicht in U- oder V-Richtungen umschlossen.
  • Partielle Ableitungen in Bezug auf Texturkoordinaten werden normalisiert.
  • Scheitelpunkts werden gegen den Uhrzeigersinn um jedes Dreieck herum geordnet.
  • Verwenden Sie normale Vektoren pro Scheitelpunkt, die bereits im Eingabegitternetz vorhanden sind.
  • Die Ergebnisse werden im ursprünglichen Eingabegitter gespeichert. Die Funktion erzeugt einen Fehler, wenn neue Scheitelungen erstellt werden müssen.

Rückgabewert

Typ: HRESULT

Wenn die Funktion erfolgreich ist, ist der Rückgabewert S _ OK. Wenn die Funktion fehlschlägt, kann der Rückgabewert einer der folgenden sein: D3DERR _ INVALIDCALL, D3DXERR _ INVALIDDATA, E _ OUTOFMEMORY.

Hinweise

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 Teilen von Scheitelpunkt behandelt. Wenn Scheitelungen aufgeteilt werden müssen, kann die Funktion nicht verwendet werden. Der berechnete Normalvektor an jedem Scheitelpunkt wird immer normalisiert, um eine Einheitenlänge zu haben.

Die stabilste Lösung zum Berechnen von orthogonalen kartesischen Koordinaten besteht in der Nicht-Kennzeichnung von D3DXTANGENT _ ORTHOGONALIZE FROM you und _ _ D3DXTANGENT _ ORTHOGONALIZE FROM V, sodass _ _ orthogonale Koordinaten aus beiden UV-Texturkoordinaten berechnet werden. Wenn jedoch in diesem Fall U oder V null ist, berechnet die Funktion orthogonale Koordinaten mithilfe von D3DXTANGENT ORTHOGONALIZE FROM V bzw. _ _ _ D3DXTANGENT _ ORTHOGONALIZE _ FROM _ U.

Anforderungen

Anforderung Wert
Header
D3DX9Mesh.h
Bibliothek
D3dx9.lib

Weitere Informationen

Mesh-Funktionen

D3DXComputeTangentFrameEx

D3DXTANGENT