SmApiUsdTessellate.h#

Fully qualified name: SM_API_USD/inc/SmApiUsdTessellate.h

File members: SM_API_USD/inc/SmApiUsdTessellate.h

// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

/******************************************************************/
#ifndef _SM_API_USD_TESSELLATE_H_
#define _SM_API_USD_TESSELLATE_H_

#include "SmApiUsdConfig.h"
#include <SmMessages.h>
#include <SmTypes.h>
#include <SmApiTessellationParams.h>

#include "UsdBrepHeaders.h" // pxr headers with warning suppression (BREP_USD_DATA)
#include <pxr/base/gf/vec3f.h>
#include <pxr/base/tf/token.h>
#include <pxr/base/vt/array.h>
#include <pxr/usd/sdf/path.h>

#include <cstdint>
#include <string>
#include <vector>

struct SmApiUsdTessellatedBrep
{
    std::int64_t                   m_iPackedBrepIndex = -1;
    SmStatus                       m_sStatus = SM_ERR;
    std::string                    m_sMessage;
    pxr::VtIntArray                m_sFailedFaces;
    SmStatus                       m_sBoundaryStatus = SM_SUCCESS;
    pxr::VtArray<pxr::GfVec3f>     m_sBoundaryPoints;
    pxr::VtIntArray                m_sBoundaryVertexCounts;
    pxr::VtArray<pxr::GfVec3f>     m_sExtent;
    pxr::VtArray<pxr::GfVec3f>     m_sPoints;
    pxr::VtIntArray                m_sFaceVertexCounts;
    pxr::VtIntArray                m_sFaceVertexIndices;
    pxr::VtArray<pxr::GfVec3f>     m_sNormals;
    pxr::VtIntArray                m_sNormalsIndices;
    pxr::TfToken                   m_sNormalsInterpolation;
    pxr::TfToken                   m_sSubdivisionScheme;
    pxr::VtArray<pxr::VtIntArray>  m_sSubsetIndices;
    pxr::VtArray<pxr::SdfPath>     m_sSubsetMaterialPaths;
    pxr::SdfPath                   m_sMaterialPath;
};

SM_API_USD_EXPORT SmStatus SmApiUsdTessellateBrepArray
(
    const pxr::UsdPrim                     & crBrepArray,
    const SmTessellationParams             & crParams,
    SmBoolean                                bHealerIsEnabled,
    double                                   dBoundaryAngleTolDeg,
    std::vector<SmApiUsdTessellatedBrep>   & rResults
);

#endif // _SM_API_USD_TESSELLATE_H_