Connect SDK Changelog

1.0.0

Core

Features

  • All Nucleus functionality (Omni Client Library and Omni USD Resolver) is now compile-time optional (OM-121498)

  • Added a new Feature.h containing precompiler definitions for optional features (OM-121498)

    • This removes the need for special defines in Connector build configuration to control the features

    • This is included from Api.h automatically, so no code changes are required

    • Gated all Nucleus functionality behind an OMNICONNECTCORE_WITH_NUCLEUS feature and withNucleus() runtime function

    • Gated all Python functionality behind an OMNICONNECTCORE_WITH_PYTHON feature

Fixes

  • Fixed the fallback logic for name validation functions when bootstring encoding via omni_transcoding fails (OMPE-4039)

    • We now fallback to a TfMakeValidIdentifier-like function, which is slightly improved for handling numeric prefixed names

DevTools

Features

  • Added compile-time option to gate Nucleus functionality (OM-121498)

    • Use --set-token nucleus:on or --set-token nucleus:off when building Connect SDK

    • Connectors do not need extra flags, select the correct package and connect-sdk-options.lua or omni/connect/core/Feature.h will inform the client if Nucleus features are available

  • Added new packages for the default USD flavor that are with/without Nucleus and with/without Python (OM-121498)

  • Added a new repo_install_sdk tool to download and install Connect SDK binaries & assemble runtime dependencies into a dedicated folder (OM-124446)

    • The tool installs minimal necessary runtime dependencies for each flavor of Connect SDK.

    • It is intended to produce a fully automated distro that can be used directly in a Connector’s deployment strategy.

    • See Connect Samples repo.toml & prebuild.toml for a working example, or read the docs for the new tool.

Fixes

  • Updated to latest licensing terms (OM-123242, OM-118634, OM-123163)

  • Disabled Docker by default to simplify bootstrapping for external users (OM-121731, OM-123164)

  • Removed need for GPUs during CI tests (OM-121505)

  • Fixed nopy packaging script (OM-121498)

  • Fixed connect_build premake module when building on a path with spaces (OM-94075)

  • Python stubs (.pyi files) are generated only for the modules we actually run/test/deploy (OM-124446)

  • Fixed the config.packman.xml config that ships in the public packages (OM-124758)

Breaking Changes

  • The package names have changed. Any existing packman configs will need to be updated (OM-121498)

    • The nopy.minimal package feature name has been renamed to simply nopy

    • The nucleus package feature name has been added (e.g nucleus-on or nucleus-off)

    • The kit package feature name has been removed

  • The connect_build premake functions no longer install files to the target build directory (OM-124446)

    • Use the new repo install_sdk tool instead. See Connect Samples repo.toml & prebuild.toml for a working example or read the docs for the new tool

  • The testing strategy for Connect SDK has changed (OM-124446)

    • All unittests remain the same, but the runtime directory is now generated using the repo_install_sdk tool rather than multi-directory configuration

    • This provides test coverage for the tool itself, and results in per-flavor testing that is more consistent with an actual deployed runtime

Documentation

  • Added a brand new Getting Started guide (OM-121816, OM-123677)

    • Featuring new “Try the Connect Samples”, “Integrate Connect SDK and Build a Connector”, “Test a Connector”, and “Debug a Connector” articles

  • Re-organized the existing articles & guides to help clarify the expected developer journey (OM-121816)

  • Added license notices for the Omniverse EULA and 3rd Party license notices for OSS (OM-123242, OM-118634, OM-123163)

  • Added an article for the new repo_install_sdk tool (OM-124446)

  • Updated the README & html landing page with download instructions for Connect SDK packages (OM-124446)

  • Updated component details, runtime file layouts, and contributing guide to explain optional Nucleus flavors (OM-121816, OM-124739)

  • Updated C++ and Python API docs to explain optional Nucleus and RTX specific features more clearly (OM-124031)

Dependencies

Runtime Deps

  • OpenUSD pxr-23_11 (same)

    • This is the default flavor, refer to deps/build-flavors.toml for other supported flavors.

  • Carbonite 167.3 (from 166.2)

  • Omni Client Library 2.47.1 (from 2.46.0)

  • Omni USD Resolver 1.42.3 (same)

  • Omni Asset Validator 0.11.1 (same)

  • Omni Transcoding 0.1.0 (from 0.0.1)

  • fmt 7.0.3 (same)

  • pybind 2.11.1 (same)

Dev Tools

  • packman 7.21.1 (same)

  • repo_tools (all to latest supported)

  • doctest 2.4.5+nv1-3

  • cxxopts 2.2.0

  • MSVC 2019-16.11

  • Premake 5.0.0-beta2

  • Python 3.10.14+nv2 & 3.9.19+nv2

0.8.0

Core

Features

  • Added getValidPropertyName() for authoring a UsdProperty on a given UsdPrim (OM-117239)

  • Added persistent I/O preferences via saveExportPreferences and saveImportPreferences() (OM-118627)

    • Only options explicitly marked with storePreference = true will be saved.

  • Validate all python unittest output using the Omni Asset Validator python module (OM-117309)

Fixes

  • Fixed a hang that could occur when using Verbose logging for the ‘omni.client’ channel (OM-119705)

  • Fixed a unittest failure when user.config.json is missing (OM-118628)

  • Fixed static analysis warnings (OM-121566)

  • Fixed GCC 11 compilation issues (OM-121731)

    • Note GCC 11 is not officially supported in that we don’t have CI/CD coverage for it.

    • Note any GCC 11 build would still need to set _GLIBCXX_USE_CXX11_ABI=0

Kit

Warning

The Kit C++ library and Python module are deprecated, and will be removed in the next major version.

UI

Warning

The UI C++ library and Python module are deprecated, and will be removed in the next major version.

Fixes

  • Fixed a bug with the usdEncoding default fallback to usdc when the USD_DEFAULT_FILE_FORMAT environment variable is unset (OM-123518)

  • Improved UI test handling of large directories (OM-118628)

