GameFoundry / bsf

Modern C++14 library for the development of real-time graphical applications
https://www.bsframework.io
MIT License
1.74k stars 195 forks source link

Pixar USD support #137

Open boberfly opened 6 years ago

boberfly commented 6 years ago

Hey!

Just making a feature request or rather a discussion about integrating Pixar's USD. Google has recently made an SDK for Unity which contains some C# binds: https://github.com/googlevr/usd-unity-sdk

I'm not familiar with the C# scene API of bsf but this usd-unity-sdk could be rewritten in those parts to target bsf/banshee instead of unity.

BearishSun commented 6 years ago

If this was to be integrated it would need to be in the C++ core. We won't be doing any scripting language specific features since we plan on supporting multiple languages and the feature-set should remain the same across all languages.

I'm not familiar with this format. What are the main benefits of supporting it?

boberfly commented 6 years ago

It's a scene description format which allows stage layering and defining your own formats through a schema. Think of it as the successor to alembic, but it does more than that.

It has quite a few dependencies unfortunately, so I'd only recommend supporting this format as an intermediate editor format of sorts. It's predicted that all the main packages will eventually support this and there are plugins available to Houdini/Maya.

One of the best use cases would be if bs::framework were to be used in a context where tools were developed to manipulate the USD data to pass between other packages (eg. super-fast realtime layout), or to play back cached scenes from a DCC package to render off the GPU, similar to the discussion here: https://github.com/GameFoundry/bsf/issues/130

I don't mind developing this as a third-party plugin, I'm evaluating right now some potential realtime frameworks to make a hybrid raster/raytrace viewport or one that can save out frames for fast rendering in film production, and bs::framework is a strong candidate because Vulkan is first-class but there's a GL fallback without hindering threaded command buffers, as well as a nice high-level scene interface.

christianclavet commented 6 years ago

Would it be better to support Alembic first? FBX is really popular now with game development ALEMBIC is popular in FX SHOPS/MOVIES

This format seem nice, but there is no hint that it would be adopted by the industry. EDIT: There is also the OPENGEX format that is really good for this: (Only good for inport/export, too slow for asset loading) http://opengex.org/