SmApiUsd.h#
Fully qualified name: SM_API_USD/inc/SmApiUsd.h
File members: SM_API_USD/inc/SmApiUsd.h
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
/******************************************************************/
#ifndef _SM_API_USD_H_
#define _SM_API_USD_H_
#include "SmApiUsdConfig.h"
#include <SmApiTessellationParams.h>
#include <SmMessages.h>
#include <SmTypes.h>
#include <SmTArray.h>
#include <cstdint>
#include <string>
#include <vector>
class SmBrep;
class SmPolyBrep;
class SmContext;
struct SmApiUsdBrepImportResult
{
std::string m_sPrimPath;
std::int64_t m_iPackedBrepIndex = -1;
SmBrep * m_pBrep = nullptr;
SmStatus m_sStatus = SM_ERR;
std::string m_sMessage;
};
struct SmApiUsdMeshTessellationResult
{
std::string m_sPrimPath;
std::int64_t m_iPackedBrepIndex = -1;
std::string m_sMeshPath;
SmStatus m_sStatus = SM_ERR;
std::size_t m_lFailedFaceCount = 0;
std::size_t m_lPointCount = 0;
std::string m_sMessage;
};
struct SmApiUsdBrepArrayHealResult
{
std::string m_sPrimPath;
std::string m_sLayer;
SmStatus m_sStatus = SM_ERR;
std::size_t m_lBrepCount = 0;
std::string m_sMessage;
};
// ---------------------------------------------------------------------------
// Plugin management
// ---------------------------------------------------------------------------
SM_API_USD_EXPORT SmStatus SmApiUsdEnsurePluginRegistered();
// ---------------------------------------------------------------------------
// USD -> SMLib
// ---------------------------------------------------------------------------
SM_API_USD_EXPORT SmStatus SmApiUsdImportBreps
(
const char * pFileName,
std::vector<SmBrep*> & rSmBreps,
SmBoolean bHealerIsEnabled = TRUE
);
SM_API_USD_EXPORT SmStatus SmApiUsdImportBreps
(
const char * pFileName,
std::vector<SmBrep*> & rSmBreps,
SmBoolean bHealerIsEnabled,
SmBoolean bAllowPartial,
std::vector<SmApiUsdBrepImportResult> * pImportResults
);
SM_API_USD_EXPORT SmStatus SmApiUsdImportBrep
(
const char * pFileName,
const char * pPrimPath,
SmBrep *& rpSmBrep,
SmBoolean bHealerIsEnabled = TRUE
);
// ---------------------------------------------------------------------------
// UsdGeomMesh <-> SmPolyBrep
// ---------------------------------------------------------------------------
SM_API_USD_EXPORT SmStatus SmApiUsdImportMeshes
(
const char * pFileName,
std::vector<SmPolyBrep*> & rSmPolyBreps
);
SM_API_USD_EXPORT SmStatus SmApiUsdImportMesh
(
const char * pFileName,
const char * pPrimPath,
SmPolyBrep *& rpSmPolyBrep
);
// ---------------------------------------------------------------------------
// SMLib -> USD
// ---------------------------------------------------------------------------
SM_API_USD_EXPORT SmStatus SmApiUsdExportBreps
(
const char * pFileName,
std::vector<SmBrep*> & rSmBreps,
SmBoolean bExportUVCurves = TRUE,
SmBoolean bBoundUnboundedFaceRanges = FALSE
);
SM_API_USD_EXPORT SmStatus SmApiUsdExportBrep
(
const char * pFileName,
SmBrep * pSmBrep,
SmBoolean bExportUVCurves = TRUE,
SmBoolean bBoundUnboundedFaceRanges = FALSE
);
SM_API_USD_EXPORT SmStatus SmApiUsdExportMeshes
(
const char * pFileName,
std::vector<SmPolyBrep*> & rSmPolyBreps
);
SM_API_USD_EXPORT SmStatus SmApiUsdExportMesh
(
const char * pFileName,
SmPolyBrep * pSmPolyBrep
);
// ---------------------------------------------------------------------------
// USD <-> SMLib (append to existing stage)
// ---------------------------------------------------------------------------
SM_API_USD_EXPORT SmStatus SmApiUsdAppendBreps
(
const char * pFileName,
std::vector<SmBrep*> & rSmBreps,
SmBoolean bExportUVCurves = TRUE,
SmBoolean bBoundUnboundedFaceRanges = FALSE
);
SM_API_USD_EXPORT SmStatus SmApiUsdAppendMeshes
(
const char * pFileName,
std::vector<SmPolyBrep*> & rSmPolyBreps
);
// ---------------------------------------------------------------------------
// Scene tessellation
// ---------------------------------------------------------------------------
SM_API_USD_EXPORT SmStatus SmApiUsdTessellateFile
(
const char * pInputFile,
const char * pOutputFile,
const SmTessellationParams & crParams,
SmBoolean bHealerIsEnabled,
int iThreadCount,
std::vector<SmApiUsdMeshTessellationResult> & rResults
);
SM_API_USD_EXPORT SmStatus SmApiUsdHealFile
(
const char * pInputFile,
const char * pOutputFile,
int iThreadCount,
std::vector<SmApiUsdBrepArrayHealResult> & rResults
);
#endif // _SM_API_USD_H_