Breaking Changes

  • Removed About Window icon support to avoid a PIL dependency (OM-123154)

    • No action is required, but the /omni.connect.ui/about/icon setting will be ignored.

DevTools

Features

  • Identified public vs internal build flavors (OM-119517)

  • Improved default CI templates for use with repo_ci (OM-121412)

Fixes

  • Updated Linux tests for latest CI runner configuration, including the default nvks runners to avoid timeout issues (OM-121845, OM-121412)

  • Prepare codebase for a public mirror (OM-123162, OM-121735, OM-121412, OM-123164)

Breaking Changes

  • Removed Scene Optimizer vendoring and premake helpers (OM-122236)

    • Connectors requiring Scene Optimizer will need to configure it directly.

  • Disabled licensing in connect-defaults.toml (OM-123164)

    • Internal NVIDIA Connectors should re-enable it in their own repo.toml

Documentation

  • Improved USD Authoring guide to explain valid and unique naming in the context of both UsdPrim and UsdProperty naming (OM-117239)

Dependencies

Runtime Deps

  • OpenUSD pxr-23_11 (same)

    • This is the default flavor, refer to deps/build-flavors.toml for other supported flavors.

  • Kit Kernel 106.0/f02ce5c7 (from 106.0/5f2fa703)

  • Carbonite 166.2 (from 160.8)

  • Omni Client Library 2.46.0 (from 2.45.0)

  • Omni USD Resolver 1.42.3 (from 1.42.1)

  • Omni Asset Validator 0.11.1 (from 0.11.0)

  • Omni Transcoding 0.0.1 (updated hash)

  • fmt 7.0.3 (same)

  • pybind 2.11.1 (from 2.9.2)

Dev Tools

  • packman 7.21.1 (from 7.18)

  • repo_tools (all to latest supported)

  • doctest 2.4.5+nv1-3

  • cxxopts 2.2.0

  • linbuild 1.20

  • MSVC 2019-16.11

  • Premake 5.0.0-beta2

  • Python 3.10.14+nv2 & 3.9.19+nv2

0.7.0

Core

Features

  • Added support for setting UTF-8 Display Names from any USD flavor, including those too old to have the metadata registered (OM-110288)

  • Updated UsdPrim name validation functions to use omni_transcoding under the hood (OM-118452)

    • This is a new library dependency that provides lossless encoding/decoding of non-compliant identifiers

  • Added exportLayer to perform a SaveAs-like behavior (OM-118635)

  • Added function to compute indices for PrimvarData (OM-117036)

  • Added createMdlShaderInput authoring function (OM-109462)

  • Added diffuse, normal, and ORM texture map authoring functions for OmniPBR materials (OM-109462)

  • Added OMNICONNECTCORE_INIT macro to acquire the carbonite framework and startup the core library (OM-119288)

    • This replaces the need for OMNI_CORE_INIT in client Connectors

  • Added /app/waitForDebugger bool setting to the core module, which will spin and wait for a debugger to attach (OM-101063)

    • This matches behavior of Kit apps

  • Added configurable Import/Export Options as ISettings with accessors as IDictionary, VtDictionary, and SdfFileFormatArguments (OM-98676, OM-118628)

  • Respect USD_DEFAULT_FILE_FORMAT environment variable to drive the usdEncoding export option (OM-87077, OM-119104, OM-119426)

    • There is an automatic fallback to usdc if the env var is unset

  • Added enableOutputStream convenience around ILogging, since it does not have its own python bindings (OM-97381, OM-97107)

  • Added support for OpenUSD v23.11, which is now the default recommended flavor (OM-117444)

  • Added support for SideFx Houdini USD flavors covering H19.5 and 20.0 (OM-109725)

  • Added support for Autodesk 3dsMax USD flavors covering Max 2023 and 2024 (OM-95454)

Fixes

  • Forwarding eOmniClientLogLevel_Debug logs as omni::log::eVerbose (OM-116641)

  • Deprecated several unsafe shutdown functions which could cause certain client applications to exit unexpectedly (OM-119285)

  • Changed logging channel for the python bindings from omni.connect.core to omni.connect.core.py (OM-118628)

    • This is a required side effect of using carb plugins from the bindings module for the IDictionary I/O Option accessors.

Breaking Changes

  • Added omni_transcoding dependency, this new shared library is a required link & runtime component (OM-118452)

  • OpenUSD v23.08 is no longer officially supported, clients using this flavor should update to v23.11 if possible (OM-117444)

    • Note v23.08 would still build, we just aren’t providing precompiled binaries or testing it regularly an more.

  • Python 3.7 is no longer supported, including nv-usd 20.08 and Maya 2022 flavors (OM-119514)

Kit

Features

  • Added Kit 106.0 support (OM-120531, OM-117407)

Breaking Changes

  • Kit 105.1 and 105.2 are no longer supported. Only Kit 106.0 remains (OM-119514)

UI

Features

  • Added dynamic, auto-generated Import/Export Option side panels based on the core settings (OM-98676, OM-119428)

DevTools

Features

  • Added more Omni Asset Validator tests to the core test suite (OM-114746)

  • Added scoped logging, TfError, and TfDiagnostics checks to reduce test suite logging spam and assert expected logging (OM-97381, OM-97107, OM-120177)

  • Added repo_verify_deps tool and optional CI checks for the default flavors (OM-116464, OM-116464)

  • Updated repo_connect_client_config to allow kit registry substitution (OM-117407)

  • Completed transition to Gitlab CI (OM-103043, OM-109164, OM-99391, OM-113495, OM-115706)

  • All Connect SDK, Carbonite, and Client Library headers are now C++20 source compatible on Windows (OVCC-1505)

    • Note we do not provide precompiled C++20 binaries, we still use C++17 as the Omniverse wide min-spec, but it is now possible to compile a client Connector using C++20 on Windows.

