The first release of OpenUSD in 2024 is now available. Below are some of the key features and improvements in OpenUSD v24.03 — thanks to the entire community who contributed to this release.
You can try out the core python libraries of OpenUSD v24.03 by installing it via pip, and all are welcome to provide feedback here.
Full release notes are on GitHub.
UTF-8 identifiers
- OpenUSD now supports Unicode Identifier Syntax, allowing UTF-8 international character sets in prim, property, and variant names, as well as dictionary keys. Non-Roman-based characters may be used in the names of all scene objects, which is especially important when exporting source data from tools that natively support UTF-8, such as Autodesk 3ds Max and Revit and other sources of architectural and manufacturing content in Asian markets.
- Concretely, the following content is now readable by OpenUSD:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#usda 1.0 ( defaultPrim = "天地" ) def Xform "天地" { double3 xformOp:translate = (4, 5, 6) uniform token[] xformOpOrder = ["xformOp:translate"] def Sphere "汽車" { float3[] extent = [(-2, -2, -2), (2, 2, 2)] color3f[] primvars:displayColor = [(0, 0, 1)] double radius = 2 custom string 公司:名 = "我的公司" } } |
- UTF-8 strings and tokens may also be passed to SdfPath API –
1Sdf.Path('/天地/汽車.公司:名') - Content from older releases of OpenUSD, which were limited to the ASCII character set for identifiers, is unaffected.
- Content with UTF-8 identifiers written in OpenUSDv24.03+ will not be readable in older releases of OpenUSD.
- For more details, see the original proposal here, and the documentation here.
- UTF-8 identifiers are also being accounted for in the path grammar specification being drafted in the AOUSD Core Specification Working Group.
Python 3.11
- OpenUSD now supports python 3.11, in accordance with CY2024 for the VFX Reference Platform, which curates the target versions for all major software releases used in visual effects and animation production pipelines each year.
- Running the following command with python 3.11 is the easiest way to install the core libraries from OpenUSD v24.03 (no rendering support) via PyPI
1 |
python -m pip install usd-core |
- The composition engine speeds up resolution of variant selections by temporarily caching information that is encountered repeatedly during prim index computation. This is important for USD experiences that rely heavily upon variants, such as product configurators.
- In a synthetic test case involving a prim with 1000 references, adding 500 variant sets to that prim previously took ~25.5 seconds; it now takes ~6.8 seconds.
- In a production test case with many inherit and variant arcs, the time spent computing variants dropped from ~30 seconds to ~4.5 seconds.
- See here for more details.
Initial formulation of animation splines
- Basic data types such as Bezier curves, and a test harness for spline evaluation, are the first signs of life for animation spline interchange via USD. This would represent a richer set of shaping and timing controls such as knots and tangents over anything animated in the scene, as users working in animation tools such as Autodesk Maya would expect. Interoperability of animation data and controls further broadens the range of animation tools that can natively “speak” USD.
- This is an initial port from the Pixar Presto Animation System, and will evolve to fully implement the features covered in this proposal.
- The implementation and tests will match Autodesk Maya spline evaluation as closely as possible. AnimX and mayapy are invoked by the test harness for comparison to ensure this.
- See documentation on the test harness for animation splines.
- Integration into USD content will come in future releases.
Nascent implementation of the UsdNamespaceEditor
- Namespace editing encompasses the ability to rename and reparent prims in the stage hierarchy. The UsdNamespaceEditor introduces more convenient, higher-level facilities for these operations at the UsdStage level. This is important for developers to more easily implement renaming and reparenting workflows in USD for restructuring of scenes in both media and entertainment as well as industrial cases such as factory planning.
- Previously, namespace edits could only be applied on individual layers via the Sdf API, and developers needed to manually repair any dependencies such as relationship targets pointing at the affected prims.
- The initial implementation includes basic prim and property edits with property target path fixing in the local layer stack only (i.e., in sublayers).
- Future releases will provide more complete functionality and documentation of features noted in the namespace editing proposal.
Support for tetrahedral meshes
- Tetrahedral meshes are useful as coarser, solid geometric representations in physics simulations. Having native USD representations for them opens the door to broader interoperability with any physics engine.
- UsdGeom now contains a schema for tetrahedral meshes, and rendering support is included via UsdImaging and Storm.
Check out the full release notes on GitHub and feel free to provide feedback on the release here.
If your company is interested in joining the Alliance for OpenUSD, sign up to become a member. Follow AOUSD on Facebook, Instagram, LinkedIn, X, and YouTube, and get support from our community of artists, designers, and developers in our forum.