3 UVAtlasComputeIMTFromTexture
Chuck Walbourn редактировал(а) эту страницу 2022-01-20 17:45:00 -08:00
UVAtlas

Calculates per-triangle IMT's from a texture mapped onto a mesh, to be used as input to UVAtlasCreate or UVAtlasPartition.

HRESULT UVAtlasComputeIMTFromTexture(
    const XMFLOAT3* positions, const XMFLOAT2* texcoords, size_t nVerts,
    const void* indices, DXGI_FORMAT indexFormat, size_t nFaces,
    const float* pTexture, size_t width, size_t height,
    DWORD options,
    std::function<HRESULT(float percentComplete)> statusCallBack,
    float* pIMTArray);

Parameters

pTexture: A float array of width * height * 4 in size. This data should be in DXGI_FORMAT_R32G32B32A32_FLOAT format. You can use DirectXTex functions to convert arbitrary format textures to this form.

options: A combination of UVATLAS_IMT flags

  • UVATLAS_IMT_DEFAULT - The default is no wrapping in either U or V.
  • UVATLAS_IMT_WRAP_U - Wrap in the U dimension
  • UVATLAS_IMT_WRAP_V - Wrap in the V dimension
  • UVATLAS_IMT_WRAP_UV - Wrap in both the U and V dimensions. pIMTArray: The resulting IMT data which is passed to UVAtlasCreate or UVAtlasPack which is an array of 3 float values per face.

Remarks

Given a texture that maps over the surface of the mesh, the algorithm computes the IMT for each face. This will cause triangles containing lower-frequency signal data to take up less space in the final texture atlas when parameterized with the UVAtlas functions. The texture is assumed to be interpolated over the mesh bi-linearly.