Fixes

  • Added security hardening and control-flow-guard build flags (used for Connect SDK itself, but not set by default in the connect_build module) (OSEC-1093)

  • Added ShadowedVariables flag to the connect_build module, enabling -Wshadow for Linux builds (OM-119472)

  • Added 4003 and 4275 to the list of disabled warnings on Windows in the connect_build module (due to pxr-23_11 source code changes) (OM-117444)

  • Added TBB_SUPPRESS_DEPRECATED_MESSAGES define to the connect_build module (due to pxr-23_11 source code changes) (OM-117444)

  • Set repo_build setting to patch __cplusplus on Windows (OVCC-1505)

  • Removed debug symbol scraping via repo_symstore (OM-103043)

  • Fixed static configuration for test suites so they behave more like a client Connector (OM-97107)

  • Optimized UI testing to prevent some race conditions (OM-118491, OM-120157)

  • Updated test suites to creating more isolated tmp files and to ensure cleanup on Nucleus servers (OM-120373, OM-115962)

Dependencies

USD Deps

  • OpenUSD pxr-23_11 (from pxr-23_08)

    • This is the default flavor, refer to deps/build-flavors.toml for other supported flavors.

  • Omni USD Resolver 1.42.1 (from 1.40.0)

  • Omni Asset Validator 0.11.0 (from 0.10.1)

  • Omni Transcoding 0.0.1 (new)

Kit 106.0 Deps

Note: Kit 106.0 builds are for internal use only, they are not available publicly.

  • Carbonite 160.8 (from 160.0)

  • Omni Client Library 2.45.0 (from 2.42.0)

  • Kit Kernel 106.0/5f2fa703 (from 105.2/e6e264d6)

  • Omni Scene Optimizer 106.0.3 (from 105.2.8)

    • Requires USD nv-22_11

  • fmt 7.0.3

Dev Tools

  • packman 7.18 (from 7.15.1)

  • repo_tools (all to latest supported)

  • pybind 2.9.2

  • doctest 2.4.5+nv1-3

  • cxxopts 2.2.0

  • linbuild 1.20

  • MSVC 2019-16.11

  • Premake 5.0.0-beta2

Documentation

  • Updated Plugins vs Applications guide to clarify the different approaches to Connectors and explain the role of OMNICONNECTCORE_INIT (OM-119286)

  • Updated USD Authoring guide to explain omni_transcoding and how UTF-8 vs Ascii can be handled with and without OpenUSD v24.03 (OM-118452, OM-119470)

  • Updated Getting Started guide to show the new omni_transcoding dependency (OM-119470)

  • Updated Getting Started guide to explain the /app/waitForDebugger setting (OM-101063)

  • Re-sorted core python functions for better discoverability in the html docs (OM-109807)

0.6.0

Core

Features

  • Switched default OpenUSD build to pxr-23_08 (OMFP-3618)

  • Added templated PrimvarData class to provide avoid common mistakes with respect to UsdGeomPrimvar data handling (OM-113956)

  • Added overloads for defineCamera, definePolyMesh, defineDomeLight, and defineRectLight that accepts a parent UsdPrim and name to describe the prim location (OM-106791)

    • All future define functions (including the three listed below) will come with similar overloads

  • Added definePointCloud for authoring UsdGeomPoints prims (OM-113006)

  • Added defineLinearBasisCurves and defineCubicBasisCurves for authoring 3d curve scene description as UsdGeomBasisCurves (OM-104036)

    • Note both functions define UsdGeomBasisCurves, but we have separated linear vs cubic as its a common source of confusion for client Connectors.

  • Improved setLayerAuthoringMetadata so that it can be called without needing to call startup() (primarily for use in CAD Converter running inside Kit) (OMFP-2563)

  • Added pybind11 casters for OpenUSD to assist with USD bindings interop (OM-115043)

    • These were used internally already, but they have been made public for use in client Connectors that want to bind functions accepting OpenUSD data types.

    • We have only provided casters for the limited subset of OpenUSD API used in our public functions.

  • Added pybind11 caster for carb::cpp::optional (OM-113957).

Fixes

  • Fixed all define functions to set the type name and specifier in the current edit target layer (OM-103362)

  • Fixed UsdPreviewSurface output names when using the defineMaterial functions (OM-109462)

  • Prevented authoring cameras if the provided camera attributes would have failed (OM-108901)

  • Changed define function failure case log messages from warning to error (OM-109336)

  • Fixed flakey LiveSession tests (OM-108704)

  • Fixed incorrect type identifiers in python bindings (OM-104036)

    • This has no effect other than for help messages and IntelliSense

  • Fixed a carb ILogging plugin loading conflict issue in the unittests (OM-115554)

  • Added test coverage for UTF-8 display names (OM-108231)

  • Added c++ test coverage for createStage (OM-113956)

  • Improved test coverage for definePolyMesh (OM-106791)

  • Fixed LiveChannel test failure on high-load Nucleus servers (OM-116645)

Breaking Changes

  • OpenUSD pxr-23_05 is no longer officially supported. The code is still source compatible so custom builds can be made as needed (OMFP-3618).

    • If you were using this build, please switch to pxr-23_08, it is very unlikely that code changes will be needed to do so.

  • USD : All edit/write functions accepting UsdPrim& or const UsdPrim& have been changed to accept UsdPrim instead (OM-114917).

    • This is being done for alignment across the API, to simplify client side code, while the project is still (primarily) internal only.

    • We have not provided a deprecation path as normal, as so many functions changed, and the prior functions would have required a client side pattern that is still accepted by the new functions. Only a recompile should be required.

    • Note read-only functions still take const UsdPrim&.

  • Prefer carb::cpp::optional rather than nullptr in most public functions and methods (OM-113957).

    • This is being done for alignment across the API, to simplify client side code, while the project is still (primarily) internal only.

    • We have not provided a deprecation path as normal, as there is considerable overlap with the UsdPrim breaking change described above.

    • Any existing client side code using the argument should still be accepted by the new functions. Code changes should only be necessary if nullptr was explicitly passed in.

    • The one unchanged pattern is for optional strings (e.g. checkpoint comments, texture paths), which remain as const char* with nullptr indicating an opt-out.

  • Deprecated v0.5 definePolyMesh entry points in favor of the new functions that accept std::optional<const PrimvarData> arguments (OM-113956)

    • For the c++ API this is not a breaking change. The old signatures are still available, but deprecated. They will be removed in a future release.

    • For the Python API this is a breaking change. We felt that pure python adoption of these functions is low enough (one internal use case) that the tech dept to make this backwards compatible was not justifiable.

