OpenUSD Binding For Multiple Programming Languange

Hello,Cool Guys

Is there a plan to create bindings for OpenUSD in multiple programming languages? For example Swift/Java/Rust etc. As far as I’m concerned, what I’m particularly looking for at the moment is bindings for Swift. I wonder if Reality Composer Pro was developed using Swift. If it was developed in Swift, could it be considered open source and added to Apple’s development tools as a framework? It is necessary to operate USD on the client side. At present, we know that there is Python binding, but USD can only be operated on the server side. After the operation is completed on the server side, it is returned to the client side. The experience is very unfriendly.

It is possible to create bindings by compiling OpenUSD myself, but since I am not a C++ expert, it will be more difficult to deal with.

Unfortunately right now there aren’t any Swift bindings for OpenUSD.

That said, you could still use it from Swift via a bridging header to call into ObjC++ without binding the whole thing. You can keep all your USD logic in the ObjC++ functions and then expose just those functions via bridging headers to use in Swift.

Since your code is already set up to just have a single Python endpoint on your server, it would likely only be a few functions to expose.

Alternatively you can also embed Python inside your application and use that if you’re more comfortable with Python. You’d still need to bridge over some functions, so I don’t think you’d really gain much other than language familiarity, but libraries like PythonKit might simplify things for you.

Lastly, you could try giving the Swift interop tools a try ( https://swift.org/documentation/cxx-interop/ ) but USD is a fairly large and complex library, so I wouldn’t necessarily recommend this unless you’re very familiar with C++.

My recommendation would be to write your USD side code in C++ and expose just your code via bridging headers to Swift. It’ll be the least amount of work and will give you the most direct access.

The USD Unity SDK has swig bindings setup for C#. In theory, that same swig setup could be a way to generate Swift or other language bindings.

That said, even with the swig setup in place, compiling for a new language is not trivial and does require an expert to add new language support.

(I’m just sharing this as FYI, not as an easy solution)


Jeremy