### Building and Installing USD Exchange SDK on Windows Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md These commands build the USD Exchange SDK and install it into the _install directory for both release and debug configurations. It then copies the _install directory to the $project_root\usdex directory using robocopy. ```batch repo.bat build repo.bat install_usdex --config release --install-python-libs repo.bat install_usdex --config debug --install-python-libs robocopy /s _install $project_root\usdex > NUL ``` -------------------------------- ### Building and Installing USD Exchange SDK on Linux Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md These commands build the USD Exchange SDK and install it into the _install directory for both release and debug configurations. It then copies the _install directory to the $project_root/usdex directory. ```bash ./repo.sh build ./repo.sh install_usdex --config release --install-python-libs ./repo.sh install_usdex --config debug --install-python-libs cp -Lr _install $project_root/usdex ``` -------------------------------- ### Building OpenUSD Exchange Samples on Linux Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md This bash script downloads dependencies, creates Makefiles, and compiles the code for the OpenUSD Exchange Samples on Linux systems. It requires 'make' and 'g++' to be installed. ```bash ./repo.sh build ``` -------------------------------- ### Running OpenUSD Exchange Samples on Windows Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md This batch script executes a compiled sample program with a pre-configured environment on Windows. It uses the `run.bat` script with the program name as an argument. ```bash .\run.bat createStage --help ``` -------------------------------- ### Running OpenUSD Exchange Samples on Linux Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md This bash script executes a compiled sample program with a pre-configured environment on Linux. It uses the `run.sh` script with the program name as an argument. ```bash ./run.sh createStage --help ``` -------------------------------- ### Running Python OpenUSD Exchange Samples on Windows Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md This batch script executes a python sample program with a pre-configured environment on Windows. It uses the `python.bat` script with the program name as an argument. ```bash .\python.bat source\createStage\createStage.py --help ``` -------------------------------- ### Running Python OpenUSD Exchange Samples on Linux Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md This bash script executes a python sample program with a pre-configured environment on Linux. It uses the `python.sh` script with the program name as an argument. ```bash ./python.sh source/createStage/createStage.py --help ``` -------------------------------- ### Building OpenUSD Exchange Samples on Windows Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md This batch script downloads dependencies, creates project files, and compiles the code for the OpenUSD Exchange Samples on Windows systems. It requires Visual Studio 2019 or newer with C++ support. ```bash .\repo.bat build ``` -------------------------------- ### Setting up Runtime Environment on Linux Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md This bash script sets up the runtime environment for the OpenUSD Exchange application on Linux by defining the RUNTIME_PATH and LD_LIBRARY_PATH environment variables. It then executes the UsdTraverse application with any provided arguments. ```bash #!/bin/bash set -e export RUNTIME_PATH=./usdex/linux-x86_64/release export LD_LIBRARY_PATH=${RUNTIME_PATH}/lib:${LD_LIBRARY_PATH} ./release/UsdTraverse "$@" ``` -------------------------------- ### Setting up Runtime Environment on Windows Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md This batch script sets up the runtime environment for the OpenUSD Exchange application on Windows by defining the RUNTIME_PATH and modifying the PATH environment variable. It then executes the UsdTraverse.exe application with any provided arguments. ```batch @echo off setlocal set RUNTIME_PATH=usdex/windows-x86_64/release set PATH=%RUNTIME_PATH%/lib;%PATH% x64\release\UsdTraverse.exe %* ``` -------------------------------- ### Makefile Build Targets Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md Specifies the build targets and commands for compiling and linking the USD Exchange program. It includes steps for creating the target directory, compiling the source file, and linking the object files. ```Makefile OBJS = $(TARGETDIR)/$(PROGRAMNAME).o # Build Targets all: $(TARGETDIR)/$(PROGRAMNAME) # $@ matches the target; $< matches the first dependent $(TARGETDIR)/$(PROGRAMNAME): $(OBJS) echo Linking $(PROGRAMNAME) g++ -o $@ $< $(LDFLAGS) $(LIBS) $(OBJS): $(PROGRAMNAME).cpp | $(TARGETDIR) g++ $(INCLUDES) $(CXXFLAGS) -c $< -o $@ $(TARGETDIR): @echo Creating $(TARGETDIR) @mkdir -p $(TARGETDIR) clean: rm -rf $(TARGETDIR) ``` -------------------------------- ### Makefile Configuration for Python Integration Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md Defines Makefile variables for Python integration, including include directories, library paths, and linker flags. These settings are essential for compiling and linking against the Python runtime. ```Makefile ifndef PYTHON_INCLUDE_DIR PYTHON_INCLUDE_DIR = -isystem $(DEPSDIR)/python/include/$(PYTHONVER) endif ifndef PYTHON_LIB PYTHON_LIB = -l$(PYTHONVER) endif ifndef PYTHON_LIB_DIR PYTHON_LIB_DIR = -L$(DEPSDIR)/python/lib endif # Common flags CXXFLAGS += $(CONFIG_DEFINES) $(ABI_DEFINES) $(IGNORED_WARNINGS) -m64 INCLUDES += $(USDEX_INCLUDE_DIRS) $(PYTHON_INCLUDE_DIR) LIBS += $(USD_LIBS) $(USDEX_LIBS) $(PYTHON_LIB) LDFLAGS += $(USDEX_LIB_DIRS) $(PYTHON_LIB_DIR) ``` -------------------------------- ### Traversing USD Stage and Printing Prim Information in C++ Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md This C++ code snippet demonstrates how to open a USD stage from a file path provided as a command-line argument, print the stage's up-axis and linear units, and traverse the stage's prims, printing their paths and positions if they are xformable. It requires the OpenUSD and OpenUSD Exchange SDK libraries. ```cpp // SPDX-FileCopyrightText: Copyright (c) 2021-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: MIT // #include #include #include #include #include #include // The program expects one argument, a path to a USD file int main(int argc, char* argv[]) { if (argc != 2) { std::cout << "Please provide a local file path to a USD stage to read." << std::endl; return -1; } std::cout << "OpenUSD Stage Traversal: " << argv[1] << std::endl; pxr::UsdStageRefPtr stage = pxr::UsdStage::Open(argv[1]); if (!stage) { std::cout << "Failure to open stage. Exiting." << std::endl; return -2; } // Print the stage metadata metrics std::cout << "Stage up-axis: " << pxr::UsdGeomGetStageUpAxis(stage) << std::endl; std::cout << "Meters per unit: " << pxr::UsdGeomGetStageMetersPerUnit(stage) << std::endl; // Traverse the stage, print all prim names, print transformable prim positions pxr::UsdPrimRange range = stage->Traverse(); for (const auto& prim : range) { std::cout << prim.GetPath(); if (pxr::UsdGeomXformable(prim)) { pxr::GfTransform xform = usdex::core::getLocalTransform(prim); std::cout << ":" << xform.GetTranslation(); } std::cout << std::endl; } } ``` -------------------------------- ### Visual Studio Library Include Paths Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md Specifies the library include paths for the Visual Studio project. These paths are needed for the linker to find the required library files for USD Exchange, Python, and USD. ```C++ usdex/target-deps/usd-exchange/$(CONFIGURATION)/lib usdex/target-deps/python/libs usdex/target-deps/usd/$(CONFIGURATION)/lib ``` -------------------------------- ### Visual Studio Debugger Environment PATH Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md Configures the debugger environment by setting the PATH variable. This allows the debugger to find the necessary DLLs at runtime. ```C++ PATH=usdex/windows-x86_64/$(CONFIGURATION)/lib ``` -------------------------------- ### Visual Studio Header Include Paths Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md Defines the header include paths for the Visual Studio project. These paths are necessary for the compiler to find the required header files for USD Exchange, Python, and Boost. ```C++ usdex/target-deps/usd-exchange/$(CONFIGURATION)/include usdex/target-deps/python/include usdex/target-deps/usd/$(CONFIGURATION)/include usdex/target-deps/usd/$(CONFIGURATION)/include/boost-1_78 ``` -------------------------------- ### Visual Studio Preprocessor Definitions Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md Defines preprocessor macros for the Visual Studio project. These definitions configure the build environment, including Boost library settings and disabling deprecated messages. ```C++ BOOST_LIB_TOOLSET="vc142" NOMINMAX TBB_SUPPRESS_DEPRECATED_MESSAGES ``` ```C++ TBB_USE_DEBUG=1 ``` -------------------------------- ### Makefile for Building USD Traversal Application on Linux Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md This Makefile provides build configurations for compiling a C++ application that uses OpenUSD and the OpenUSD Exchange SDK on Linux. It defines compiler flags, include directories, library dependencies, and target directories for both debug and release builds. It assumes that OpenUSD and the OpenUSD Exchange SDK are located in the `usdex/target-deps` directory. ```makefile # SPDX-FileCopyrightText: Copyright (c) 2023-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: MIT # This makefile is a simple example for an application, or converter for including, linking, and executing with # OpenUSD and the OpenUSD Exchange SDK # # By default it will build against the release version of OpenUSD, to build against the debug version run `make CONFIG=debug`. # The expectation is that OpenUSD, the OpenUSD Exchange SDK, and other dependencies are present in the `$project_root/usdex/target-deps` directory DEPSDIR = $(CURDIR)/usdex/target-deps PYTHONVER = python3.10 PROGRAMNAME = UsdTraverse ifndef CONFIG CONFIG=release endif ifndef TARGETDIR TARGETDIR = $(CURDIR)/$(CONFIG) endif # Debug vs. Release differences ifeq ($(CONFIG),debug) CONFIG_DEFINES += -g -DDEBUG -O0 -DTBB_USE_DEBUG=1 else ifeq ($(CONFIG),release) CONFIG_DEFINES += -DNDEBUG -O2 endif # ABI Settings ifndef ABI_DEFINES ABI_DEFINES = -D_GLIBCXX_USE_CXX11_ABI=1 -std=c++17 endif # Ignored Warnings ifndef IGNORED_WARNINGS IGNORED_WARNINGS = -Wno-deprecated -DTBB_SUPPRESS_DEPRECATED_MESSAGES endif # Include search directories USDEX_INCLUDE_DIRS = \ -isystem $(DEPSDIR)/usd-exchange/$(CONFIG)/include \ -isystem $(DEPSDIR)/usd/$(CONFIG)/include # USD libs (most of these not required, but this is a proper set for a fully featured converter) USD_LIBS = \ -lusd_ar \ -lusd_arch \ -lusd_gf \ -lusd_js \ -lusd_kind \ -lusd_pcp \ -lusd_plug \ -lusd_sdf \ -lusd_tf \ -lusd_trace \ -lusd_usd \ -lusd_usdGeom \ -lusd_usdLux \ -lusd_usdShade \ -lusd_usdUtils \ -lusd_vt \ -lusd_work # For USD 24.11 and newer # USD_LIBS += \ # -lusd_python \ # -lusd_ts # For USD 24.08 and older. Remove if using USD 24.11 or newer, and replace with the block above. USDEX_INCLUDE_DIRS += \ -isystem $(DEPSDIR)/usd/$(CONFIG)/include/boost-1_78 USD_LIBS += \ -lboost_python310 USDEX_LIBS = \ -lusdex_core \ -lomni_transcoding # Library dependency directories USDEX_LIB_DIRS = \ -L$(DEPSDIR)/usd-exchange/$(CONFIG)/lib \ -L$(DEPSDIR)/omni_transcoding/$(CONFIG)/lib \ -L$(DEPSDIR)/usd/$(CONFIG)/lib ``` -------------------------------- ### Visual Studio Additional Dependencies (Libraries) Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md Specifies the additional library dependencies for the Visual Studio project. These libraries are required for linking the USD Exchange application and include USD core libraries, Python bindings, and Boost libraries. ```C++ usdex_core.lib usd_arch.lib usd_gf.lib usd_kind.lib usd_pcp.lib usd_plug.lib usd_sdf.lib usd_tf.lib usd_usd.lib usd_usdGeom.lib usd_usdLux.lib usd_usdUtils.lib usd_vt.lib usd_ar.lib ``` ```C++ usd_python.lib usd_ts.lib ``` ```C++ boost_python310-vc142-mt-x64-1_78.lib ``` ```C++ boost_python310-vc142-mt-gd-x64-1_78.lib ``` -------------------------------- ### Install OpenUSD Exchange SDK (Linux) Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/README.md This script downloads and assembles the OpenUSD Exchange SDK runtime requirements into a dedicated folder on Linux systems. It is part of the installation process for the SDK. ```shell ./repo.sh install_usdex ``` -------------------------------- ### Install OpenUSD Exchange SDK (Windows) Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/README.md This batch script downloads and assembles the OpenUSD Exchange SDK runtime requirements into a dedicated folder on Windows systems. It is part of the installation process for the SDK. ```batch .\repo.bat install_usdex ``` -------------------------------- ### Adding post-build commands in repo.toml Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/devtools.md This snippet shows how to add a command to the post-build process in the `repo.toml` file. The command executes the `install_usdex` script with specified configuration parameters. This automates the installation process during the build. ```toml [repo_build.post_build] commands = [ ["$root/repo${shell_ext}", "install_usdex", "-c", "$config"], ] ``` -------------------------------- ### Verifying OpenUSD Exchange Installation Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/deployments.md This command verifies the installation of OpenUSD and OpenUSD Exchange by printing their versions within a Docker container. ```bash docker run my-image python3.10 -c 'import pxr.Usd, usdex.core; print(f"OpenUSD: {pxr.Usd.GetVersion()\nOpenUSD Exchange: {usdex.core.version()}")' ``` -------------------------------- ### Setting up OpenUSD Exchange in Docker Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/deployments.md These commands install OpenUSD Exchange libraries and Python modules, and configure the environment within a Docker container. ```bash RUN python3.10 -m site --user-site RUN ln -s /usdex-runtime/python/* /usr/local/lib/python3.10/dist-packages/ ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usdex-runtime/lib" ``` -------------------------------- ### Dockerfile for USD Exchange Microservice Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/deployments.md This Dockerfile sets up a microservice using the `usdex.core` Python module. It installs necessary dependencies like git, curl, and Python, clones the USD Exchange repository, installs the USD Exchange SDK, and cleans up temporary files to minimize the final image size. ```Dockerfile FROM ubuntu:22.04 # Install git (to clone the repo), curl (to download binaries), and python (to run) RUN apt update && apt install -y git curl python3.10 libpython3.10 # Install OpenUSD and OpenUSD Exchange, making sure to match the system python version RUN git clone https://github.com/NVIDIA-Omniverse/usd-exchange.git RUN cd usd-exchange && ./repo.sh install_usdex --python-version 3.10 --version 1.0.0 --install-dir /usdex-runtime # Clean up temporary files not needed for runtime RUN usd-exchange/tools/packman/packman prune 0 && rm -rf usd-exchange ``` -------------------------------- ### Setting TF_DEBUG Environment Variable Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/getting-started.md This snippet shows how to set the TF_DEBUG environment variable to attach a debugger when warnings, errors, or fatal errors occur. This configuration will cause the application to break into the debugger if one is attached to the process. ```text TF_DEBUG=TF_ATTACH_DEBUGGER* ``` -------------------------------- ### Install usdex with extra OpenUSD plugins Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/devtools.md Installs the core OpenUSD Exchange SDK along with additional OpenUSD plugins, specifically `usdSkel` and `usdPhysics`. This allows for extended functionality beyond the minimal requirements of the SDK. ```bash ./repo.sh install_usdex --version 1.0.0 --install-extra-plugins usdSkel usdPhysics ``` ```bat .\repo.bat install_usdex --version 1.0.0 --install-extra-plugins usdSkel usdPhysics ``` -------------------------------- ### Install usdex_rtx for RTX Rendering Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/devtools.md Installs the `usdex_rtx` library and `usdex.rtx` Python module to assist with MDL Shader authoring for RTX rendering via NVIDIA Omniverse. This command includes the `--install-rtx` argument. ```bash ./repo.sh install_usdex --version 1.0.0 --install-rtx ``` ```bat .\repo.bat install_usdex --version 1.0.0 --install-rtx ``` -------------------------------- ### Install Python test helpers Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/devtools.md Installs the `usdex.test` Python module and the Omniverse Asset Validator. This is useful for testing and validating USD assets within the OpenUSD Exchange environment. ```bash ./repo.sh install_usdex --version 1.0.0 --install-test ``` ```bat .\repo.bat install_usdex --version 1.0.0 --install-test ``` -------------------------------- ### Install minimal usdex_core with specific USD version and no Python Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/devtools.md Downloads and assembles a minimal monolithic USD Exchange SDK binary with no Python support, compatible with USD version 24.11, for OpenUSD Exchange v1.0.0. This command uses the `install_usdex` tool with the `usd-minimal` flavor. ```bash ./repo.sh install_usdex --usd-flavor usd-minimal --usd-version 24.11 --python-version 0 --version 1.0.0 ``` ```bat .\repo.bat install_usdex --usd-flavor usd-minimal --usd-version 24.11 --python-version 0 --version 1.0.0 ``` -------------------------------- ### Install usdex_core with specific USD and Python versions Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/devtools.md Downloads and assembles USD Exchange SDK core library and module binaries compatible with a specified USD version (24.05) and Python version (3.11) for OpenUSD Exchange v1.0.0. This command uses the `install_usdex` tool to acquire the necessary build and runtime requirements. ```bash ./repo.sh install_usdex --usd-version 24.05 --python-version 3.11 --version 1.0.0 ``` ```bat .\repo.bat install_usdex --usd-version 24.05 --python-version 3.11 --version 1.0.0 ``` -------------------------------- ### BibTeX entry for OpenUSD Exchange SDK Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/CITATION.md This BibTeX entry can be used to cite the OpenUSD Exchange SDK in LaTeX documents. It includes the title, author, year, and URL of the SDK. ```TeX @Manual{ title = {OpenUSD Exchange SDK: Collection of Libraries to simplify OpenUSD data interchange between 3D Ecosystems}, author = {NVIDIA Omniverse Development Team}, year = {2024}, url = {https://docs.omniverse.nvidia.com/usd/code-docs/usd-exchange-sdk}, } ``` -------------------------------- ### Building with Configuration Options Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/CONTRIBUTING.md Builds the OpenUSD Exchange SDK with specific configuration options, such as the release configuration. ```shell repo build --help ``` -------------------------------- ### Running the main test suite Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/CONTRIBUTING.md Runs the `main` test suite, which is a Python unittest suite that exercises the majority of the OpenUSD Exchange SDK. ```shell repo test -s main ``` -------------------------------- ### Inspecting Build Configuration with Premake Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/CONTRIBUTING.md Inspects the `premake5.lua` file to understand how the libraries are compiled using Premake. ```lua premake5.lua ``` -------------------------------- ### Linking and Building OpenUSD Exchange (Windows) Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/deployments.md These commands clone the OpenUSD Exchange repository, link a local USD distribution, and build the project on Windows. ```batch git clone https://github.com/NVIDIA-Omniverse/usd-exchange.git cd usd-exchange .\repo.bat source link usd_release ..\path\to\your\usd .\repo.bat build ``` -------------------------------- ### Building OpenUSD Exchange SDK Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/CONTRIBUTING.md Builds the OpenUSD Exchange SDK using the `repo.bat` or `repo.sh` script, depending on the platform. The command accepts additional arguments for configuration. ```shell repo.bat build ``` ```shell repo.sh build ``` -------------------------------- ### Linking and Building OpenUSD Exchange (Linux) Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/deployments.md These commands clone the OpenUSD Exchange repository, link a local USD distribution, and build the project on Linux. ```bash git clone https://github.com/NVIDIA-Omniverse/usd-exchange.git cd usd-exchange ./repo.sh source link usd_release ../path/to/your/usd ./repo.sh build ``` -------------------------------- ### Building Minimal USD without Python Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/CONTRIBUTING.md Builds a minimal monolithic version of USD 24.05 without Python support. ```shell repo --set-token usd_flavor:usd-minimal --set-token usd_ver:24.05 --set-token python_ver:0 build ``` -------------------------------- ### Running all unittest suites Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/CONTRIBUTING.md Executes all unittest suites (`main` and `cpp`) for the OpenUSD Exchange SDK. Any failure in any suite will cause the test process to fail. ```shell repo.bat test ``` ```shell repo.sh test ``` -------------------------------- ### Running the cpp test suite Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/CONTRIBUTING.md Runs the `cpp` test suite, a doctest suite used to exercise functions in OpenUSD Exchange SDK that cannot be bound to Python or require C++ for performance. ```shell repo test -s cpp ``` -------------------------------- ### Building with Specific USD and Python Versions Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/CONTRIBUTING.md Builds the OpenUSD Exchange SDK with a specific USD version (24.11) and Python version (3.10) by setting tokens. ```shell repo --set-token usd_flavor:usd --set-token usd_ver:24.11 --set-token python_ver:3.10 build ``` -------------------------------- ### Applying Apache License Notice Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/LICENSE.md This snippet provides the boilerplate notice to attach to your work when applying the Apache License 2.0. Replace the bracketed fields with your own identifying information and enclose the text in the appropriate comment syntax for the file format. ```Text Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ``` -------------------------------- ### Creating a release maintenance branch Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/CONTRIBUTING.md Creates a maintenance branch from a specific tag for releasing patches and updates. ```shell git checkout v1.0.0; git switch -c release/1.x; git push upstream release/1.x ``` -------------------------------- ### Configuring extra tool paths in repo.toml Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/devtools.md This snippet demonstrates how to configure extra tool paths for repo_tools in the `repo.toml` file. It adds a path to the `repo_tools.toml` file within the usd-exchange project. This configuration allows the `repo_tools` to locate and use the specified tool configuration. ```toml [repo] extra_tool_paths."++" = [ "_build/target-deps/usd-exchange/release/dev/tools/repoman/repo_tools.toml", ] [repo_install_usdex] enabled = true ``` -------------------------------- ### OpenUSD Minimal Build Directory Structure Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/runtime-tree.rst This code block shows the directory structure of the OpenUSD minimal build on Windows. It includes core DLLs such as usdex_core.dll, omni_transcoding.dll, tbb.dll, and usd_ms.dll, along with the optional usdex_rtx.dll. The usd subdirectory contains plugInfo.json and other resources. ```bash └── lib ├── usdex_core.dll ├── usdex_rtx.dll ├── omni_transcoding.dll ├── tbb.dll ├── usd_ms.dll └── usd ├── plugInfo.json └── ... └── resources └── plugInfo.json ``` -------------------------------- ### Linux Minimal USD Exchange File Structure Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/runtime-tree.rst Shows the file structure for a minimal USD Exchange build on Linux with compact dependencies. The usdex_rtx library is optional. It lists the core libraries and USD plugin information. ```bash └── lib ├── libusdex_core.so ├── libusdex_rtx.so ├── libomni_transcoding.so ├── libtbb.so.2 ├── libusd_ms.so └── usd ├── plugInfo.json └── ... └── resources └── plugInfo.json ``` -------------------------------- ### usdex.rtx Module Overview Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/python-usdex-rtx.rst This section documents the `usdex.rtx` module. It includes auto-summaries, platform information (Windows-x86_64, Linux-x86_64), and lists all members and imported members of the module. This documentation is automatically generated. ```Python import usdex.rtx ``` -------------------------------- ### Windows Default USD Exchange File Structure Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/runtime-tree.rst Shows the default file structure for USD Exchange on Windows, including optional Python runtime and usdex_rtx library. It lists the core DLLs, Python modules, and USD plugin information. ```bash ├── lib │ ├── usdex_core.dll │ ├── usdex_rtx.dll │ ├── omni_transcoding.dll | ├── boost_python310-vc142-mt-x64-1_78.dll <-- USD 24.08 & older │ ├── python3.dll │ ├── python310.dll │ ├── tbb.dll │ ├── usd_ar.dll │ ├── usd_arch.dll │ ├── usd_gf.dll │ ├── usd_js.dll │ ├── usd_kind.dll │ ├── usd_ndr.dll │ ├── usd_pcp.dll │ ├── usd_plug.dll │ ├── usd_python.dll <-- USD 24.11 & newer │ ├── usd_sdf.dll │ ├── usd_sdr.dll │ ├── usd_tf.dll │ ├── usd_ts.dll <-- USD 24.11 & newer │ ├── usd_trace.dll │ ├── usd_usd.dll │ ├── usd_usdGeom.dll │ ├── usd_usdLux.dll │ ├── usd_usdShade.dll │ ├── usd_usdUtils.dll │ ├── usd_vt.dll │ └── usd_work.dll | └── usd | ├── plugInfo.json | └── ... | └── resources | └── plugInfo.json ├── python | ├── pxr │ | └── ... | └── usdex | ├── core | │ ├── __init__.py | │ ├── _StageAlgoBindings.py | | ├── _usdex_core.cp310-win_amd64.pyd | │ └── _usdex_core.pyi | └── rtx | ├── __init__.py | ├── _usdex_rtx.cp310-win_amd64.pyd | └── _usdex_rtx.pyi └── python-runtime ├── bin ``` -------------------------------- ### Filtering main tests Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/CONTRIBUTING.md Isolates the `main` tests further by filtering down to a single test file or test pattern using a specified pattern. ```shell repo test -s main -f ``` -------------------------------- ### Linux Default USD Exchange File Structure Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/runtime-tree.rst Shows the default file structure for USD Exchange on Linux, including optional Python runtime and usdex_rtx library. It lists the core libraries, Python modules, and USD plugin information. ```bash ├── lib │ ├── libusdex_core.so │ ├── libusdex_rtx.so │ ├── libomni_transcoding.so │ ├── libboost_python310.so -> libboost_python310.so.1.78.0 <-- USD 24.08 & older │ ├── libboost_python310.so.1.78.0 <-- USD 24.08 & older │ ├── libpython3.10.so -> libpython3.10.so.1.0 │ ├── libpython3.10.so.1.0 │ ├── libpython3.so │ ├── libtbb.so.2 │ ├── libusd_arch.so │ ├── libusd_ar.so │ ├── libusd_gf.so │ ├── libusd_js.so │ ├── libusd_kind.so │ ├── libusd_ndr.so │ ├── libusd_pcp.so │ ├── libusd_plug.so │ ├── libusd_python.so <-- USD 24.11 & newer │ ├── libusd_sdf.so │ ├── libusd_sdr.so │ ├── libusd_tf.so │ ├── libusd_ts.so <-- USD 24.11 & newer │ ├── libusd_trace.so │ ├── libusd_usdGeom.so │ ├── libusd_usdLux.so │ ├── libusd_usdShade.so │ ├── libusd_usd.so │ ├── libusd_usdUtils.so │ ├── libusd_vt.so │ ├── libusd_work.so | └── usd | ├── plugInfo.json | └── ... | └── resources | └── plugInfo.json ├── python | ├── pxr │ | └── ... | └── usdex | ├── core | │ ├── __init__.py | │ ├── _StageAlgoBindings.py | │ ├── _usdex_core.cpython-310-x86_64-linux-gnu.so | │ └── _usdex_core.pyi | └── rtx | ├── __init__.py | ├── _usdex_rtx.cpython-310-x86_64-linux-gnu.so | └── _usdex_rtx.pyi └── python-runtime ├── bin ├── lib └── ... ``` -------------------------------- ### Developer Certificate of Origin (DCO) Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/CONTRIBUTING.md This section presents the Developer Certificate of Origin (DCO) version 1.1, which contributors agree to when submitting code. It outlines the contributor's rights to submit the code under the open-source license and confirms their understanding that the contribution will be public and maintained indefinitely. ```Text Version 1.1 Copyright (C) 2004, 2006 The Linux Foundation and its contributors. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. ``` -------------------------------- ### Disable Omni Transcoding: Edit premake5.lua Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/licenses.md This snippet shows how to disable the NVIDIA Omniverse Transcoding Library by removing the `usdex_build.use_omni_transcoding()` call in `premake5.lua`. This step is necessary to fully remove the dependency on the transcoding library during the build process. ```Lua Edit `premake5.lua` to remove `usdex_build.use_omni_transcoding()` ``` -------------------------------- ### Validating USD data using Asset Validator in Python Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/devtools.md This snippet demonstrates how to use the Omniverse Asset Validator in Python to validate OpenUSD data. It shows how to validate both an existing layer file and a stage created in memory. The `ValidationEngine` is used to perform the validation, and the results are printed. ```python import omni.asset_validator # validate an existing layer file engine = omni.asset_validator.ValidationEngine() print(engine.validate("foo.usd")) # validate a stage in memory stage = Usd.Stage.CreateAnonymous() # define prims engine = omni.asset_validator.ValidationEngine() print(engine.validate(stage)) ``` -------------------------------- ### Disable Omni Transcoding: Edit TfUtils.cpp Source: https://github.com/nvidia-omniverse/usd-exchange/blob/main/docs/licenses.md This snippet shows how to disable the NVIDIA Omniverse Transcoding Library by removing the include statement and the call to `encodeBootstringIdentifier` in `TfUtils.cpp`. This step is necessary to fully remove the dependency on the transcoding library. ```C++ Edit `source/core/library/TfUtils.cpp` to remove `#include ` and the `encodeBootstringIdentifier` call ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.