/VFX-UsdAssetResolver

Usd Asset Resolver Reference Implementations

Primary LanguagePythonApache License 2.0Apache-2.0

OpenUSD Asset Resolver

Deploy Documentation to GitHub Pages Build USD Asset Resolvers against Houdini

This repository holds reference implementations for Usd asset resolvers. The resolvers are compatible with the AR 2.0 standard proposed in the Asset Resolver 2.0 Specification. As the Usd documentation offers quite a good overview over the overall asset resolution system, we will not be covering it in this repository's documentation.

Installation

To build the various resolvers, follow the instructions in the install guide.

Note

This guide currently covers compiling against Houdini on Linux and Windows. Alternatively you can also download a pre-compiled builds on our release page. To load the resolver, you must specify a few environment variables, see our environment variables section for more details.

Important

We also offer a quick install method for Houdini that does the download of the compiled resolvers and environment variable setup for you. This is ideal if you want to get your hands dirty right away and you don't have any C++ knowledge or extensive USD developer knowledge. If you are a small studio, you can jump right in and play around with our resolvers and prototype them further to make it fit your production needs.

To run the "Update Manager" simply run this snippet in the "Houdini Python Source Editor" panel:

import urllib,ssl
update_manager_url = 'https://raw.githubusercontent.com/LucaScheller/VFX-UsdAssetResolver/main/tools/update_manager.py?token=$(date%20+%s)'
exec(urllib.request.urlopen(update_manager_url,context=ssl._create_unverified_context()).read(), globals(), locals())
run_houdini()

See our Automatic Installation section for more information.

Feature Overview

Asset resolvers that can be compiled via this repository:

  • Production Resolvers
    • File Resolver - A file system based resolver similar to the default resolver with support for custom mapping pairs as well as at runtime modification and refreshing.
    • Cached Resolver - A resolver that first consults an internal resolver context dependent cache to resolve asset paths. If the asset path is not found in the cache, it will redirect the request to Python and cache the result. This is ideal for smaller studios, as this preserves the speed of C++ with the flexibility of Python.
  • RnD Resolvers
    • Python Resolver - Python based implementation of the file resolver. The goal of this resolver is to enable easier RnD by running all resolver and resolver context related methods in Python. It can be used to quickly inspect resolve calls and to setup prototypes of resolvers that can then later be re-written in C++ as it is easier to code database interactions in Python for initial research.
  • Proof Of Concept Resolvers
    • Http Resolver - A proof of concept http resolver. This is kindly provided and maintained by @charlesfleche in the arHttp: Offloads USD asset resolution to an HTTP server repository. For documentation, feature suggestions and bug reports, please file a ticket there. This repo handles the auto-compilation against DCCs and exposing to the automatic installation update manager UI.

For more information check out the building guide as well as the individual resolvers to see their full functionality.

Contributing and Acknowledgements

Special thanks to Jonas Sorgenfrei for helping bring this project to life as well as all the contributors on the Usd-Interest forum, particularly Mark Tucker, ColinE, Jake Richards, Pawel Olas, Joshua Miller US, Simon Boorer.

Post of relevance in the Usd-Interest Forum to this repo:

Please consider contributing back to the Usd project in the official Usd Repository and via the Usd User groups.

Feel free to fork this repository and share improvements or further resolvers. If you run into issues, please flag them by submitting a ticket.