Compartir a través de


Función D3DXComputeTangentFrame

Calcular tangente, binormal y vectores normales para una malla.

Sintaxis

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

Parámetros

pMesh [in]

Tipo: ID3DXMesh*

Puntero a un objeto de malla ID3DXMesh de entrada.

dwOptions [in]

Tipo: DWORD

Combinación de una o varias marcas D3DXTANGENT .

Use NULL para especificar las siguientes opciones:

  • Ponderar la longitud normal del vector por el ángulo, en radianes, subtendida por los dos bordes dejando el vértice.
  • Calcula las coordenadas cartesianas ortogonales de las coordenadas de textura UV.
  • Las texturas no se encapsulan en direcciones U o V
  • Los derivados parciales con respecto a las coordenadas de textura se normalizan.
  • Los vértices se ordenan en una dirección en sentido contrario a las agujas del reloj alrededor de cada triángulo.
  • Use vectores normales por vértice ya presentes en la malla de entrada.
  • Los resultados se almacenarán en la malla de entrada original. Se producirá un error en la función si es necesario crear nuevos vértices.

Valor devuelto

Tipo: HRESULT

Si la función se ejecuta correctamente, el valor devuelto se S_OK. Si se produce un error en la función, el valor devuelto puede ser uno de los siguientes: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

Comentarios

Esta función simplemente llama a D3DXComputeTangentFrameEx con los siguientes parámetros de entrada:

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

Las singularidades se controlan según sea necesario mediante la agrupación de bordes y la división de vértices. Si es necesario dividir algún vértice, se producirá un error en la función. El vector normal calculado en cada vértice siempre se normaliza para tener longitud de unidad.

La solución más sólida para calcular coordenadas cartesianas ortogonales es no establecer marcas D3DXTANGENT_ORTHOGONALIZE_FROM_U y D3DXTANGENT_ORTHOGONALIZE_FROM_V, por lo que las coordenadas ortogonales se calculan a partir de ambas coordenadas de textura UV. Sin embargo, en este caso, si U o V es cero, la función calculará las coordenadas ortogonales mediante D3DXTANGENT_ORTHOGONALIZE_FROM_V o D3DXTANGENT_ORTHOGONALIZE_FROM_U respectivamente.

Requisitos

Requisito Value
Encabezado
D3DX9Mesh.h
Biblioteca
D3dx9.lib

Consulte también

Funciones de malla

D3DXComputeTangentFrameEx

D3DXTANGENT