Функция D3DXComputeTangentFrame
Вычислить тангенсные, бинормальные и нормальные векторы для сетки.
Синтаксис
HRESULT D3DXComputeTangentFrame(
_In_ ID3DXMesh *pMesh,
_In_ DWORD dwOptions
);
Параметры
-
pMesh [in]
-
Тип: ID3DXMesh*
Указатель на входной объект сетки ID3DXMesh .
-
dwOptions [in]
-
Тип: DWORD
Сочетание одного или нескольких флагов D3DXTANGENT .
Используйте значение NULL , чтобы указать следующие параметры:
- Вес нормальной длины вектора на угол в радианах, вложенных двумя краями, выходящими из вершины.
- Вычислить ортогональные декартовые координаты из координат текстуры UV.
- Текстуры не упаковываются в направлениях U или V
- Частичные производные относительно координат текстуры нормализуются.
- Вершины упорядочены в направлении против часовой стрелки вокруг каждого треугольника.
- Используйте векторы нормали для каждой вершины, которые уже присутствуют во входной сетке.
- Результаты будут храниться в исходной входной сетке. Если потребуется создать новые вершины, функция завершится ошибкой.
Возвращаемое значение
Тип: HRESULT
Если функция выполнена успешно, возвращаемое значение будет S_OK. Если функция завершается сбоем, возвращаемое значение может быть одним из следующих: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA E_OUTOFMEMORY.
Комментарии
Эта функция просто вызывает D3DXComputeTangentFrameEx со следующими входными параметрами:
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);
Сингулярности обрабатываются по мере необходимости путем группировки ребер и разделения вершин. Если необходимо разделить какие-либо вершины, функция завершится ошибкой. Вычисленный нормальный вектор на каждой вершине всегда нормализован до единицы длины.
Наиболее надежное решение для вычисления ортогональных декартовых координат — не устанавливать флаги D3DXTANGENT_ORTHOGONALIZE_FROM_U и D3DXTANGENT_ORTHOGONALIZE_FROM_V, чтобы ортогональные координаты вычислялись из обеих координат УФ-текстуры. Однако в этом случае, если значение U или V равно нулю, функция вычисляет ортогональные координаты, используя D3DXTANGENT_ORTHOGONALIZE_FROM_V или D3DXTANGENT_ORTHOGONALIZE_FROM_U соответственно.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|
См. также раздел