Kit

Features

  • Use public prod registries by default, with automatic fallback to internal registries (OMFP-1666)

UI

Features

  • Added Live UIs (OM-85097)

    • For internal use only, as this requires a Kit 105.2 pre-release

  • Set omni.kit.render.core.compatibilityMode = true to suppress unwanted rtx features and ensure we work on non-NVIDIA GPUs (OM-114219)

Fixes

  • Added File Exporter/Importer context menu test coverage (OM-114455)

  • Improved UI testing to simulate mouse and keyboard inputs (OM-114455)

Dev Tools

Features

  • Switched to Kit 105.1 by default (from 105.0) (OM-108701, OM-84357)

  • Added build flavors for Kit 105.2 using any of py3.7, 3.9, or 3.10 (OM-114069)

  • Added build flavors for Maya 2022 (py3.7), 2023 (py3.9), and 2024 (py3.10) (all of which require Kit 105.2) (OM-95452)

  • Added Omni Scene Optimizer as a vendored dependency via connect_build.use_scene_optimizer() (OM-95742)

    • Requires a USD nv-22_11 / Kit 105.1 build flavor as Scene Optimizer does not currently support multiple runtimes.

  • Added Omni Asset Validator as a vendored dependency and UsdTestCase.assertIsValidUsd which uses the omni.asset_validator.core.ValidationEngine (OM-114746)

  • Replaced omni_config_cpp with Carbonite equivalent (omni/extras/OmniConfig.h) (OM-108701, OM-84357)

  • Added tools/repoman/connect-defaults.toml so client Connectors can inherit common repo.toml default configuration (OM-113276)

  • Updated repo_version_header to be usable by client Connector repos (OM-108758, OMFP-773)

    • This can be used to simplify c++ versioning macros and to generate a version.rc file to inject assembly info into Windows DLLs

  • Updated repo_connect_client_config with an option to substitute the python version using %PYTHON_VERSION% syntax (OM-95452)

  • Replaced repo_connect_kit_exts with repo_precache_exts (OM-101707, OM-98547)

    • The former is deprecated rather than removed. The later comes from Kit itself and does not require starting the application (and hence does not require any GPU).

  • Enforced code style via repo_format (OM-98050)

Fixes

  • Updated to latest patched python packages (OM-108701, OM-84357, OMFP-3498)

  • Fixed Omni Usd Resolver lib dependency issue in connect_build.use_connect_core() (OM-113395)

  • Fixed connect_build.use_usd() linking to boost_python on Linux (OM-113956)

  • Fixed build flavor specification in connect_build premake module to be specific per package (OM-115035)

  • Fixed VSCode python linting via Flake8, which was broken by a breaking change in VSCode itself (OM-116220)

Breaking Changes

  • Dropped support for Kit 105.0

Dependencies

USD Deps

  • OpenUSD pxr-23_08 (from pxr-23_05)

    • This is the default flavor, refer to deps/build-flavors.toml for other supported flavors.

  • Omni USD Resolver 1.40.0 (from 1.31.2)

  • Omni Asset Validator 0.10.1 (new)

Kit 105.1 Deps

  • Carbonite 158.5 (from 146.6)

  • Omni Client Library 2.38.12 (from 2.32.0)

  • Kit Kernel 105.1.2/de96b556 (from 105.0/ed961c5c)

    • Matching USD Explorer 2023.2.1

  • Omni Scene Optimizer 105.1.15 (new)

    • Requires USD nv-22_11

Kit 105.2 Deps

Note: Kit 105.2 builds are for internal use only, they are not available publicly.

  • Carbonite 160.0

  • Omni Client Library 2.42.0

  • Kit Kernel 105.2/e6e264d6

  • Omni Scene Optimizer 105.2.8

    • Requires USD nv-22_11

Dev Tools

  • packman 7.15.1 (from 7.6)

  • repo_tools (all to latest supported)

  • pybind 2.9.2

  • doctest 2.4.5+nv1-3 (from 2.4.5-1)

  • cxxopts 2.2.0

  • linbuild 1.20

  • MSVC 2019-16.11

Documentation

  • Added UTF-8 display name to USD Authoring guide (OM-108231)

  • Added configuration docs for repo_version_header (OM-112303)

  • Added a guide for writing custom applications (as opposed to DCC plugins) (OM-110636)

  • Added USD authoring guide for Primvars (OM-113956)

  • Updated runtime file listings for the latest runtime dependencies (OM-112280)

  • Improved TOC organization (OM-110636)

  • Improved Python API docs for overloaded functions (OM-106791)

  • Fixed missing Python.h API docs (OM-114103)

0.5.0

Core

