Omniverse Transcoding

Why is the project being developed?

Users of OpenUSD in non-English speaking regions and users in a variety of domains (mechanical, manufacturing, electrical, automotive, etc.) desire the ability to name USD primitives with identifiers that are unallowable by the specification.

Currently, the OpenUSD specification only allows for prim names and other identifiers to be:

  • Non-empty strings

  • Start with an alpha character [A-Za-z] or underscore

  • Only be composed of characters in the set of [A-Za-z0-9_]

This prevents users from using the following (non-comprehensive list):

  • Unicode characters for non-english languages

  • Only numeric identifiers / or identifiers starting with a numeric character

  • Separating/Delineating characters such as forward slash (/), semicolon (:), dash (-), at (@), etc.

While OpenUSD will support XID identifiers in v24.03, users may be dealing with toolchains and pipelines that aren’t fully UTF-8 as v24.03+ rolls out across the ecosystem over the next year. Additionally, it does not fully address using characters/symbols that are reserved in OpenUSD. This library looks to address this problem.

What problem does it solve?

We aim to let users have identifiers with any character in the UTF-8 namespace regardless if it is valid or not in OpenUSD specification.

What are the main functions of the project?

The main function of the project is to implement an interface (i.e., API Schema or free function) that can take any identifier (potentially with invalid characters) and transform it into a OpenUSD valid identifier. The process must be reversible, unique, and easily identifiable.

We address the problems presented above with transcoding. Transcoding is the translation from one domain (illegal characters) to another domain (legal characters), this translation allows a lightweight shim between applications and USD data to preserve identifiers. This complements other approaches such as adding UTF-8 prim name support for OpenUSD, while also allowing legacy toolchains and pipelines to benefit.