USD Writer
Universal Scene Description (USD) | |
File Extension | .usd, .usda |
Supported Versions | Any |
Supported Platforms | ![]() ![]() ![]() ![]() ![]() |
Tessellation | ![]() |
B-rep | ![]() |
PMI | ![]() |
USD (Universal Scene Description) is an open-source format developed by Pixar for describing and exchanging complex 3D scenes. It supports hierarchical scene structure, geometry, materials, and metadata, and is widely adopted in visual effects, animation, and real-time simulation.
HOOPS Exchange now includes experimental support for exporting CAD data to USD, enabling early-stage interoperability with USD-based pipelines.
How to Export to USD
Because it’s experimental, a few extra steps are needed to enable USD export.
1. Download the Exporter Library
USD export is available via an additional library, which must be integrated into your HOOPS Exchange installation along with its dependencies.
Download it from the Downloads page. Scroll to the Related Technologies section and choose Experimental USD Writer.

After downloading, extract the archive in the same directory where HOOPS Exchange was originally unpacked. This ensures the new libraries are placed in the correct folder structure.
Refer to Package Description for a detailed breakdown of the package contents.
2. Enable Experimental Features
To enable experimental functionality, define the macro A3DAPI_EXPERIMENTAL
in your project.
You can add it either as a compiler option or directly in your source code before including the HOOPS Exchange headers:
#define A3DAPI_EXPERIMENTAL
#include <A3DSDKIncludes.h>
Ensure this macro is defined in any source file that loads the library or uses the USD exporter.
3. Use the Exporter
To export a model to USD format, use the function A3DAsmModelFileExportToUSDFile()
.
Use the format-specific structure A3DRWParamsExportUSDData
to configure the export process.
#define A3DAPI_EXPERIMENTAL
#include <A3DSDKIncludes.h>
// ...
A3DRWParamsExportUSDData sParamsExportData;
A3D_INITIALIZE_DATA(A3DRWParamsExportUSDData, sParamsExportData);
// ... set export parameter options
A3DAsmModelFileExportToUSDFile(pModelFile, &sParamsExportData, "path/to/file.usd");
Tessellation
The USD writer supports exporting tessellated geometry.
By default, the tessellation detail level is set to medium via A3DETessellationLevelOfDetail
.
You can adjust this by modifying the m_eTessellationLevelOfDetail
member in the export parameters.
Extending the Import Export Sample
The C/C++ Import Export project can be extended to support USD export.
After downloading the writer binaries (see USD writer download section), add the following definition at the top of ImportExport.cpp:
#define A3DAPI_EXPERIMENTAL
GNU/Linux users must also set the LD_LIBRARY_PATH
environment variable to point to the experimental_usd_writer/ directory.
To export, choose an output file with a .usd or .usda extension — the sample will then perform the export automatically.
To explore the sample further, see our tutorial: file-to-file translation.
Supported Platforms
As an experimental feature, the USD writer currently supports a subset of our regular C and C++ Support:
Platform | Architecture | Runtime Environment | Compiler |
---|---|---|---|
Windows | x64 | Windows 10 | MSVC v142 |
Linux | x64 | glibc 2.35
libstdc++.so.6.0
|
GCC 11.4.0 |
Package Description
Here’s a breakdown of the extracted package contents:
Folder/File Description | |
---|---|
readme_experimental_USDwriter.txt | How-to file |
bin/win64_v142/experimental_usd_writer/ | Binaries folder |
bin/win64_v142/experimental_usd_writer/experimental_wusd.dll | Main library file |
bin/win64_v142/experimental_usd_writer/*.dll | Third-party library files |
bin/win64_v142/experimental_usd_writer/usd/ | Third-party runtime resources |
bin/win64_v142/experimental_usd_writer/Third-Party_Licenses/ | Third-party license files |
The USD writer libraries must be located under //bin/win64_v142/experimental_usd_writer. This folder should reside alongside your HOOPS Exchange binaries, including A3DLIBS.dll.

Folder/File Description | |
---|---|
readme_experimental_USDwriter.txt | How-to file |
bin/linux64/experimental_usd_writer/ | Binaries folder |
bin/linux64/experimental_usd_writer/libexperimental_wusd.so | Main library file |
bin/linux64/experimental_usd_writer/*.so | Third-party library files |
bin/linux64/experimental_usd_writer/usd/ | Third-party runtime resources |
bin/linux64/experimental_usd_writer/Third-Party_Licenses/ | Third-party license files |
The library files should be placed under //bin/linux64/experimental_usd_writer. This folder must exist within your HOOPS Exchange installation alongside libA3DLIBS.so.

Dependencies
Legal information regarding third-party libraries is available in the bin/linux64/experimental_usd_writer/Third-Party_Licenses/ directory.