Features

  • Added new LayerAlgo module with functions for saving layers & setting authoring/creator metadata consistently (OM-87108)

  • Added a new PrimAlgo module with functions for validating prim names, while respecting existing child names and avoiding collisions in a consistent & explicit manner as well as manipulating display name regardless of OpenUSD runtime (OM-101625, OM-101162)

    • Note the name validation differs from pxr::TfMakeValidIdentifier in how it handles numeric characters at the start of the value. We intend to propose the change hack to Pixar/OpenUSD (OM-108598)

  • Added new MeshAlgo module with definePolyMesh; a robust polygonal Mesh creation function (OM-97060)

    • This ensures that all aspects of the mesh are valid, authored in a single layer, and the strongest opinions in the current composition.

  • Added new CameraAlgo module with defineCamera, for authoring scene description from a GfCamera (OM-101161)

  • Added new LightAlgo module with defineDomeLight and defineRectLight functions (OM-85095, OM-98409)

  • StageAlgo: Added createStage and configureStage to assist with the creation of UsdStages with all expected stage metrics and metadata (OM-101152)

  • MaterialAlgo: Added functions to create materials and bind materials (OM-85215)

  • MaterialAlgo: Added functions to compute the effective surface shader for a given render context (OM-102503)

  • MaterialAlgo: Added defineOmniPbrMaterial and defineOmniGlassMaterial functions to help with creation of simple materials (OM-102503)

    • These define a material interface which drives both MDL and UsdPreviewSurface shaders. They are not intended for full-scale shading networks, but rather as a simple/basic material for e.g. common CAD use cases.

  • XformAlgo: Added defineXform function (OM-101152)

  • Live: Added LiveSession and LiveSessionInfo classes (OM-98403, OM-102710)

  • Nucleus: Added isUriWritable (OM-102710)

  • Nucleus: Added doesUriExist and deprecated uriExists in both c++ and python (OM-105997)

  • Carb: Added loadCarbPlugin signature that accepts a search path vector and deprecated the original more restrictive signature (OM-104056)

  • Settings: Added customizable python search paths via /app/python/extraPaths (OM-101152)

    • The Kit and UI modules already supported this setting, now the Core module does as well

  • Settings: Added /app/plugins/extraPaths (OM-104056)

    • Note that the 6 core plugins loaded during startup must exist on the default search path. The other search paths may be used to load any optional carb plugins (eg carb.scripting-python)

  • Settings : Added loadSettingsFromFile (OM-104056)

  • Logging: Added log forwarding to client Connectors via addLogConsumer (OM-85123)

  • Logging: Improved consistency of invalid prim authoring log messages (OM-103361)

Fixes

  • XformAlgo: Transform functions now reuse existing Matrix Xform Ops (OM-94098)

  • XformAlgo: Transform functions now translate provided precision to the expected precision using the minimal number of conversion (OM-103182)

  • XformAlgo: Ensure that the xformOpOrder is authored in the current layer if the xformOp value is authored (OM-106248)

  • StageAlgo: Changed saveStage to accept an UsdStagePtr l-value so that UsdStageRefPtr and UsdStageWeakPtr can be provided (OM-87108)

  • Python: Fixed false success during startup() if python was misconfigured (OM-104056)

  • Applied various security fixes (OM-102874)

  • Prefer const std::string& over const char* in all public functions (OM-98050)

    • In most cases we prefer to use std::string in our API, with a couple exceptions:

      • We use static constexpr const char* for public constants

      • We return const char* from functions when the value is hardcoded & lifetime is guaranteed

      • We pass const char* for optional string args

        • This may change to std::optional in the future, but we will provide a deprecation path rather than a breaking change

Breaking Changes

  • Changed signatures in many public functions to align on a common pattern for required string arguments (OM-98050)

    • Note this change is minimally invasive as most of the affected functions are not yet used outside of the Connect SDK codebase.

  • Renamed XformableAlgo to XformAlgo (OM-101152)

    • This is an unfortunate break since v0.4 broke the same xform functions. We have added functions to work with UsdGeomXform prims, thought the new name is more intuitive, and decided to make this break now before it is externally available.

  • The function signature for omni::connect::core::saveStage() has changed (OM-87108)

Kit

Features

  • Separated the .kit experience file (extension dependencies) from the .toml (settings) configuration (OM-104056)

  • Allow clients to provide their own omni.connect.client.kit experience file which will be used during startup (OM-104056)

    • This can be used to declare custom extension dependencies for a given client Connector

    • It does not need to redeclare the built-in extension dependencies, and should instead list omni.connect.kit (and optionally omni.connect.ui) as dependencies to inherit their upstream requirements.

Fixes

  • carbAppPath is now the same before and after calling omni::connect::kit::startup() (OM-104056)

  • Removed 6 duplicate carb plugin binaries from the default runtime layout (OM-104056)

  • Removed duplicate python binaries from the default runtime layout (OM-104056)

  • Most filesystem browsing in the default runtime layout is now more intuitive and consistent (OM-104056)

    • Kit’s carb plugins sit alongside the base carb plugins

    • The Carb and Kit python modules sit alongside the Connect SDK and OpenUSD modules

Breaking Changes

  • Unpacked Kit Kernel into our core runtime directories (OM-104056)

    • Clients using connect_build.use_connect_ui() or connect_build.use_connect_kit() should not need to make build changes, it is handled automatically.

    • Clients using their own bespoke build scripts will need to adapt to the new runtime file layout or configure the new “extraPaths” settings accordingly.

    • A full file listing of the default runtime layout is included in the Getting Started docs.

      • It is no longer straightforward to symlink Kit Kernel into the runtime directory

        • The plugin and python files we need are copied instead

        • The extensions and resources (icons) can still be symlinked

      • The kit-core config still needs to be in a specific directory instead of next to our configs, but this dir no longer has “kit” in the name, which is maybe a bit confusing.

UI

Features

  • Added support for /omni.connect.ui/enabled to force loading the new omni.connect.ui.kit experience during startup (OM-104056)

  • Added a configurable About Window to provide consistent info in all Connectors (OM-57041)

Fixes

  • Added a new the omni.connect.ui.kit experience file to declare UI extension dependencies properly (OM-104056)

    • This solves inconsistent UI extension startup behavior on Windows

Dev Tools

