Skip to content

Commit c486f05

Browse files
committed
- Release of 2026.03.0
1 parent d00097d commit c486f05

191 files changed

Lines changed: 7432 additions & 3501 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.clang-format

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
BasedOnStyle: Mozilla
3+
TabWidth: '4'
4+
IndentWidth: '4'
5+
AccessModifierOffset: -4
6+
ColumnLimit: 100
7+
AlignAfterOpenBracket: Align
8+
AlignEscapedNewlines: Left
9+
MaxEmptyLinesToKeep: 1
10+
AllowShortBlocksOnASingleLine: Empty
11+
BreakBeforeBraces: Custom
12+
BraceWrapping:
13+
AfterCaseLabel: false
14+
AfterClass: true
15+
AfterControlStatement: Never
16+
AfterEnum: true
17+
AfterFunction: true
18+
AfterNamespace: false
19+
AfterObjCDeclaration: false
20+
AfterStruct: true
21+
AfterUnion: true
22+
AfterExternBlock: true
23+
BeforeCatch: false
24+
BeforeElse: false
25+
BeforeLambdaBody: false
26+
BeforeWhile: false
27+
IndentBraces: false
28+
SplitEmptyFunction: false
29+
SplitEmptyRecord: false
30+
SplitEmptyNamespace: true
31+
...

.github/workflows/ci.yml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,7 @@ jobs:
205205
"-DUSD_FILEFORMATS_ENABLE_FBX=$([[ "${{ matrix.config }}" == "ALL" || "${{ matrix.config }}" == "FBX" ]] && echo "ON" || echo "OFF")"
206206
"-DFBXSDK_ROOT=${{ env.FBX_INSTALL_DIR }}"
207207
"-DUSD_FILEFORMATS_BUILD_TESTS=ON"
208-
"-DOpenImageIO_INCLUDE_DIR=${{ github.workspace }}/usd_build/include"
209-
"-DOpenImageIO_INCLUDES=${{ github.workspace }}/usd_build/include"
208+
"-DOpenImageIO_ROOT=${{ github.workspace }}/usd_build"
210209
"-DPython3_LIBRARY="
211210
"-DPython3_INCLUDE_DIR="
212211
"-DPython3_VERSION=3.10.11"
@@ -218,12 +217,8 @@ jobs:
218217
else
219218
libFolder="lib"
220219
fi
221-
platformArgs=(
222-
"-DOpenImageIO_DIR=${{ github.workspace }}/usd_build/${libFolder}/cmake/OpenImageIO"
223-
"-DOpenImageIO_LIB_DIR=${{ github.workspace }}/usd_build/${libFolder}/cmake/OpenImageIO"
224-
)
225220
226-
fullCmakeArgs="$baseArgs ${commonArgs[@]} ${platformArgs[@]}"
221+
fullCmakeArgs="$baseArgs ${commonArgs[@]}"
227222
cmake $fullCmakeArgs
228223
229224
- name: Build and Display Linker Command

.github/workflows/create-usd-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
steps:
2020
- id: set-matrix
2121
run: |
22-
OS_LIST="[\"windows-2022\",\"macOS-13\""
22+
OS_LIST="[\"windows-2022\""
2323
if [[ "${{ github.event.inputs.usd_version }}" -gt 2400 ]]; then
2424
OS_LIST="$OS_LIST,\"macOS-14\""
2525
fi

.gitignore

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
*.out
3434
*.app
3535

36+
# Build artifacts
3637
*build*/
3738
build-meta
3839

