Unlock the Power of OpenUSD: A Guide to Building Custom Plugins (Boost Your 3D Workflow!)
Dive into the world of OpenUSD plugin development and learn how to customize your 3D workflows! This guide unpacks the NVIDIA-Omniverse/OpenUSD-plugin-samples repository, providing you with the knowledge and tools to create custom schemas, file format plugins, dynamic payloads, and Hydra 2 scene indices. Supercharge your 3D projects and tailor OpenUSD to your exact needs!
What You'll Discover
- How to build custom OpenUSD schemas for unique data representation.
- The secrets to crafting file format plugins for seamless data import/export.
- How to implement dynamic payloads for efficient scene loading and management.
- How to leverage Hydra 2 scene indices for advanced rendering techniques.
Jumpstart Your OpenUSD Plugin Journey
This repository is designed to get you up and running quickly. Start by forking the repository, removing unnecessary components, and customizing the provided samples. The included tools support pre-created builds of OpenUSD, but also allow you to bring your own OpenUSD builds for greater flexibility!
Quick Start: Setting Up Your Environment
- Prerequisites: Ensure you have CMake 3.23.1 or later installed and accessible through your system's PATH.
- Construction: Use CMake to build OpenUSD plugins.
- Boost Your Workflow: Use provided tools to build the libraries and configure the environment to enable you to load the sample scenes in usdview
- Build: Build the libraries and configure your environment to load sample scenes from the comfort of usdview.
- The commands provided work seamlessly in Linux environments or Git-Bash on Windows.
- Additional notes: Learn about additional notes regarding building custom OpenUSD schemas, and how to package them with NVIDIA Omniverse Extensions.
Exploring Sample Scenes: Practical Examples in Action
The repository includes a variety of sample scenes showcasing the capabilities of different plugin types.
- Dynamic Payloads: Experience deferred data loading with the
resources/scene.usda
sample. Right-click "MetropolitanMuseumOfArt" inusdview
and select "Load" to fetch data via REST APIs, illustrating a dynamic scene structure. - Hydra 2 Geospatial Coordinates: Visualize WGS84 coordinates with the
resources/wgs84/deutschebahn-rails.usda
sample. See how Hydra 2 resolves source WGS84 coordinates. - Hydra 2 Metrics Assembler: Experiment with the
resources/metrics_assembler.usda
sample to understand howmetersPerUnit
values affect scene scaling. - Hydra 2 Warp: Explore mesh deformation and physics simulation with warp using the
warp_demo_mesh.usda
andwarp_demo_sim.usda
samples.
Understanding the Project Structure
The repository is organized for clarity and ease of use:
/deps
: Contains dependencies./src
: Houses all example source code, separated by plugin type:/hydra-plugins
: Hydra 2 scene index plugins./kit-extension
: Kit extension examples./usd-plugins
: Core USD plugin types:/dynamicPayload
: Demonstrates dynamic payload creation./fileFormat
: Shows file format plugin development./schema
: Illustrates custom schema definition.
/tools
: Build and execution infrastructure.
Supporting files such as build.bat
, build.sh
, setenvwindows
, setenvlinux
, setenvwindows.bat
are in place to support the build and execution infrastructure necessary to create the plugin libraries. This infrastructure leverages NVIDIA's packman tool to pull pre-built packages.
Essential Folders: Your Workspace
_build
: Stores generated build artifacts._install
: Contains built and staged plugins._venv
: Holds a virtual environment for running samples inusdview
.
Key Takeaways
This repository provides a solid foundation for OpenUSD plugin development. From custom schemas to advanced Hydra 2 integrations, the examples equip you with the practical knowledge to extend OpenUSD's capabilities. Customize your 3D workflows and unlock new possibilities to become a master of OpenUSD.