top of page
fond.png

Better USD

simplifies your USD workflows across DCCs

1) How to install Better USD and your first steps in the interface

To install Better USD, simply unzip the ZIP file using WinRAR or any similar software, then place the "Better_USD" folder wherever you want.

​

Next, go into the app folder and launch the .exe or the .bat file.

comment installer better USD
image.png

After launching the application, you will be presented with this interface.

interface better USD fonctionnement et logique

You have the option to create a shortcut on your desktop by running the batch file "create_shortcut_on_your_deck.bat".

image.png

You can follow the full tutorial Video to learn how to use the tool.

3) Add Integration in DCCs

To integrate Better USD into different DCCs, you can go to the Better USD settings, open the “Integration” tab, and then choose whether or not to add integrations to your DCC.

comment faire l'intégration dans better usd

Then you can click on “Add” and provide the path that points to the Maya modules or the Houdini packages, depending on your DCC version.

Sans titre.png
image.png

2) How to use the Path resolver and Prims resolver

In Better USD, you have the ability to use expressions in your parameters to resolve or retrieve paths for specific elements. It is an efficient regex-based system designed to optimize your work and workflow. In one of your parameters, instead of using a full path to save your USD file, for example if you want create a file "d:/myFolder/blabla/for/my/file.usd" you can use <ws> to reference the workspace of your Better USD scene, which would result in "<ws>/my/file.usd" 

​

  • <ws>
    This expression lets you retrieve the folder where the scene is located. If no scene is saved, it will use the location of the BetterUSD file on your disk.

    • Example:

      • Your scene is saved at d:/documents/folder/myProjet/scene/fileBetterUSD.btu
        <ws> will return d:/documents/folder/myProjet/scene

​

​

  • <wsDCC>
    This expression works the same way as <ws>, but it retrieves the scene folder during publishing. If you are on Maya, it will use the Maya scene location.
    if you are on Houdini, it will use the Houdini scene location. This is very useful when you want to create multiple USD stacks at different locations but with the same workflow. If no scene is saved, it will use the BetterUSD file location on your disk.

    • Examples:

      • You have opened a Houdini scene pointing to d:/documents/folder/sceneHoudini/fileHoudini.hip → <wsDCC> returns d:/documents/folder/sceneHoudini

      • You have opened a Maya scene pointing to d:/documents/folder/sceneMaya/modeling/fileMaya.ma → <wsDCC> returns d:/documents/folder/sceneMaya/modeling

      • You have opened a BetterUSD scene pointing to d:/documents/folder/general/fileBetterUSD.btu → <wsDCC> returns d:/documents/folder/general

​

​

  • <version>
    This expression works in two different ways depending on whether the Incremental Save parameter is checked or not. By default, if Incremental Save is not checked, it will look in the path set in the parameter and find the latest existing version in your folder. If Incremental Save is checked, it will find the latest version on disk and create the next one.

    • Example without Incremental Save:

      • If your parameter is set to d:/documents/folder/Export/USD/v<version>/myfile.usda, <version> will be replaced by the latest existing version in d:/documents/folder/Export/USD. If the latest version is v002, the result will be d:/documents/folder/Export/USD/v002/myfile.usda.
         

    • Example with Incremental Save:

      • If your parameter is set to d:/documents/folder/Export/USD/v<version>/myfile.usda, <version> will be replaced by the next version. If the latest version is v002, the result will be d:/documents/folder/Export/USD/v003/myfile.usda. A new version (n+1) is created on each export.
         

    • Expression completion: You can add %2d, %5d, etc. inside <version> to choose the number of digits in your versioning. <version%5d> gives 5 digits (00001), <version%2d> gives 2 digits (01), <version%6d> gives 6 digits (000001), etc.
      By default, <version> uses 3 digits (001), so <version> == <version%3d>.

​

​

  • <date>
    This expression retrieves the current date, hour, and minutes.

    • Example:

      • If your parameter is set to d:/documents/folder/Export/USD/<date>/myfile.usda, <date> will be replaced by 2026_03_31 (format %Y_%m_%d), giving d:/documents/folder/Export/USD/2026_03_31/myfile.usda.

​

​

  • <frame>
    Retrieves the current frame in your scene.

    • Example:

      • If your parameter is set to d:/documents/folder/Export/USD/<frame>/myfile.usda and the current frame is 1001, the result will be d:/documents/folder/Export/USD/1001/myfile.usda.

​