Features

  • Build: Added support for pxr-23_05 and set it as the default build flavor (OM-104057)

  • Build: Added unity-22_11 flavor for Unity 2021 & 2022 LTS (OM-100967)

  • Build: Added support for nopy builds and minimal monolithic OpenUSD flavors (OM-102875, OM-104057)

    • This is without Kit, UI, Python, Alembic, MaterialX, Imaging, and uses a single monolithic shared usd_ms library

  • Build: Added -fdiagnostics-color on Linux to get GCC colored output (OM-80834)

  • Tests: Added CoreTestCase and UsdTestCase utility classes (OM-97105)

  • Tests: Support user.repo.toml and environment variable overrides for Nucleus Authentication (OM-102874)

  • CI : Use GitHub pages to stage pre-release docs for more intuitive review (OM-104054, OM-101084)

Fixes

  • Build: Fixed minimal monolithic OpenUSD linking on Linux (OM-102875)

  • Build: Fixed minimal monolithic OpenUSD compiler issues on Windows (OM-102875)

    • The patch has been submitted back upstream to Pixar/OpenUSD but is not yet merged (#USD-8592)

  • Build: Added “headers” to the options table for connect_build.executable() and apply local scope to “name”, “headers”, and “sources” (OM-85098)

  • repo_stubgen: Allow no modules found to exit as success (OM-102875)

  • repo_stubgen: Ported the pybind11_stubgen.py from Kit Kernel into Connect SDK directly (OM-100967)

    • This is required to fix stubgen issues on the unity-22_11 USD bindings, which are a variant of nv-usd. See SWIPAT 4253683 for details.

Dependencies

Runtime Deps

  • Carbonite 146.6

  • Omni Client Library 2.32.0

  • Omni USD Resolver 1.31.2 (from 1.31.1) (OM-100967)

  • OpenUSD pxr-23.05 (from nv-22.11) (OM-104057)

    • This is the default flavor, refer to deps/build-flavors.toml for other supported flavors.

  • Kit Kernel 105.0 (Kit Hash ed961c5c)

    • Matching Composer 2023.1.0-rc.17

Dev Tools

  • packman 7.9 (from 7.6) (OM-102874)

  • repo_tools (all to latest supported) (OM-102874)

  • pybind 2.9.2

  • doctest 2.4.5

  • cxxopts 2.2.0

  • linbuild 1.20

  • MSVC 2019-16.11

Documentation

  • Added security policy document (OM-102874)

  • Added licenses for Cortex and Gaffer BSD-3 OSS (OM-102874)

    • See SWIPATs 3833263 and 3833277 for details. There is no compile or runtime dependency associated with this change.

  • Updated PACKAGE-INFO.yaml with latest information (OM-102874)

  • Updated Getting Started document to thoroughly explain how to acquire, build, and deploy a client Connector that uses Connect SDK (OM-104054, OM-101084)

    • This includes a full runtime file listing for 4 build flavors: the default and nopy.minimal builds on Linux and Windows.

  • Updated USD Authoring guidelines to explain the new prim name handling and define functions (OM-98668)

  • Updated Kit and UI docs to explain the new .kit experience and .toml files (OM-104056)

  • Clarified current C# positioning and UI separation (OM-104054, OM-101084)

  • Fixed links to dependencies to use publicly available URLs where possible (OM-104054, OM-101084)

  • Fixed software licenses and basic spacing issues in all header & source files (OM-102874, OM-98050)

  • Fixed repo_docs builds on Windows and added docs CI coverage on Windows (OM-104054, OM-101084)

  • Fixed all doxygen warnings (OM-98668)

  • Fixed __all__ listing and added CI to ensure all public python symbols are listed and documented (OM-98668)

0.4.0

Core

Features

  • Added UsdPrim Xform Algorithms to improve authoring of UsdGeomXformable schema transform operations (OM-94098)

    • These can be used for authoring and retrieving local transformation of Xformable prims using a standard suite of transform formats (e.g. as matrices, individual transform components, or as a GfTransform)

  • Added isLight function to process UsdLuxLight[API] prims (OM-92201)

  • Added function to create extents on UsdLuxLight prims (OM-93417)

  • Added basic sRGB/linear color space conversions (OM-86672)

  • Simplified Omniverse USD Resolver initialization (OM-85113)

    • This uses an optional config setting to initialize the resolver during startup()

    • Please refer to the new doc on USD Configuration for details.

  • Added functions for managing Live Session config file I/O (OM-62829)

  • Added a LiveSessionChannel class for connecting, sending, processing, and receiving Live Session channel messages (OM-62829)

  • Configured Client Library app details automatically during startup() as required for OVC use (OM-96287)

Fixes

  • Reduced use of Python gil release to the minimal set required (OM-89278)

  • Fixed python startup when the kit/ui libraries are not used (OM-84367)

  • Fixed executePythonIntFunction when it returns 0 or None (OM-84367)

  • Fixed omni.client log channel initialization & logging output (OM-98119)

  • Fixed public symbol listing in omni.connect.core python module (OM-87073)

  • Fixed type name tooltips for OpenUSD pybind11 bindings (OM-87073)

  • Fixed UsdLux Light compatibility functions for OpenUSD 20_08 and 21_08 (OM-98508, OM-95137)

  • Fixed Windows builds for OpenUSD 23_05 (OM-95137)

Breaking Changes

  • PrimAlgo.h has been renamed XformableAlgo.h and all function signatures (and behavior) within it have changed (OM-94098)

    • Please refer to the new doc on USD Authoring Guidelines for details.

Kit

Features

  • Now using the public registry exclusively to pull runtime Kit extensions (OM-95614)

Breaking Changes

  • We no longer the hardcode location & settings for the python runtime (OM-65071)

    • It must be specified via a config setting in the omni.connect.client.toml

    • This is to support python-native applications (e.g Maya, Houdini, Unreal, Blender)

    • Please refer to the new doc on Python Configuration for details.

UI

Fixes

  • Fixed setExportComment c++ entry point to avoid a spurious error log (OM-84367)

  • Improved I/O UI (File Exporter, File Importer) implementation and fixed several bugs with popups (OM-98673)

Dev Tools

Features

  • Added flexible build flavors using repo_man tokens (OM-83880, OM-84457)

    • We can now build, test, and package Connect SDK for any OpenUSD / Python combination that our upstream deps support

  • Added a Gitlab CI Pipeline for CI/CD matrix testing & packing of all officially support build flavors (OM-83880, OM-84662, OM-95137)

    • This currently includes our default build (nv-22_11/py310), an LTS build (nv-20_08/py37), as well as all builds needed by all active & LTS versions of Unreal Connector & Blender Connector.

    • Please see the Contributing Guide for details on when, why, and how to add a new build flavor to the matrix.

  • Added connect_build premake functions executable(), static_library(), and dynamic_library() to simplify building binary programs and libraries (OM-95292)

  • connect_build.use_carb() now installs the py-spy executable (required by carb.crashreporter)

  • Added symbol storage & stripping debug symbols from the published packages (OM-92157)

  • Added doctest and cxxopts dependencies for writing repo_test “catch2” compatible c++ test suites (OM-84367)

    • These are available to Connectors via the all-deps file. See the Connect SDK cpp test suite for example usage.

  • Added repo_connect_client_config tool to help client Connectors install their static configuration with automated version substitution (OM-84365)

    • Please refer to the new doc on Dev Tools for details.

  • Added repo_connect_kit_exts tool to download & cache the required Kit runtime extensions, e.g. as a repo_build.post_build command (OM-84365)

    • Please refer to the new doc on Dev Tools for details.

    • Note: This is only useful if you use the kit/ui modules.

    • Note: If you don’t use this tool, the extensions will still be downloaded automatically at runtime, as before.

    • Important: This tool requires a GPU currently, it actually starts the UI, downloads the exts, and then shuts down.

  • Added repo_stubgen tool to generate .pyi stubs for IDE IntelliSense (OM-87073, OM-83836)

    • This is adapted from the Kit tool to work generically on pybind11 python modules rather than Kit extensions.

    • Please refer to the new doc on Dev Tools for details.

  • Added VSCode settings template with Pylance linting and black/flake8 formatting (OM-98050)

Fixes

  • Fixed repo_update list operations.

  • Removed codesign & publishing steps from TeamCity pipeline (OM-84662)

    • Gitlab CI handles all tagged/release publishes going forward.

    • The TeamCity pipeline is still running & required for UI testing as Gitlab CI is not UI capable yet.

Breaking Changes

  • connect_build premake module has been re-written significantly to make use of new features in the repo_build premake module.

    • Please refer to the new doc on Dev Tools for details.

  • connect_build premake module no longer installs the Kit Kernel python distro automatically (OM-84364)

    • Client Connectors that need a python runtime should take case to install one & configure their omni.connect.client.toml accordingly.

    • Please refer to the new doc on Python Configuration for details.

Dependency Updates

Runtime Deps

  • Carbonite 146.6 OM-95614

  • Omni Client Library 2.32.0 (OM-96287)

  • USD Resolver 1.31.1 (OM-99940)

  • USD 22.11 (nv.0.2.938)

    • This is the default flavor, refer to deps/build-flavors.toml for other supported flavors.

  • Kit Kernel 105.0 (Kit Hash ed961c5c) (OM-95614)

    • Matching Composer 2023.1.0-rc.17

Dev Tools

  • packman 7.6 (from 6.55) (OM-83880)

  • repo_tools (all to latest available) (OM-83880)

  • pybind 2.9.2 (OM-83880)

  • doctest 2.4.5 (OM-84367)

  • cxxopts 2.2.0 (OM-84367)

  • linbuild 1.20 (OM-91672)

  • MSVC 2019-16.11 (OM-91672)

Documentation

  • Added VSCode IntelliSense for all Connect SDK python modules (e.g. .pyi stub files)

    • Note this is improved significantly if you manually run repo_stubgen on your OpenUSD package from packman, as OpenUSD modules do not currently ship stub files natively. See Connect SDK repo.toml for an example of how to configure repo_stubgen to do this.

  • Added a new Python Configuration section to the Getting Started docs.

  • Added a new USD Configuration section to the Getting Started docs.

  • Added a new USD Authoring Guidelines doc to make it easy for clients to author consistent and correct USD data.

    • This doc will evolve rapidly over the next couple releases.

  • Added a new Dev Tools doc describing the connect_build premake module & our custom repo_tools.

  • Improved “Debugging” sections of the Getting Started docs.

  • Updated content to refer to OpenUSD and openusd.org

0.3.3

Dependencies

  • Carbonite 146.3

  • Omni Client Library 2.31.3

  • USD 22.11 (nv.0.2) (unchanged from v0.3.2)

  • USD Resolver 1.29.1

  • Kit Kernel 105.0 (Kit Hash e5a156c7)

0.3.2

UI

Fixes

  • Fixed python module imports for non-standard deployments in Python 3.8+ Windows environments.

0.3.1

Dev Tools

Fixes

  • Fixed package publishing issues on Windows

0.3.0

Core

Features

  • Added utility functions for handling UsdLux Light API and Schema compatibility (OM-79693)

    • These functions can be used to generate Light Prims which are forwards compatible with USD 21.02+ and backwards compatible with USD 20.08. See the API docs for more details.

Fixes

  • Moved Client Library logs to a dedicated omni.client channel (OM-88566)

  • Emit omni.client logs for any Connection Status (more were introduced in a newer Client Library) (OM-88566)

  • Fixed UsdPrim copy issue which caused some meshes to lose materials (OM-90486)

  • Fixed possible crash in the getLocalTransformSRT python bindings on modern Linux environments.

  • Fixed python module imports for non-standard deployments in Python 3.8+ Windows environments.

  • Tests: Cleanup all temp files on Nucleus servers.

  • Tests: Limit Client Library retries to speedup tests.

UI

Fixes

  • Fixed possible filename / file extension mismatch in File Importer/Exporter UIs (via Kit Kernel update)

  • Disabled unused search field in File Importer/Exporter UIs (via Kit Kernel update)

  • Drastically reduced required runtime extension file size (via Kit Kernel update)

  • Tests: Added double-click tests for File Importer/Exporter UIs (OM-87499)

Dev Tools

Features

  • connect-sdk-public premake module now uses externalincludedirs and syslibdirs for all dependnecy headers and libraries.

    • Important: This change requires all clients of connect-sdk-public to update to Premake 5.0.0-beta2. To simplify, it can be imported from the all-deps.packman.xml like any other dependency.

  • Enabled running repo_test and repo_docs with arbitrary python distros & set the default to match the python dependency listed in target-deps.packman.xml.

Fixes

  • Fixed use_usd() on Linux by removing explicit rpath override (OM-88408)

  • Fixed omni_connect_kit build to not require pybind directly.

  • Fixed missing carb.scripting-python.plugin when calling use_connect_core() or use_carb() from connect-sdk-public

Dependencies

  • Premake 5.0.0-beta2

  • Python 3.10

  • Carbonite 145.0

  • Omni Client Library 2.28.1

  • USD 22.11 (nv.0.2)

  • USD Resolver 1.27.0

  • Kit Kernel 105.0 (Kit Hash cfaca3cd)

0.2.0

Core

Features

  • Added createUriCheckpoint to simplify creating checkpoints on existing Nucleus URIs (OM-85102)

  • Added saveStage to simplify saving across several layers with a common checkpoint comment (OM-85102)

  • Added getLocalTransformMatrix and setLocalTransformMatrix (OM-83614)

  • Updated for source compatibility with USD 22.11 (OM-85901)

    • Note we are not producing USD 22.11 packages yet, this is a first step towards flexible packaging.

Fixes

  • Fixed signature of setLocalTransformSRT to use UsdPrim &

  • Removed unnecessary return value for getLocalTransformSRT in c++

API/ABI Breaking Changes

  • Changed signature of setLocalTransformSRT & getLocalTransformSRT

UI

Fixes

  • Fixed double click selection bug for import/export UIs (OM-86457)

Dev Tools

Features

  • Added use_omni_resolver() to connect-sdk-public premake module

Dependencies

  • Python 3.7

  • Carbonite 143.0

  • Omni Client Library 2.27.5

  • USD 20.08 (nv.1.2)

  • USD Resolver 1.26.0

  • Kit Kernel 105.0 (Kit Hash c75d0158)

0.1.0

Core

Features

  • Added omni_connect_core shared library, omni.connect.core python module, and python unittests

    • This includes a compile & runtime dependency on Carbonite 143 along with 6 carb-sdk plugins

    • It requires client Connectors to set the CARB_APP_PATH environment variable prior to calling startup()

  • Added runtime configuration for client Connectors via toml files using Carbonite’s settings & tokens plugins

  • Added logging to stdout & to file via Carbonite’s log plugin

    • By default logging is configured to use the standard Omniverse location per platform (i.e. alongside Kit & Nucleus logs)

  • Added crash reporting via Carbonite’s crashreporter plugin

    • This is only enabled via end user opt-in through the standard Omniverse privacy policy

  • Added functions to bootstrap python & call python code from c++, via Carbonite’s scripting-python plugin & pybind11

  • Added USD utility functions for manipulating stage hierarchy

    • canRemovePrim, removePrim, copyPrim, and renamePrim have been ported from Connect Samples & Unreal Connector

  • Added USD utility functions for manipulating individual prims

    • getLocalTransformSRT and setLocalTransformSRT have been ported from Connect Samples & Kit’s omni.usd extension

  • Added USD data type bindings to enable seamless flow between pybind11 & boost python

    • Note: A minimal subset of USD types is supported to cover the public API of this library. More types may be added in the future.

Kit

Features

  • Added omni_connect_kit shared library, omni.connect.kit python module, and python unittests

    • This includes a compile & runtime dependency on Kit Kernel 105.

    • It is a separate library to ensure that client Connectors which don’t want a runtime Kit dependency can still use the Core library.

  • Added functions to bootstrap Kit’s IApp into the current process (i.e. Kit running inside the client Connector)

UI

Features

  • Added omni_connect_ui shared library, omni.connect.ui python module, and python unittests

    • This expands on omni_connect_kit to include a runtime dependency on omni.ui and related UI Extensions

    • It is separated from omni_connect_kit to ensure that client Connectors which don’t want a runtime GUI dependency can still use headless Kit API & services

  • Added functions to invoke Kit’s file_importer & file_exporter UIs and retrieve the selected URIs

Dev Tools

Features

  • Added connect-sdk-public premake module, which can be used to simplify repo_build / premake setups in client Connectors

  • Added all-deps.packman.xml file to help conform common dependencies in client Connectors

  • Added config_util python script to simplify installing client Connector configuration (i.e. the omni.connect.client.toml file) for multiple versions of a connected application.

Dependency Updates

  • Python 3.7

  • Carbonite 143.0-pre

  • Omni Client Library 2.25.0

  • USD 20.08.nv.1.2

  • USD Resolver 1.22.0

  • Kit Kernel 105.0 (Kit Hash d4f35631)

Documentation

  • Added mission statement & core goals

  • Added component details breakdown explaining the purpose of each library & module

  • Added Getting Started guide to teach client Connector developers how they can make use of Connect SDK

    • This includes build & dependency management advice as well as runtime configuration advice

  • Added C++ and Python API docs for all public functions & variables

  • Added Contributing Guide for developers who wish to contribute features and fixes to Connect SDK