@@ -44,17 +45,22 @@ build-meta
4445
.vscode/*
4546
.idea
4647

48+
# All python cache directories and bytecode files
49+
**/__pycache__
50+
4751
# Generated documentation
4852
docs
4953
Testing
5054
bin
51-
test/__pycache__
5255
test/output
5356
test/assets/fbx/*.usd
5457
test/assets/gltf/*.usd
5558
test/assets/obj/*/*.usd
5659
test/assets/ply/*.usd
5760
test/assets/stl/*.usd
5861

59-
# .DS_Store
62+
# macOS system files
6063
.DS_Store
64+
65+
# local cache
66+
*.cache

CMakeLists.txt

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
cmake_minimum_required(VERSION 3.16.0)
1+
cmake_minimum_required(VERSION 3.19.0)
2+
23
project(usdFileFormats)
34

4-
file(READ "version" VERSION)
5+
file(READ "version.json" VERSION_JSON)
6+
string(JSON VERSION GET "${VERSION_JSON}" version)
57
string(REGEX MATCH "([0-9]*).([0-9]*).([0-9]*)" _ ${VERSION})
68
set(CPACK_PACKAGE_VERSION_MAJOR ${CMAKE_MATCH_1})
79
set(CPACK_PACKAGE_VERSION_MINOR ${CMAKE_MATCH_2})
@@ -97,26 +99,44 @@ endif ()
9799

98100
add_subdirectory(utils)
99101

102+
# Add a new file format to the build. This macro will add the relevant subdirectory and set the
103+
# installation destination needed by that plugin's CMakeLists.txt so it installs into
104+
# usd-fileformats-plugins/bin/plugin/usd
105+
#
106+
# New variables:
107+
# - USD${FILEFORMAT}_DESTINATION: Where the fileformat libraries will be installed. This will
108+
# typically be "plugin/usd"
109+
# Example: USDFBX_DESTINATION
110+
#
111+
# @param SUBDIRECTORY_NAME The name of the subdirectory to add. This should be the same name as
112+
# directory of the plugin, and will typically be all lowercase
113+
macro(add_usd_fileformat SUBDIRECTORY_NAME)
114+
string(TOUPPER ${SUBDIRECTORY_NAME} FILEFORMAT)
115+
116+
set(USD${FILEFORMAT}_DESTINATION "plugin/usd")
117+
add_subdirectory(${SUBDIRECTORY_NAME})
118+
endmacro()
119+
100120
if (USD_FILEFORMATS_ENABLE_FBX)
101-
add_subdirectory(fbx)
121+
add_usd_fileformat(fbx)
102122
endif()
103123
if (USD_FILEFORMATS_ENABLE_GLTF)
104-
add_subdirectory(gltf)
124+
add_usd_fileformat(gltf)
105125
endif()
106126
if (USD_FILEFORMATS_ENABLE_OBJ)
107-
add_subdirectory(obj)
127+
add_usd_fileformat(obj)
108128
endif()
109129
if (USD_FILEFORMATS_ENABLE_PLY)
110-
add_subdirectory(ply)
130+
add_usd_fileformat(ply)
111131
endif()
112132
if (USD_FILEFORMATS_ENABLE_SBSAR)
113-
add_subdirectory(sbsar)
133+
add_usd_fileformat(sbsar)
114134
endif()
115135
if (USD_FILEFORMATS_ENABLE_SPZ)
116-
add_subdirectory(spz)
136+
add_usd_fileformat(spz)
117137
endif()
118138
if (USD_FILEFORMATS_ENABLE_STL)
119-
add_subdirectory(stl)
139+
add_usd_fileformat(stl)
120140
endif()
121141

122142
if (UNIX AND NOT APPLE)

README.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ The following tools are needed:
4242
The following dependencies are needed:
4343
|Dependency|Version|Affects|Optional|
4444
|--|--|--|--|
45-
| [Pixar USD](https://github.com/PixarAnimationStudios/USD) | 23.08 | all | no |
45+
| [Pixar USD](https://github.com/PixarAnimationStudios/USD) | 23.08-25.11 | all | no |
4646
| [GTest](https://github.com/google/googletest.git) | 1.11.0 | all tests | yes |
4747
| [Eigen](https://gitlab.com/libeigen/eigen) | 3.4.0 | usdply, usdspz | no |
4848
| [FBX SDK](https://aps.autodesk.com/developer/overview/fbx-sdk) | 2020.3.7 | usdfbx | no |
@@ -57,6 +57,13 @@ The following dependencies are needed:
5757
| [Spz](https://github.com/nianticlabs/spz) | fd4e2a5 | usdspz | no |
5858
| [Substance](https://developer.adobe.com/substance3d-sdk/) | 9.1.2 | usdsbsar | no |
5959

60+
61+
## Coding Standards
62+
Linting standards are defined within ./.clang-format. All changes within pull requests are expected to now follow these standards. To ensure this, it is advised setup IDEs with format on save features. Alternatively, formatting can be run on all cpp and header files by running the following bash command:
63+
```
64+
find . -iname '*.h' -o -iname '*.cpp' | xargs clang-format -i
65+
```
66+
6067
## Build
6168

6269
### 1. Setup dependencies
@@ -83,6 +90,8 @@ The following dependencies are needed:
8390
* `<USD_INSTALL_PATH>/lib64` to `LD_LIBRARY_PATH` in linux
8491
* `<USD_INSTALL_PATH>/lib/python` to `PYTHONPATH`
8592
93+
If USD was built with Python (default behavior with the build script), ensure the environment has access to the Python it was built with. In particular, on Windows, ensure that PATH includes the location of the Python dll used. (Alternatively, the Python dll can also be copied into `<USD_INSTALL_PATH>/bin`).
94+
8695
In linux you may need these other dependencies:
8796
```
8897
sudo apt update
@@ -224,7 +233,7 @@ Our GitHub Actions setup includes two main workflows to support continuous integ
224233

225234
### 1. CI Build Workflow
226235
This workflow is triggered by any push or pull request to the main branch and ensures compatibility with Universal Scene Description (USD) versions:
227-
- **Versions Tested:** Builds against the oldest (23.08) and newest (24.05) supported USD versions regularly.
236+
- **Versions Tested:** Builds against the oldest (23.08) and newest (25.11) supported USD versions regularly.
228237
- **Weekly Builds:** The workflow builds against all supported USD versions to confirm ongoing compatibility.
229238
- **Post-Build Testing:** Following the build, each plugin undergoes sanity testing, including loading a cube to check basic functionality.
230239
- **Supported Plugins:** Currently supports FBXm GLTF, OBJ, PLY, and STL. Note: SBSAR plugin is not supported due to SDK constraints.

_config.yml

Whitespace-only changes.

changelog.txt

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,96 @@
1+
v2026.03.0 March 6th, 2026
2+
3+
Features
4+
fbx
5+
- add generator metadata to USD
6+
- support bitangents/tangents during import/export
7+
gltf
8+
- support khr_materials_volume_scatter extension
9+
- add support for textures with brackets in their file names
10+
- support EXT_materials_specular_edge_color & EXT_materials_clearcoat_color
11+
- support bitangents/tangents during import/export
12+
- add support for KHR_materials_coat extension
13+
- Skip invalid IOR values < 1.0
14+
obj
15+
- allow single value for ke material setting
16+
sbsar
17+
- expose uv texture repeat controls
18+
- panorama support
19+
- allow for unlimited cache
20+
- relative image path resolution
21+
stl
22+
- support empty normals on import
23+
utils
24+
- increase MaterialX OpenPBR support
25+
26+
Fixes
27+
fbx
28+
- fix mesh import when fbx mesh is a root node
29+
- do not require `gtest` if tests are disabled
30+
- bind meshes that have materials but no elementmaterials
31+
- add 'triangulatemeshes' import option to allow control of whether triangulation should be performed
32+
- fix material property mapping for non lambert/phong shader models
33+
- fix FBX standard material import
34+
- skeleton index validation / avoid default indexes / out of bounds checks
35+
- fix skeletal animation for joints that only have curves on individual channels
36+
- Handle color spaces correctly according to declared parameters
37+
- Armature scale is applied only once through the USD hierarchy
38+
gltf
39+
- fix material index lookup when material is missing
40+
- improved support for gltf scattering extension
41+
- add generator metadata to USD
42+
- fix various crashes
43+
- fix inverted normal maps
44+
- add input validation to prevent memory corruption vulnerabilities
45+
- update readme to fix param name
46+
obj
47+
- replace backslash with slash in texture filepath
48+
- fix crash on loading a file > 2gb
49+
- adding computeNormals to SDF_FORMAT_ARG
50+
- cpp 20 compilation fix
51+
- Adjust FMT library dependency in the OBJ plugin to solve linker issues
52+
ply
53+
- fix reading gsplat sh coefficients
54+
- fix export issues when not all meshes have uvs or normals
55+
- remove clipping to SH0 for Gsplat
56+
- fix GSplat import and export and add support to SH4
57+
sbsar
58+
- switching the default normal format to sbsar
59+
- specifying substance engine/framework for arm64
60+
- folder/subfolder support when parsing SBSAR files
61+
- filter SBSAR by graph type
62+
- increase default cache size to 2GB for smooth 4K texture handling
63+
- tests fix double free error on Linux by removing getRenderThreadState() in destructor
64+
- tag texture attributes with color space information for MaterialX/OpenPBR
65+
- Fix conversion of sbsar displacement to OpenPBR
66+
- Revamp heuristic fallbacks for procedural input image path resolution
67+
- Add inverted uv scale for use with openpbr
68+
- Correct normal scale / bias in directx style sbsar files for OpenPBR
69+
spz
70+
- remove clipping to SH0 for Gsplat
71+
- fix GSplat import and export and add support to SH4
72+
stl
73+
- reverse normals on export
74+
- calculate geometric normals on import
75+
utils
76+
- improve shared file format args
77+
- refactor input struct & material processing
78+
- fix for crash in smooth normals computation
79+
- add asset path to input:file property of UsdPreviewSurface and ASM shaders
80+
- switch to `ND_UsdUVTexture_23` for texture reads in OpenPBR/MaterialX networks
81+
- add type checking to `setAttributeDefaultValue()` to catch invalid data
82+
- check for empty values when setting the default value and forgo the type check
83+
- readLayer to correctly processes instancing setups
84+
- OpenPBR oriented material reading
85+
- add general `preserveExtraMaterialInfo` file format argument
86+
- improvements on ASM to OpenPBR conversion
87+
- updating third-party dependencies
88+
89+
Build System
90+
utils
91+
- update test baseline images for 24.11 renderer changes
92+
- updated the baselines images for the fbx plugins to match colorspace changes
93+
194
v1.2.0 October 22nd, 2025
295
fbx:
396
- fix mesh import when fbx mesh is a root node

cmake/FindGTest.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ if(USD_FILEFORMATS_FORCE_FETCHCONTENT OR USD_FILEFORMATS_FETCH_GTEST)
3838
CPMAddPackage(
3939
NAME googletest # using GTest here triggers errors
4040
GIT_REPOSITORY "https://github.com/google/googletest.git"
41-
GIT_TAG "release-1.11.0"
41+
GIT_TAG "v1.17.0"
4242
)
4343
set(BUILD_SHARED_LIBS ON)
4444

@@ -49,4 +49,4 @@ else()
4949
else()
5050
find_package(GTest CONFIG)
5151
endif()
52-
endif()
52+
endif()

cmake/FindLibXml2.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ if(USD_FILEFORMATS_FORCE_FETCHCONTENT OR USD_FILEFORMATS_FETCH_LIBXML2)
4040
CPMAddPackage(
4141
NAME LibXml2
4242
GIT_REPOSITORY "https://github.com/GNOME/libxml2.git"
43-
GIT_TAG "ae383bdb74523ddaf831d7db0690173c25e483b3" # Release v2.10.0
43+
GIT_TAG "v2.13.0"
4444
)
4545
set(LibXml2_FOUND TRUE)
4646
else()
@@ -50,4 +50,4 @@ else()
5050
else()
5151
find_package(LibXml2 CONFIG)
5252
endif()
53-
endif()
53+
endif()

0 commit comments

Comments
 (0)