​

  • <node:/node/path%prim>
    This expression lets you retrieve information from a given node. By specifying a node path such as <node:/root/create_Primitive%prim>, you create a connection to that node, from which you can extract information using expression completions.

    • Example without completion:

      • If your parameter contains <node:/root/create_Primitive%prim>, you will retrieve all prim paths created by the node /root/create_Primitive. If that node created 3 prims — /assets/primA, /assets/primB, /assets/primC — then the parameter will return that list.
         

    • Completion :Name:

      • <node:/root/create_Primitive%prim:Name> returns the names of the prims: primA, primB, primC.
         

    • Completion :Parent:

      • <node:/root/create_Primitive%prim:Parent> returns the parent names of the prims. If the prims are /assets/Props/primA, /assets/Props/primB, /assets/characters/primC, it returns Props and characters.
         

    • Completion :PathParent:
      <node:/root/create_Primitive%prim:PathParent> returns the full parent paths of the prims: /assets/Props and /assets/characters. You can use %3d, %5d, etc. with :PathParent to select a specific depth in the path.
       

    • Completion :Root:

      • <node:/root/create_Primitive%prim:Root> returns the root names of the prims. For /assets/Props/primA, /assets/Props/primB, /assets/characters/primC, it returns assets.
         

    • Completion :PathRoot:

      • <node:/root/create_Primitive%prim:PathRoot> returns the full root paths of the prims: /assets and /assets. You can use %3d, %5d, etc. with :PathRoot to select a specific starting depth in the path.

​

​

  • <ext>
    This expression retrieves the file extension from the path defined in your parameter.

    • Example:

      • If your parameter is set to d:/documents/folder/Export/myfile.<ext>, <ext> will be replaced by the file's extension — usda, ma, mb, hip, etc. — giving results like:
        d:/documents/folder/Export/myfile.usda
        d:/documents/folder/Export/myfile.usdc
        d:/documents/folder/Export/myfile.usd

​

​

  • */ and /**
    In any parameter that deals with prim paths, you can use /* and /** to retrieve children and the full hierarchy of children.

    • Example with /*:

      • /assets/* retrieves all direct children of /assets. If it has 3 children props, characters, env. you get /assets/props, /assets/characters, /assets/env.
         

    • Example with /**:

      • /assets/** retrieves the entire hierarchy recursively, down to the deepest level. For example: /assets/props, /assets/props/plate, /assets/props/plate/geo, /assets/props/cube, /assets/props/cube/geo, /assets/characters, /assets/characters/bob, /assets/characters/bob/mouth_grp, /assets/characters/fabien, /assets/env, /assets/env/ground, /assets/env/ground/grass, etc.

​

​

  • & <kind:>
    When using /* or /**, you can filter results using & <kind:"typeKind"> to retrieve only prims of a specific kind: component, group, subcomponent, etc.

    • Example with /assets/* & <kind:component>:

      • If /assets has 3 children — props, characters, env — and only props has the kind component, only /assets/props will be returned.

​

​

  • & <typeName:>
    When using /* or /**, you can also filter using & <typeName:"typeName"> to retrieve only prims of a specific USD type: Mesh, Xform, Scope, BasisCurves, etc.

    • Example with /assets/** & <typeName:Mesh>:

      • This retrieves all prims in the full hierarchy whose type is Mesh, such as /assets/props/car/geo/wheel_R, /assets/characters/fabien/geo/body, /assets/characters/fabien/geo/arms, etc.

4) Available environment variables and logs

Better USD provides several environment variables that you can set up. They are used to customize your Better USD experience, enable or disable features, and simplify workflows.

  • PXR_AR_DEFAULT_SEARCH_PATH

    This allows you to set up paths for the USD Asset Resolver. It may be used to specify an initial search path value. This is expected to be a list of directories delimited by the platform’s standard path separator. A search path specified this way is overridden by any call to ArDefaultResolver.

​

​

  • BETTER_USD_LOGOUT
    Allows you to choose the destination for logs created by Better USD. A valid folder path is required for it to work.

​

​

  • BETTER_USD_CUSTOM_NODE
    Allows you to define a path to a folder containing your custom Better USD nodes. You can add multiple paths and use several valid directories. 

​

​

  • BETTER_USD_DCC_SCENE_GRAPH
    Allows you to set a default path across different DCCs. Instead of selecting a Better USD file manually in each DCC, this variable lets you define a valid .btu file path to automatically load a preconfigured execution graph in the DCCs.

For logs, you can open or clear them directly from the user interface. On Windows, there are two buttons: the first one, "Open Logs", opens the folder where the logs are stored, and the second one allows you to delete and clear all the logs in that folder.

better USD system de logs et comment clean les logs
bottom of page