Giter Club home page Giter Club logo

blenderusdhydraaddon's People

Contributors

ardraeiss avatar bnagirniak avatar bsavery avatar dagerd avatar kant avatar radeonprorender avatar vascopi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blenderusdhydraaddon's Issues

lib import error in Linux Mint

Hello,
in Mint 20 seems like lib python is not properly linked.

Modules Installed (hdusd) from '/home/production/Desktop/BlenderUSDHydraAddon_1.0.65_Ubuntu20.zip' into '/home/production/.config/blender/3.0/scripts/addons'
2022-01-11 03:08:14,966 INFO hdusd.init [139722004775424]:  Loading USD Hydra addon version=(1, 0, 65), build=2592849
Traceback (most recent call last):
  File "/home/production/Apps/Graphic_Apps/Blender/3.0/scripts/modules/addon_utils.py", line 351, in enable
    mod = __import__(module_name)
  File "/home/production/.config/blender/3.0/scripts/addons/hdusd/__init__.py", line 39, in <module>
    from . import engine, properties, ui, usd_nodes, mx_nodes, bl_nodes
  File "/home/production/.config/blender/3.0/scripts/addons/hdusd/engine/__init__.py", line 39, in <module>
    from . import engine, handlers
  File "/home/production/.config/blender/3.0/scripts/addons/hdusd/engine/engine.py", line 21, in <module>
    from ..utils.stage_cache import CachedStage
  File "/home/production/.config/blender/3.0/scripts/addons/hdusd/utils/stage_cache.py", line 15, in <module>
    from pxr import Usd
  File "/home/production/.config/blender/3.0/scripts/addons/hdusd/libs/lib/python/pxr/Usd/__init__.py", line 24, in <module>
    from pxr import Tf
  File "/home/production/.config/blender/3.0/scripts/addons/hdusd/libs/lib/python/pxr/Tf/__init__.py", line 163, in <module>
    PreparePythonModule()
  File "/home/production/.config/blender/3.0/scripts/addons/hdusd/libs/lib/python/pxr/Tf/__init__.py", line 88, in PreparePythonModule
    module = importlib.import_module(
  File "/home/production/Apps/Graphic_Apps/Blender/3.0/python/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ImportError: libpython3.9.so.1.0: cannot open shared object file: No such file or directory
 

Cannot enable addon on Windows 10

I downloaded BlenderUSDHydraAddon_1.0.21_Windows.zip, installed with the Blender add-on UI, and I get the following error:

2021-09-22 10:57:11,539 INFO hdusd.init [16336]:  Loading USD Hydra addon version=(1, 0, 21), build=b0bf57e
Traceback (most recent call last):
  File "C:\Program Files (x86)\Steam\steamapps\common\Blender\2.93\scripts\modules\addon_utils.py", line 351, in enable
    mod = __import__(module_name)
  File "C:\Users\peter\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\__init__.py", line 39, in <module>
    from . import engine, properties, ui, usd_nodes, mx_nodes, bl_nodes
  File "C:\Users\peter\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\__init__.py", line 39, in <module>
    from . import engine, handlers
  File "C:\Users\peter\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\engine.py", line 20, in <module>
    from pxr import UsdGeom
  File "C:\Users\peter\Documents\pixar\lib\python\pxr\UsdGeom\__init__.py", line 24, in <module>
    from . import _usdGeom
ImportError: DLL load failed while importing _usdGeom: Das angegebene Modul wurde nicht gefunden.

Changing render mode doesn't update unless changing the quality settings

When changing the render mode from "Global Illumination" to any other mode, such as "Normal" the preview will not reflect the mode changed. One will need to switch the Quality from Full to Interactive to trigger the change. And if the Quality was at Interactive, then switching to Full to trigger the next change.

'Surface' node does not work in MaterialX network

Tested with latest master (1.0.77) and Blender 3.0.1.

To reproduce:

  1. open Blender, select 'USD Hydra' render engine
  2. create a cube, assign a new material, convert it to MaterialX
  3. change MaterialX graph to look like this:
    2022-03-05 17_15_25-Blender
  4. observe that RPR Preview render is black
  5. export USD scene to file
  6. see that diffuse node is missing from exported material graph
def "Materials"
{
    def Material "surfacematerial_2"
    {
        token inputs:bsdf (
            renderType = "BSDF"
        )
        token inputs:edf (
            renderType = "EDF"
        )
        float inputs:opacity = 1
        token outputs:mtlx:surface.connect = </Cube/Material_001/Materials/surfacematerial_2/ND_surface.outputs:surface>

        def Shader "ND_surface"
        {
            uniform token info:id = "ND_surface"
            token inputs:bsdf (
                renderType = "BSDF"
            )
            token inputs:bsdf.connect = </Cube/Material_001/Materials/surfacematerial_2.inputs:bsdf>
            token inputs:edf (
                renderType = "EDF"
            )
            token inputs:edf.connect = </Cube/Material_001/Materials/surfacematerial_2.inputs:edf>
            float inputs:opacity.connect = </Cube/Material_001/Materials/surfacematerial_2.inputs:opacity>
            token outputs:surface
        }
    }
}

Translation error with Country-Kitchen Cycles scene

Tested with latest master (1.0.77) and Blender 3.0.1.

To reproduce:

  1. open Country-Kitchen Cycles scene: https://www.blendswap.com/blend/5156
  2. set Render Engine to 'USD Hydra'
  3. activate 'Viewport Shading'
  4. nothing is rendered; observe error in Blender console
2022-03-05 16:24:19,112 ERROR hdusd.engine [18612]:  'NoneType' object has no attribute 'nodes', EXCEPTION:, Traceback (most recent call last):
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\engine\engine.py", line 111, in view_update
    self.engine.sync(context, depsgraph)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\engine\viewport_engine.py", line 200, in sync
    self._sync(context, depsgraph)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\engine\viewport_engine.py", line 385, in _sync
    object.sync(root_prim, obj_data)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\export\object.py", line 175, in sync
    mesh.sync(obj_prim, obj, **kwargs)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\export\mesh.py", line 229, in sync
    _assign_materials(obj_prim, obj.original, usd_mesh)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\export\mesh.py", line 235, in _assign_materials
    usd_mat = material.sync(obj_prim, obj.material_slots[0].material, obj)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\export\material.py", line 41, in sync
    doc = mat.hdusd.export(obj)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\properties\material.py", line 50, in export
    output_node = self.output_node
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\properties\material.py", line 41, in output_node
    return next((node for node in material.node_tree.nodes if
AttributeError: 'NoneType' object has no attribute 'nodes'

Build Errors

Hi

I'm trying to build from source to perform a more comprehensive tests as the current release version is causing all sorts of issues with 2.93.7 (e.g. I can no longer transform any object from the properties panel or directly, only through a transform node which needs to be filtered and then it's a mess on how to combine it back into the scene)

So, new windows 11 VM with:

  • Blender 2.93.7

  • Python 3.9.7 x64

  • numpy

  • requests

  • PyOpenGL

  • PySide2

  • Visual Studio 2017 Community

  • CMake 3.23

The build chugs along nicely and installs USD successfully, and I've added the paths recommended

adding c:\src\BlenderUSDHydraAddon\bin\USD\Install\lib\python to PYTHONPATH
adding c:\src\BlenderUSDHydraAddon\bin\USD\install\bin to PATH
adding c:\src\BlenderUSDHydraAddon\bin\USD\install\lib to PATH

Then it falls apart when trying to build hdRPR

-------------------------------------------------------------
Building HdRPR
-------------------------------------------------------------
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.22000.
CMake Warning at cmake/defaults/ProjectDefaults.cmake:34 (message):
  Building USD on Windows is currently experimental.
Call Stack (most recent call first):
  CMakeLists.txt:10 (include)


-- Configuring usdview plugin
CMake Error at cmake/defaults/Packages.cmake:59 (find_program):
  Could not find USD_SCHEMA_GENERATOR using the following names:
  usdGenSchema.py, usdGenSchema
Call Stack (most recent call first):
  CMakeLists.txt:11 (include)


-- Configuring incomplete, errors occurred!
See also "C:/src/BlenderUSDHydraAddon/deps/HdRPR/build/CMakeFiles/CMakeOutput.log".
Traceback (most recent call last):
  File "C:\src\BlenderUSDHydraAddon\tools\build.py", line 189, in <module>
    main()
  File "C:\src\BlenderUSDHydraAddon\tools\build.py", line 171, in main
    hdrpr(bin_dir, args.G, args.j, args.clean)
  File "C:\src\BlenderUSDHydraAddon\tools\build.py", line 96, in hdrpr
    _cmake(hdrpr_dir, compiler, jobs, [
  File "C:\src\BlenderUSDHydraAddon\tools\build.py", line 78, in _cmake
    subprocess.check_call(['cmake', *build_args])
  File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 373, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['cmake', '-B', 'build', '-Dpxr_DIR=C:\\src\\BlenderUSDHydraAddon\\bin\\USD\\install', '-DCMAKE_INSTALL_PREFIX=C:\\src\\BlenderUSDHydraAddon\\bin\\USD\\install', '-DRPR_BUILD_AS_HOUDINI_PLUGIN=FALSE', '-G', 'Visual Studio 15 2017 Win64']' returned non-zero exit status 1.

The CMakeOutput.log doesn't show any errors so it's not helpful.

Any ideas?

Thank you

Blender crashes with Camboto scene

Tested with latest master (1.0.77) and Blender 3.0.1.

To reproduce:

  1. open Camboto scene: https://www.blendswap.com/blend/28015
  2. set Render Engine to 'USD Hydra'
  3. activate 'Viewport Shading'
  4. Blender crashes
Dependency cycles are in the log; it might be related to #207
C:\Users\pablode\Downloads\BLENDER>"C:\Program Files\Blender Foundation\Blender 3.0\blender.exe"
Read prefs: C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\config\userpref.blend
Universal Material Map: Registered Converter classes.
2022-03-05 20:13:50,971 INFO hdusd.init [8464]:  Loading USD Hydra addon version=(1, 0, 77), build=96810ff
###################################################################################
#  HD_ENABLE_SCENE_INDEX_EMULATION is overridden to 'false'.  Default is 'true'.  #
###################################################################################
Read blend: C:\Users\pablode\Downloads\BLENDER\camboto.blend
Dependency cycle detected:
  OBCamboto.Armature/Oberschenkelgelenk.IK.L/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_READY() via 'IK Chain Parent'
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkelgelenk.IK.L/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_DONE() depends on
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_DONE() via 'Copy Scale'
Dependency cycle detected:
  OBCamboto.Armature/Oberschenkelgelenk.IK.L/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Oberschenkel.C.IK.L/BONE_READY() via 'IK Chain Parent'
  OBCamboto.Armature/Oberschenkel.C.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.IK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkelgelenk.IK.L/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Oberschenkelgelenk.IK.L/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Unterschenkel.IK.L/BONE_READY() via 'IK Chain Parent'
  OBCamboto.Armature/Unterschenkel.IK.L/BONE_POSE_PARENT() via 'Pose -> Ready'
  OBCamboto.Armature/Oberschenkel.C.IK.L/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.C.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.IK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkelgelenk.IK.L/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Oberschenkelgelenk.IK.L/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Fussgelenk.IK.L/BONE_READY() via 'IK Solver Owner'
  OBCamboto.Armature/Fussgelenk.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Fussgelenk.IK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Unterschenkel.IK.L/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Unterschenkel.IK.L/BONE_POSE_PARENT() via 'Pose -> Ready'
  OBCamboto.Armature/Oberschenkel.C.IK.L/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.C.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.IK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.B.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.B.IK.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkelgelenk.IK.L/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Oberschenkelgelenk.IK.R/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_READY() via 'IK Chain Parent'
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkelgelenk.IK.R/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_DONE() depends on
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_DONE() via 'Copy Scale'
Dependency cycle detected:
  OBCamboto.Armature/Oberschenkelgelenk.IK.R/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Oberschenkel.C.IK.R/BONE_READY() via 'IK Chain Parent'
  OBCamboto.Armature/Oberschenkel.C.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.IK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkelgelenk.IK.R/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Oberschenkelgelenk.IK.R/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Unterschenkel.IK.R/BONE_READY() via 'IK Chain Parent'
  OBCamboto.Armature/Unterschenkel.IK.R/BONE_POSE_PARENT() via 'Pose -> Ready'
  OBCamboto.Armature/Oberschenkel.C.IK.R/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.C.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.IK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkelgelenk.IK.R/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Oberschenkelgelenk.IK.R/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Fussgelenk.IK.R/BONE_READY() via 'IK Solver Owner'
  OBCamboto.Armature/Fussgelenk.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Fussgelenk.IK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Unterschenkel.IK.R/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Unterschenkel.IK.R/BONE_POSE_PARENT() via 'Pose -> Ready'
  OBCamboto.Armature/Oberschenkel.C.IK.R/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.C.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.IK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.Stretch.Control.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.C.FK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberschenkel.B.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberschenkel.B.IK.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberschenkelgelenk.IK.R/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Schulter.IK.L/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_READY() via 'IK Chain Parent'
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Schulter.IK.L/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_DONE() depends on
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_DONE() via 'Copy Scale'
Dependency cycle detected:
  OBCamboto.Armature/Schulter.IK.L/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Oberarm.C.IK.L/BONE_READY() via 'IK Chain Parent'
  OBCamboto.Armature/Oberarm.C.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Schulter.IK.L/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Schulter.IK.L/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Ellenbeuge.IK.L/BONE_READY() via 'IK Chain Parent'
  OBCamboto.Armature/Ellenbeuge.IK.L/BONE_POSE_PARENT() via 'Pose -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.L/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.C.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Schulter.IK.L/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Schulter.IK.L/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Unterarm.IK.L/BONE_READY() via 'IK Solver Owner'
  OBCamboto.Armature/Unterarm.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Unterarm.IK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Ellenbeuge.IK.L/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Ellenbeuge.IK.L/BONE_POSE_PARENT() via 'Pose -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.L/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.C.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.Stretch.Control.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.FK.L/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.B.FK.L/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.B.IK.L/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Schulter.IK.L/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Schulter.IK.R/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_READY() via 'IK Chain Parent'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Schulter.IK.R/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_CONSTRAINTS() depends on
  OBCamboto.Armature/Oberarm.C.FK.R/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Oberarm.C.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.C.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.FK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.FK.R/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.B.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
Dependency cycle detected:
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_CONSTRAINTS() depends on
  OBCamboto.Armature/Oberarm.C.FK.R/BONE_DONE() via 'Copy Rotation'
  OBCamboto.Armature/Oberarm.C.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.C.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.FK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.FK.R/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.FK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.B.FK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
Dependency cycle detected:
  OBCamboto.Armature/Schulter.IK.R/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_READY() via 'IK Chain Parent'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Schulter.IK.R/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_DONE() depends on
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_DONE() via 'Copy Location'
Dependency cycle detected:
  OBCamboto.Armature/Schulter.IK.R/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Ellenbeuge.IK.R/BONE_READY() via 'IK Chain Parent'
  OBCamboto.Armature/Ellenbeuge.IK.R/BONE_POSE_PARENT() via 'Pose -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Schulter.IK.R/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Schulter.IK.R/POSE_IK_SOLVER() depends on
  OBCamboto.Armature/Unterarm.IK.R/BONE_READY() via 'IK Solver Owner'
  OBCamboto.Armature/Unterarm.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Unterarm.IK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Ellenbeuge.IK.R/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Ellenbeuge.IK.R/BONE_POSE_PARENT() via 'Pose -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_READY() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Oberarm.B.IK.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_DONE() via 'Copy Scale'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Oberarm.Stretch.Control.R/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Oberarm.C.IK.R/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Schulter.IK.R/POSE_IK_SOLVER() via 'IK Chain Result'
Dependency cycle detected:
  OBCamboto.Armature/Bauchgelenk.B/BONE_CONSTRAINTS() depends on
  OBCamboto.Armature/Brust/BONE_DONE() via 'Copy Location'
  OBCamboto.Armature/Brust/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Brust/BONE_CONSTRAINTS() via 'Constraints -> Ready'
  OBCamboto.Armature/Brust/BONE_POSE_PARENT() via 'Pose -> Constraints Stack'
  OBCamboto.Armature/Bauchgelenk.A/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Bauchgelenk.A/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Bauchgelenk.A/BONE_POSE_PARENT() via 'Pose -> Ready'
  OBCamboto.Armature/Bauchgelenk.B/BONE_DONE() via 'Parent Bone -> Child Bone'
  OBCamboto.Armature/Bauchgelenk.B/BONE_READY() via 'Ready -> Done'
  OBCamboto.Armature/Bauchgelenk.B/BONE_CONSTRAINTS() via 'Constraints -> Ready'
Detected 23 dependency cycles
WARN (bke.anim_sys): C:\Users\blender\git\blender-v300\blender.git\source\blender\blenkernel\intern\anim_sys.c:3594 BKE_animsys_eval_driver: invalid driver - modifiers["Subdivision"].render_levels[0]
2022-03-05 20:14:10,848 WARNING hdusd.bl_nodes [8464]:  Ignoring unsupported UV Map, TANGENT, <bpy_struct, ShaderNodeNormalMap("Normal Map") at 0x000001BA48B25E08>, <bpy_struct, Material("Camboto.MAT") at 0x000001BA48B2BD08>, No UV Map will be used
[MSG  @RIF]: Loaded RIF API version: 1.7.3.0x1c7b817e

C:\Users\pablode\Downloads\BLENDER>

Is this project still active?

It's been months since the latest release..

I don't know if blender developers are working on an integrated hydra add-on, would be cool tho

MaterialX materials are not instanced

Tested with latest master (1.0.77) and Blender 3.0.1.

To reproduce:

  1. create two cubes and one material with MaterialX graph assigned
  2. assign the material to both cubes
  3. export USD to file
  4. usdedit file or convert to USDA
  5. see that the material has been emitted two times instead of only once

This can lead to very long compile times and slow rendering.

See USDA of the exported file
#usda 1.0
(
    doc = """Generated from Composed Stage of root layer c:\\Users\\pablode\\AppData\\Local\\Temp\\hdusd\\4784\\tmpls_3rcd2.usda
"""
    metersPerUnit = 1
    upAxis = "Z"
)

def Xform "Camera"
{
    matrix4d xformOp:transform = ( (0.6859206557273865, 0.7276763319969177, 0, 0), (-0.32401347160339355, 0.305420845746994, 0.8953956365585327, 0), (0.6515582203865051, -0.6141703724861145, 0.44527140259742737, 0), (7.358891487121582, -6.925790786743164, 4.958309173583984, 1) )
    uniform token[] xformOpOrder = ["xformOp:transform"]

    def Camera "Camera"
    {
        float2 clippingRange = (0.1, 100)
        float focalLength = 50
        float horizontalAperture = 36
        float horizontalApertureOffset = 0
        token projection = "perspective"
        float verticalAperture = 20.25
        float verticalApertureOffset = 0
    }
}

def Xform "Cube"
{
    matrix4d xformOp:transform = ( (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (3.391047239303589, 0, 0, 1) )
    uniform token[] xformOpOrder = ["xformOp:transform"]

    def Mesh "Cube"
    {
        uniform bool doubleSided = 1
        int[] faceVertexCounts = [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
        int[] faceVertexIndices = [0, 1, 3, 0, 3, 2, 2, 3, 7, 2, 7, 6, 6, 7, 5, 6, 5, 4, 4, 5, 1, 4, 1, 0, 2, 6, 4, 2, 4, 0, 7, 3, 1, 7, 1, 5]
        rel material:binding = </Cube/Material/Materials/USD_Default>
        normal3f[] normals = [(-1, -0, 0), (-1, -0, 0), (-1, -0, 0), (-1, -0, 0), (-1, -0, 0), (-1, -0, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0), (1, -0, 0), (1, -0, 0), (1, -0, 0), (1, -0, 0), (1, -0, 0), (1, -0, 0), (0, -1, 0), (0, -1, 0), (0, -1, 0), (0, -1, 0), (0, -1, 0), (0, -1, 0), (0, 0, -1), (0, 0, -1), (0, 0, -1), (0, 0, -1), (0, 0, -1), (0, 0, -1), (0, -0, 1), (0, -0, 1), (0, -0, 1), (0, -0, 1), (0, -0, 1), (0, -0, 1)] (
            interpolation = "faceVarying"
        )
        point3f[] points = [(-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]
        texCoord2f[] primvars:st = [(0.375, 0), (0.625, 0), (0.625, 0.25), (0.375, 0.25), (0.375, 0.25), (0.625, 0.25), (0.625, 0.5), (0.375, 0.5), (0.375, 0.5), (0.625, 0.5), (0.625, 0.75), (0.375, 0.75), (0.375, 0.75), (0.625, 0.75), (0.625, 1), (0.375, 1), (0.125, 0.5), (0.375, 0.5), (0.375, 0.75), (0.125, 0.75), (0.625, 0.5), (0.875, 0.5), (0.875, 0.75), (0.625, 0.75)] (
            interpolation = "faceVarying"
        )
        int[] primvars:st:indices = [0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23]
        uniform token subdivisionScheme = "none"
    }

    def "Material"
    {
        def "Materials"
        {
            def Material "USD_Default"
            {
                float inputs:clearcoat = 0
                float inputs:clearcoatRoughness = 0.01
                color3f inputs:diffuseColor = (0.18, 0.18, 0.18)
                float inputs:displacement = 0
                color3f inputs:emissiveColor = (0, 0, 0)
                float inputs:ior = 1.5
                float inputs:metallic = 0
                float3 inputs:normal = (0, 0, 1)
                float inputs:occlusion = 1
                float inputs:opacity = 1
                float inputs:opacityThreshold = 0
                float inputs:roughness = 0.5
                color3f inputs:specularColor = (0, 0, 0)
                int inputs:useSpecularWorkflow = 0
                token outputs:mtlx:surface.connect = </Cube/Material/Materials/USD_Default/ND_UsdPreviewSurface_surfaceshader.outputs:surface>

                def Shader "ND_UsdPreviewSurface_surfaceshader"
                {
                    uniform token info:id = "ND_UsdPreviewSurface_surfaceshader"
                    float inputs:clearcoat.connect = </Cube/Material/Materials/USD_Default.inputs:clearcoat>
                    float inputs:clearcoatRoughness.connect = </Cube/Material/Materials/USD_Default.inputs:clearcoatRoughness>
                    color3f inputs:diffuseColor.connect = </Cube/Material/Materials/USD_Default.inputs:diffuseColor>
                    float inputs:displacement.connect = </Cube/Material/Materials/USD_Default.inputs:displacement>
                    color3f inputs:emissiveColor.connect = </Cube/Material/Materials/USD_Default.inputs:emissiveColor>
                    float inputs:ior.connect = </Cube/Material/Materials/USD_Default.inputs:ior>
                    float inputs:metallic.connect = </Cube/Material/Materials/USD_Default.inputs:metallic>
                    float3 inputs:normal.connect = </Cube/Material/Materials/USD_Default.inputs:normal>
                    float inputs:occlusion.connect = </Cube/Material/Materials/USD_Default.inputs:occlusion>
                    float inputs:opacity.connect = </Cube/Material/Materials/USD_Default.inputs:opacity>
                    float inputs:opacityThreshold.connect = </Cube/Material/Materials/USD_Default.inputs:opacityThreshold>
                    float inputs:roughness.connect = </Cube/Material/Materials/USD_Default.inputs:roughness>
                    color3f inputs:specularColor.connect = </Cube/Material/Materials/USD_Default.inputs:specularColor>
                    int inputs:useSpecularWorkflow.connect = </Cube/Material/Materials/USD_Default.inputs:useSpecularWorkflow>
                    token outputs:surface
                }
            }
        }

        def "Shaders"
        {
            def Shader "ND_UsdPreviewSurface_surfaceshader"
            {
                uniform token info:id = "ND_UsdPreviewSurface_surfaceshader"
                token outputs:surface
            }
        }
    }
}

def Xform "Cube_001"
{
    matrix4d xformOp:transform = ( (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (-4.016847610473633, 0, 0, 1) )
    uniform token[] xformOpOrder = ["xformOp:transform"]

    def Mesh "Cube_001"
    {
        uniform bool doubleSided = 1
        int[] faceVertexCounts = [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
        int[] faceVertexIndices = [0, 1, 3, 0, 3, 2, 2, 3, 7, 2, 7, 6, 6, 7, 5, 6, 5, 4, 4, 5, 1, 4, 1, 0, 2, 6, 4, 2, 4, 0, 7, 3, 1, 7, 1, 5]
        rel material:binding = </Cube_001/Material/Materials/USD_Default>
        normal3f[] normals = [(-1, -0, 0), (-1, -0, 0), (-1, -0, 0), (-1, -0, 0), (-1, -0, 0), (-1, -0, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0), (1, -0, 0), (1, -0, 0), (1, -0, 0), (1, -0, 0), (1, -0, 0), (1, -0, 0), (0, -1, 0), (0, -1, 0), (0, -1, 0), (0, -1, 0), (0, -1, 0), (0, -1, 0), (0, 0, -1), (0, 0, -1), (0, 0, -1), (0, 0, -1), (0, 0, -1), (0, 0, -1), (0, -0, 1), (0, -0, 1), (0, -0, 1), (0, -0, 1), (0, -0, 1), (0, -0, 1)] (
            interpolation = "faceVarying"
        )
        point3f[] points = [(-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]
        texCoord2f[] primvars:st = [(0.375, 0), (0.625, 0), (0.625, 0.25), (0.375, 0.25), (0.375, 0.25), (0.625, 0.25), (0.625, 0.5), (0.375, 0.5), (0.375, 0.5), (0.625, 0.5), (0.625, 0.75), (0.375, 0.75), (0.375, 0.75), (0.625, 0.75), (0.625, 1), (0.375, 1), (0.125, 0.5), (0.375, 0.5), (0.375, 0.75), (0.125, 0.75), (0.625, 0.5), (0.875, 0.5), (0.875, 0.75), (0.625, 0.75)] (
            interpolation = "faceVarying"
        )
        int[] primvars:st:indices = [0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23]
        uniform token subdivisionScheme = "none"
    }

    def "Material"
    {
        def "Materials"
        {
            def Material "USD_Default"
            {
                float inputs:clearcoat = 0
                float inputs:clearcoatRoughness = 0.01
                color3f inputs:diffuseColor = (0.18, 0.18, 0.18)
                float inputs:displacement = 0
                color3f inputs:emissiveColor = (0, 0, 0)
                float inputs:ior = 1.5
                float inputs:metallic = 0
                float3 inputs:normal = (0, 0, 1)
                float inputs:occlusion = 1
                float inputs:opacity = 1
                float inputs:opacityThreshold = 0
                float inputs:roughness = 0.5
                color3f inputs:specularColor = (0, 0, 0)
                int inputs:useSpecularWorkflow = 0
                token outputs:mtlx:surface.connect = </Cube_001/Material/Materials/USD_Default/ND_UsdPreviewSurface_surfaceshader.outputs:surface>

                def Shader "ND_UsdPreviewSurface_surfaceshader"
                {
                    uniform token info:id = "ND_UsdPreviewSurface_surfaceshader"
                    float inputs:clearcoat.connect = </Cube_001/Material/Materials/USD_Default.inputs:clearcoat>
                    float inputs:clearcoatRoughness.connect = </Cube_001/Material/Materials/USD_Default.inputs:clearcoatRoughness>
                    color3f inputs:diffuseColor.connect = </Cube_001/Material/Materials/USD_Default.inputs:diffuseColor>
                    float inputs:displacement.connect = </Cube_001/Material/Materials/USD_Default.inputs:displacement>
                    color3f inputs:emissiveColor.connect = </Cube_001/Material/Materials/USD_Default.inputs:emissiveColor>
                    float inputs:ior.connect = </Cube_001/Material/Materials/USD_Default.inputs:ior>
                    float inputs:metallic.connect = </Cube_001/Material/Materials/USD_Default.inputs:metallic>
                    float3 inputs:normal.connect = </Cube_001/Material/Materials/USD_Default.inputs:normal>
                    float inputs:occlusion.connect = </Cube_001/Material/Materials/USD_Default.inputs:occlusion>
                    float inputs:opacity.connect = </Cube_001/Material/Materials/USD_Default.inputs:opacity>
                    float inputs:opacityThreshold.connect = </Cube_001/Material/Materials/USD_Default.inputs:opacityThreshold>
                    float inputs:roughness.connect = </Cube_001/Material/Materials/USD_Default.inputs:roughness>
                    color3f inputs:specularColor.connect = </Cube_001/Material/Materials/USD_Default.inputs:specularColor>
                    int inputs:useSpecularWorkflow.connect = </Cube_001/Material/Materials/USD_Default.inputs:useSpecularWorkflow>
                    token outputs:surface
                }
            }
        }

        def "Shaders"
        {
            def Shader "ND_UsdPreviewSurface_surfaceshader"
            {
                uniform token info:id = "ND_UsdPreviewSurface_surfaceshader"
                token outputs:surface
            }
        }
    }
}

def "World"
{
    def DomeLight "World"
    {
        color3f inputs:color = (0.05087609, 0.05087609, 0.05087609)
        float inputs:intensity = 1
        custom float inputs:transparency = 1
        float xformOp:rotateX = 180
        float xformOp:rotateX:orientToStageUpAxis = 90
        float xformOp:rotateY = -90
        uniform token[] xformOpOrder = ["xformOp:rotateX:orientToStageUpAxis", "xformOp:rotateX", "xformOp:rotateY"]
    }
}

Translation error with Attic-Demo-CCBY scene

Tested with latest master (1.0.77) and Blender 3.0.1.

To reproduce:

  1. open Attic-Demo-CCBY scene: https://www.blendswap.com/blend/25057
  2. set Render Engine to 'USD Hydra'
  3. activate 'Viewport Shading'
  4. nothing is rendered; observe error in Blender console

Error message:

2022-03-05 16:07:32,976 ERROR hdusd.engine [18376]:  '<' not supported between instances of 'NodeItem' and 'float', EXCEPTION:, Traceback (most recent call last):
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\engine\engine.py", line 111, in view_update
    self.engine.sync(context, depsgraph)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\engine\viewport_engine.py", line 200, in sync
    self._sync(context, depsgraph)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\engine\viewport_engine.py", line 385, in _sync
    object.sync(root_prim, obj_data)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\export\object.py", line 175, in sync
    mesh.sync(obj_prim, obj, **kwargs)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\export\mesh.py", line 229, in sync
    _assign_materials(obj_prim, obj.original, usd_mesh)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\export\mesh.py", line 235, in _assign_materials
    usd_mat = material.sync(obj_prim, obj.material_slots[0].material, obj)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\export\material.py", line 41, in sync
    doc = mat.hdusd.export(obj)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\properties\material.py", line 58, in export
    if not node_parser.export():
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\nodes\output.py", line 25, in export
    surface = self.get_input_link('Surface')
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 351, in get_input_link
    return self._export_node(link.from_node, link.from_socket.identifier)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 294, in _export_node
    node_item = node_parser.export()
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\nodes\shader.py", line 229, in export
    shader1 = self.get_input_link(1)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 351, in get_input_link
    return self._export_node(link.from_node, link.from_socket.identifier)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 294, in _export_node
    node_item = node_parser.export()
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\nodes\shader.py", line 166, in export
    color = self.get_input_value('Color')
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 356, in get_input_value
    val = self.get_input_link(in_key)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 351, in get_input_link
    return self._export_node(link.from_node, link.from_socket.identifier)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 294, in _export_node
    node_item = node_parser.export()
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\nodes\color.py", line 30, in export
    fac = self.get_input_value('Fac')
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 356, in get_input_value
    val = self.get_input_link(in_key)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 351, in get_input_link
    return self._export_node(link.from_node, link.from_socket.identifier)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 294, in _export_node
    node_item = node_parser.export()
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\nodes\color.py", line 30, in export
    fac = self.get_input_value('Fac')
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 356, in get_input_value
    val = self.get_input_link(in_key)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 351, in get_input_link
    return self._export_node(link.from_node, link.from_socket.identifier)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 294, in _export_node
    node_item = node_parser.export()
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\nodes\converter.py", line 24, in export
    in1 = self.get_input_value(0)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 356, in get_input_value
    val = self.get_input_link(in_key)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 351, in get_input_link
    return self._export_node(link.from_node, link.from_socket.identifier)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 294, in _export_node
    node_item = node_parser.export()
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\nodes\converter.py", line 53, in export
    in2 = self.get_input_value(1)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 356, in get_input_value
    val = self.get_input_link(in_key)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 351, in get_input_link
    return self._export_node(link.from_node, link.from_socket.identifier)
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\node_parser.py", line 294, in _export_node
    node_item = node_parser.export()
  File "C:\Users\pablode\AppData\Roaming\Blender Foundation\Blender\3.0\scripts\addons\hdusd\bl_nodes\nodes\converter.py", line 50, in export
    res = (in1 % 1.0 < 0.5).if_else(f, f + 1.0)
TypeError: '<' not supported between instances of 'NodeItem' and 'float

unable to enable it

``bpy.context.space_data.system_bookmarks_active = 3
Modules Installed (hdusd) from 'C:\Users\haide\Downloads\BlenderUSDHydraAddon_1.0.65_Windows.zip' into 'C:\Users\haide\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons'
Traceback (most recent call last):
File "X:\BnSModding\blender\3.1\scripts\modules\addon_utils.py", line 351, in enable
mod = import(module_name)
File "C:\Users\haide\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd_init_.py", line 39, in
from . import engine, properties, ui, usd_nodes, mx_nodes, bl_nodes
File "C:\Users\haide\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\engine_init_.py", line 39, in
from . import engine, handlers
File "C:\Users\haide\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\engine\engine.py", line 21, in
from ..utils.stage_cache import CachedStage
File "C:\Users\haide\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\utils\stage_cache.py", line 15, in
from pxr import Usd
File "C:\Users\haide\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\libs\lib\python\pxr\Usd_init_.py", line 24, in
from pxr import Tf
File "C:\Users\haide\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\libs\lib\python\pxr\Tf_init_.py", line 163, in
PreparePythonModule()
File "C:\Users\haide\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\libs\lib\python\pxr\Tf_init_.py", line 88, in PreparePythonModule
module = importlib.import_module(
File "X:\BnSModding\blender\3.1\python\lib\importlib_init_.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ImportError: DLL load failed while importing _tf: The specified module could not be found.

Python: Traceback (most recent call last):
File "X:\BnSModding\blender\3.1\scripts\startup\bl_operators\userpref.py", line 782, in execute
shutil.rmtree(path)
File "X:\BnSModding\blender\3.1\python\lib\shutil.py", line 739, in rmtree
return _rmtree_unsafe(path, onerror)
File "X:\BnSModding\blender\3.1\python\lib\shutil.py", line 617, in _rmtree_unsafe
onerror(os.unlink, fullname, sys.exc_info())
File "X:\BnSModding\blender\3.1\python\lib\shutil.py", line 615, in _rmtree_unsafe
os.unlink(fullname)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\haide\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\hdusd.log'

location: :-1

``

Adding an HDR texture to the environment stays after being deleted

I've added an HDR image to the colour change of the environment through "Environment Image" node. The USD scene was the kitchen merged with a blender scene. The HDRI image was shown and it affected the lighting. Added another sun light and that was working two. disconnected the environment image and deleted it, the HDRI was still visible in the render and in the background. Stopped, changed mode and the HDR image is still visible and affecting the lighting of the scene.

View keeps switching from MaterialX to Shader editor

Tested with latest master (1.0.77) and Blender 3.0.1.

To reproduce:

  1. open Blender
  2. switch to 'USD Hydra' Render Engine
  3. switch to MaterialX tab
  4. press 'New'
    -> view switches to Blender shader editor which it shouldn't do
  5. switch back to MaterialX tab
  6. select new 'NodeTree' material
  7. 'Create Basic Nodes'
  8. switch back to MaterialX tab...
  9. select 'NodeTree' material
  10. try to add any MaterialX node
  11. see Blender crash

Traceback error on load

Hi,
When I try to enable the plugin in Blender 2.93.3 on Ubuntu 21.04
I get a traceback error:

2021-08-21 13:02:22,472 INFO hdusd.init [140556390342912]: Loading USD Hydra addon version=(1, 0, 21), build=b0bf57e Traceback (most recent call last): File "/snap/blender/539/2.93/scripts/modules/addon_utils.py", line 351, in enable mod = __import__(module_name) File "/home/pavel/.config/blender/2.93/scripts/addons/hdusd/__init__.py", line 39, in <module> from . import engine, properties, ui, usd_nodes, mx_nodes, bl_nodes File "/home/pavel/.config/blender/2.93/scripts/addons/hdusd/engine/__init__.py", line 39, in <module> from . import engine, handlers File "/home/pavel/.config/blender/2.93/scripts/addons/hdusd/engine/engine.py", line 42, in <module> from . import final_engine, viewport_engine, preview_engine File "/home/pavel/.config/blender/2.93/scripts/addons/hdusd/engine/final_engine.py", line 25, in <module> from ..utils import gl, time_str File "/home/pavel/.config/blender/2.93/scripts/addons/hdusd/utils/gl.py", line 29, in <module> gl = cdll.LoadLibrary('libGL.so') File "/snap/blender/539/2.93/python/lib/python3.9/ctypes/__init__.py", line 452, in LoadLibrary return self._dlltype(name) File "/snap/blender/539/2.93/python/lib/python3.9/ctypes/__init__.py", line 374, in __init__ self._handle = _dlopen(self._name, mode) OSError: libGL.so: cannot open shared object file: No such file or directory

MaterialX nodegraph available

There is a MaterialX based nodegraph available under the "MaterialX" editor.

How would I enable this? I looked for 20 minutes.

Blender 3.2

TiledImage node in Texture2D not behaving (update --> nodegraphs are not working)

Used files from MaterialX https://github.com/materialx/MaterialX/blob/main/resources/Materials/Examples/StandardSurface/
both brick and wood files which load .jpg files to "tiledimage" node are not behaving properly. (maybe color3 values are not generated).
when replaced with "image" node "base" node is getting proper color3 values.

Also tried generating osl shaders from mtlx and used in cycles script which worked fine (but we need to give absolute paths for textures not relative)

so the problem maybe with "tiledimage" node. it is in Texture2D in MaterialX editor

Specs :
Windows 8.1
Blender 3.0
Addon 1.0.65

Update

Also tried "Contrast" node with both pivot 1.0 and 0.0 same result (just white colored cube)
implemented contrast node with individual subtract,multiply and add nodes (pivot should be 0.0 color blue) -> correct result
so changed pivot values in MX_STD_contrast in /hdusd/mx_nodes/get_stdlib_defs.py to 0.0
still "contrast" node renders white cube only

seems like nodegraph definitions are not working properly.
because both contrast and tiledimage are from libraries/stdlib/stdlib_ng.mtlx

you guys implemented nodegraphs as blender "nodes"
actually they should be implemented as blender "nodegroups"
because when you import materialx file, if there are custom nodegraphs, materialx has to search for that nodegraph in custom library modules and then import them as blender "nodegroup" which actually knows computation.
nodedefs are implemented in shader langs and nodegraphs are implemented in mtlx which are computation graphs.
so only those nodedefs which has standard implementation(in materialx std_lib.mtlx) becomes nodes everything else should become nodegroups in blender.

only then actual materialx is implemented.

Blender hangs with Lego 856 Bulldozer scene

Tested with latest master (1.0.77) and Blender 3.0.1.

To reproduce:

  1. open Lego 856 Bulldozer scene: https://blendswap.com/blend/11490
  2. set Render Engine to 'USD Hydra'
  3. observe Blender hanging indefinitely

The following message is emitted periodically:

Dependency cycle detected:
  OBArmature/Bone.018/POSE_IK_SOLVER() depends on
  OBArmature/Bone.016/BONE_DONE() via 'IK'
  OBArmature/Bone.016/POSE_IK_SOLVER() via 'IK Solver Result'
  OBArmature/Bone.018/BONE_DONE() via 'IK'
  OBArmature/Bone.018/POSE_IK_SOLVER() via 'IK Solver Result'
Detected 1 dependency cycles

Writes empty geometry in edit mode

If you save your model in .usda format (Didn't test .usdc) in edit mode, it doesn't write any geometry data like points, normals, uvs, etc.


Blender 3.3.1 (b29cfe5a936)
Built-in version of USD plugin (not shown in the addons list)

Undo of a transform doesn't update the transform

When moving, rotating or scaling a referenced object using the gizmo or the numerical controls the object will transform. However if you undo then the gizmo control will go back to it's original/previous position but the object will stay in place. The only way to trigger the object to snap back to it's previous place is by placing the cursor in the numerical input of that channel and pressing "Enter". Only then the object will snap back to it's previous place.

Buil against a USD library

Hi, I wold love to use blender to develop an artist friendly Karma ( houdini ) pipeline, I was wandering, is it possible and what would be the best way to build the plugin against the Houdini USD library, instead of trying to build karma against the plugin's own USD libraries, since building Karma is a whole ordeal.

The idea would be to have artists using Blender to develop assets in Karma using USD and Material X, bypasing this way the costs attached to getting artist up to speed with houdini and the cost of a Core license which would be heavily under used, then a Houdini artist can do the assembly of the scene and send to render using Solaris.

Linux and Mac requirements

Hi,

First and foremost thanks a lot for this.

Can you please provide a deeper explanation on why other platforms support is not available yet?

I have the same issue with most of the recently released projects from this AMD initiative (GPUOpen-Effects/FEMFX#1 for instance), some support Linux only other Windows only, but the reasons aren't clear and I think stating them clearly will help others to contribute or find workarounds?

Thanks

not responding in Blender 3.12&3.2

HI!
I try the Hyda 1.1 .But when chose to rendering mode.It always not responding.The Hyda addon last version still worked.The 1.1 is not work.I try to use deform setting but it also not responding.Is it don't supprot Ndvdia graphics cards
Blender3 12 3 2_Hyda_1 1
?

Issue enabling addon

When trying to enable the addon using Blender 2.92 or 2.90.1 (suggested: here) to no avail, with this consistent os module error:
2021-08-25 09:47:39,034 INFO hdusd.init [25700]: Loading USD Hydra addon version=(1, 0, 21), build=b0bf57e
Traceback (most recent call last):
File "C:\temp\software\blender_builds\blender_foundation\blender-2.90.1-windows64\2.90\scripts\modules\addon_utils.py", line 351, in enable
mod = import(module_name)
File "C:\Users\xxxxxx\AppData\Roaming\Blender Foundation\Blender\2.90\scripts\addons\hdusd_init_.py", line 39, in
from . import engine, properties, ui, usd_nodes, mx_nodes, bl_nodes
File "C:\Users\xxxxxx\AppData\Roaming\Blender Foundation\Blender\2.90\scripts\addons\hdusd\engine_init_.py", line 27, in
os.add_dll_directory(str(utils.LIBS_DIR / 'usd'))
AttributeError: module 'os' has no attribute 'add_dll_directory'

Wrong python version perhaps(?), but no other addons are currently causing issue, so that one seems unlikely.

Any thoughts?

Blender Hydra Node Tree Doesn't Refresh With USD Changes

refresh_repro.zip

I've set up a Node Tree showing that if I change the USD file input to another file or edit the referenced USD file on disk, the addon doesn't update with the changes. The only way that I've found to force an update to delete the node tree and set it up again.

  1. Extract refresh_repro.zip
  2. Open blender_hydra_refresh_repro.blend
  3. Change the viewport shading to "Rendered" to see a cube rendered at the origin.
  4. In the node tree, change the USD file from "//cube.usda" to "//plane.usda". The USD list does not update and no changes are noticed in the viewport.
  5. You'll notice the same issue if you make any changes to cube.usda. The changes aren't reflected.

Addon is not initialized properly

Hello, i had checked whatever i can, but cant get Addon work for me.

I expected to have NodeTree option, but it is lost
image

i have no usd nodes as well.

blender: >>> bpy.app.version (2, 93, 8) system: >>> platform.uname() uname_result(system='Windows', node='ws111', release='10', version='10.0.19041', machine='AMD64')

I did n't had any error when installing Addon and restarted before final testing.

USD Export: unable to find suitable USD plugin to write <file_path_to.usda>

Sometimes plugin fails to save a file as USD in .usda format (Didn't test .usdc). I don't quite understand under what circumstances it happens

bpy.ops.wm.usd_export(filepath="D:\models\usd\Plane2.usda")
USD Export: unable to find suitable USD plugin to write D:\models\usd\Plane2.usda

It also does quite destructible thing, it removes file before save and when save fails with this weird error, the file is gone


Blender 3.3.1 (b29cfe5a936)
Built-in version of USD plugin (not shown in the addons list)

Adding renderers to USD Hydra plugin for Blender

Discussed in #109

Originally posted by KY-Hage September 25, 2021
Hi there,

I'm a bit confused about how to add Renderman or any other USD render delegate as renderers in the USD Hydra plugin for Blender. In the readme it states that I could add compatible renderers in my libs/plugins/usd folder. My issue is I'm unsure if I am compiling this correctly.

I'm using Blender 2.93.1

After following the instruction on Pixar's Github I successfully used the build_usd.py script with the additional options for Renderman by using

py -m build_usd --prman --prman-location "C:\Program Files\Pixar\RenderManProServer-24.1" "C:\Users\User\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\libs\plugins\usd"

This gave me an error dealing with the installation of Boost. I was able to get around that by change the filepath to "C:\Users\User\AppData\Roaming\BlenderFoundation\Blender\2.93\scripts\addons\hdusd\libs" since the space in the folder name caused the issue.

I then had this error appear when I tried to enable the addon in Blender:

Traceback (most recent call last):
  _File "D:\Blender\2.93\scripts\modules\addon_utils.py", line 351, in enable
    mod = __import__(module_name)
  File "C:\Users\User\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\__init__.py", line 39, in <module>
    from . import engine, properties, ui, usd_nodes, mx_nodes, bl_nodes
  File "C:\Users\User\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\__init__.py", line 39, in <module>
    from . import engine, handlers
  File "C:\Users\User\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\engine.py", line 42, in <module>
    from . import final_engine, viewport_engine, preview_engine
  File "C:\Users\User\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\final_engine.py", line 19, in <module>
    from pxr import UsdImagingGL, UsdImagingLite
ImportError: cannot import name 'UsdImagingLite' from 'pxr' (C:\Users\User\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\libs\lib\python\pxr\__init__.py)_

Some other points:

  1. When reading through the advanced build configuration I noticed multiple times it said I would need to supply the location of the additional dependencies. I only did this for Renderman and I followed the format shown here by adding the location argument in the command line.

  2. I'm unsure which folder I'm supposed to be compiling to as I noticed my file paths had \libs\usd\lib\usd and the plugin didn't work and the times I tried reinstalling it on different levels of the filepath also failed.

Questions:
Are the other renderers not actually usable with the blender addon yet? Did I compile the Renderman delegate or any of the other options correctly? If so where are they and is there any more configuration needed to get the to work?

I apologize if my questions seem really basic as I'm not a developer. I'm just a 3D artist who thought it would be cool to use this. Now after spending over 14 hours on trying to get this to work I am running out of ideas.

Hopefully someone has some experience with this situation and can lend a hand.

Thanks a ton!

Node-based edit workflow confusion

Hi,

First of all, fantastic work on making a non-destructive USD import/export addon!

While using it to edit/render a few scenes, I came to some issues that I hoped to get a sense of future directions:

  • Is editing an imported USD scene file supported workflow? Or is it primarily aimed at mixing read-only USD scenes in Blender?

  • In general, a node-based system should recompute on graph change; but in the land of USD editing, I find it not the best idea:

  1. Every time we reconnect a USD File output to Render USD node, the system would source the USD file again, so unsaved change to the imported USD hierarchy is lost. This can happen in other situations as well.

  2. Write USD File node always saves its input on reconnection, but when connected, update to imported USD hierarchy doesn't appear to save automatically.

  3. We can point both USD File and Write USD File nodes to the same USD file, allowing us to save local changes to USD file. But in such context it is unclear when the graph should reload itself (or when it is safe to reload without losing local changes).

  4. If we point Write USD File to a different file, then local changes can easily reset due to (1), and unintended change can flush to export USD due to (2).

  5. I also find out that once a Blender scene has been exported to USD via Merge node, we can no longer control much of its original settings (Light intensity, for example).

All in all, I think it depends on whether this system is designed with USD editing in mind, or mainly targeting multi-scene composition.

Thx, and look forward to your response.

Animation support

Hello!
I just installed the hydra pluging for Blender, my goal is to animate in Maya but render in Blender.
The problem is that I can't get the Animation of the .usd file working on hydra.
Is animation not supported?

Blender 2.93 , 3.0 and 3.1 crashing

Hi, I'm new here and I don't know if is this the right place to ask and how.
Blender 2.93, 3 and 3.1, are crashing when I try to use MaterialX.

This is the terminal.
AttributeError: 'NoneType' object has no attribute 'hdusd'
location: :-1
2021-12-23 01:21:28,217 WARNING hdusd.bl_nodes [140129335244352]: Ignoring unsupported node ShaderNodeTexChecker, <bpy_struct, ShaderNodeTexChecker("Checker Texture") at 0x7f727a5a8e08>, <bpy_struct, Material("Floor") at 0x7f727a132788>
Writing: /tmp/blender.crash.txt
Violación de segmento (`core' generado)

The Blender crash file
blender.crash.txt
backtrace
/home/carlos/Escritorio/Blender/blender(BLI_system_backtrace+0x20) [0xb198d40]
/home/carlos/Escritorio/Blender/blender() [0x10f721a]
/usr/lib/libc.so.6(+0x3cda0) [0x7efc31412da0]

Python backtrace
File "/home/carlos/.config/blender/3.1/scripts/addons/hdusd/engine/preview_engine.py", line 98 in render
File "/home/carlos/.config/blender/3.1/scripts/addons/hdusd/engine/engine.py", line 85 in render

And my specs
Operating System: EndeavourOS
KDE Plasma Version: 5.23.4
KDE Frameworks Version: 5.89.0
Qt Version: 5.15.2
Kernel Version: 5.15.10-arch1-1 (64-bit)
Graphics Platform: X11
Processors: 12 × AMD Ryzen 5 5600X 6-Core Processor
Memory: 31.3 GiB of RAM
Graphics Processor: NVIDIA GeForce RTX 3070/PCIe/SSE2
Thank you.

Building/installing Issue

Hey there,

Windows 10
Blender 2.91
Downloaded: BlenderUSDHydraAddon_1.0.0_Windows.release.1.zip
and the source code.zip

I've been trying to get this plugin working on my home pc. But get this error:
blender addon issues

My env looks like:
envblenderaddon

I run: run_blender_with_plugin.cmd to open Blender. Im not sure what step I'm missing...

Thanks for any help
Sue

DLL load failed while importing _tf

Dear USD community,
when trying to enable the addon, I get the following error message:

Traceback (most recent call last):
  File "C:\Users\peter\Downloads\blender-3.1.2-windows-x64\3.1\scripts\modules\addon_utils.py", line 351, in enable
    mod = __import__(module_name)
  File "C:\Users\peter\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\__init__.py", line 108, in <module>
    from . import engine, properties, ui, usd_nodes, mx_nodes, bl_nodes
  File "C:\Users\peter\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\engine\__init__.py", line 43, in <module>
    from . import engine, handlers
  File "C:\Users\peter\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\engine\engine.py", line 21, in <module>
    from ..utils.stage_cache import CachedStage
  File "C:\Users\peter\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\utils\stage_cache.py", line 15, in <module>
    from pxr import Usd
  File "C:\Users\peter\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\libs-3.10\lib\python\pxr\Usd\__init__.py", line 24, in <module>
    from pxr import Tf
  File "C:\Users\peter\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\libs-3.10\lib\python\pxr\Tf\__init__.py", line 163, in <module>
    PreparePythonModule()
  File "C:\Users\peter\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\libs-3.10\lib\python\pxr\Tf\__init__.py", line 88, in PreparePythonModule
    module = importlib.import_module(
  File "C:\Users\peter\Downloads\blender-3.1.2-windows-x64\3.1\python\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ImportError: DLL load failed while importing _tf: Die angegebene Prozedur wurde nicht gefunden.

I'm on Windows 11, Blender 3.1.2 with the addon in version 1.1.1 built for Blender 3.1.
I also tried the version 1.1.8 with Blender 3.4, but that lead to the identical issue. Setting up the environment with the PYTHONPATH guiding to a different USD installation introduces incompatibilites with Python 3.7 vs. Python 3.10.

Generally this seems like a similar issue to this one: PixarAnimationStudios/OpenUSD#2344
That got resolved by using Python 3.7 and editing the environment variables, but that is not really possible in this case. Do you have a pointer what the issue could be?

UnicodeDecodeError occurs in Material Preview

UnicodeDecodeError occurs when the "Material Preview" is enabled.

Steps to Reproduce

  1. Open Blender
  2. Install add-on
  3. Change render engine to "USD Hydra"
  4. Change "Viewport Shading" to "Material Preview"
  5. The following UnicodeDecodeError occurs:
Read prefs: C:\Users\saturday06\AppData\Roaming\Blender Foundation\Blender\3.1\config\userpref.blend
Reloading external rigs...
Reloading external metarigs...
2022-07-03 14:16:53,428 INFO hdusd.init [16672]:  Loading USD Hydra addon version=(1, 1, 1), build=9ffb8d7
###################################################################################
#  HD_ENABLE_SCENE_INDEX_EMULATION is overridden to 'false'.  Default is 'true'.  #
###################################################################################
[MSG  @RIF]: Loaded RIF API version: 1.7.3.0x1c7b817e
2022-07-03 14:17:05,239 ERROR hdusd.engine [16672]:  'utf-8' codec can't decode byte 0x8e in position 217: invalid start byte, EXCEPTION:, Traceback (most recent call last):
  File "C:\Users\saturday06\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\engine\viewport_engine.py", line 288, in draw
    self.renderer.Render(stage.GetPseudoRoot(), self.render_params)
pxr.Tf.ErrorException: <unprintable ErrorException object>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\saturday06\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\engine\engine.py", line 121, in view_draw
    self.engine.draw(context)
  File "C:\Users\saturday06\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\engine\viewport_engine.py", line 291, in draw
    if isinstance(e, Tf.ErrorException) and ("GL error: invalid operation" in str(e)
  File "C:\Users\saturday06\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\libs-3.10\lib\python\pxr\Tf\__init__.py", line 172, in __str__
    return '\n\t' + '\n\t'.join([str(e) for e in self.args])
  File "C:\Users\saturday06\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\hdusd\libs-3.10\lib\python\pxr\Tf\__init__.py", line 172, in <listcomp>
    return '\n\t' + '\n\t'.join([str(e) for e in self.args])
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8e in position 217: invalid start byte

System Information (OS, Hardware)

  • Blender 3.1.2
  • Windows 11 Pro 21H2 22000.778
  • GPU
    • renderer: 'NVIDIA GeForce RTX 2070 with Max-Q Design/PCIe/SSE2'
    • vendor: 'NVIDIA Corporation'
    • version: '4.5.0 NVIDIA 516.59'
  • BlenderUSDHydraAddon_1.1.1_Blender_3.1_Windows.zip

UsdImagingLite ?

Hello,

I am trying to get this running on linux using "../blender-2.91.0-linux64/blender --python cmd_tools/test_plugin.py"
It's running into the issue saying it requires UsdImagingLite (I will leave the error log below).

What is UsdImagingLite? It gives up zero results on google and github only gives one result which is this repo.

Is it from an older version of USD or something?

Traceback (most recent call last):
File "/BlenderUSDHydraAddon/cmd_tools/test_plugin.py", line 30, in
import hdusd
File "/BlenderUSDHydraAddon/src/hdusd/init.py", line 39, in
from . import engine, properties, ui, usd_nodes, mx_nodes
File "/BlenderUSDHydraAddon/src/hdusd/engine/init.py", line 32, in
from . import engine, handlers
File "/BlenderUSDHydraAddon/src/hdusd/engine/engine.py", line 71, in
from . import final_engine, viewport_engine, preview_engine
File "/BlenderUSDHydraAddon/src/hdusd/engine/final_engine.py", line 19, in
from pxr import UsdImagingGL, UsdImagingLite
ImportError: cannot import name 'UsdImagingLite' from 'pxr' (/blender-2.91.0-linux64/2.91/python/lib/python3.7/pxr/init.py)

Thanks,
Peter

Cannot enable USDHydraAddon in Blender 2.92 or 2.93 windows 10

Repro steps:

  1. Download zip from https://github.com/GPUOpen-LibrariesAndSDKs/BlenderUSDHydraAddon
  2. Open blender 2.93 and install zip file "BlenderUSDHydraAddon-master.zip" from preferences addons install.
  3. Blender system console spits out "Modules Installed () from 'D:\3d\blender\add_ons\BlenderUSDHydraAddon-master.zip' into 'C:\Users\memyselfandi\AppData\Roaming\Blender Foundation\Blender\2.92\scripts\addons'"
  4. Search addons for Renderer: USD Hydra

Nothing is listed in the addons.

Build failure on Windows: Could not find OpenSubdiv

I'm getting the following error when building the plugin under Windows with Python 3.9 and VS2019:

CMake Error at C:/Program Files/CMake/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find OpenSubdiv (missing: OPENSUBDIV_LIBRARIES) (found version
  "3.4.3")
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  cmake/modules/FindOpenSubdiv.cmake:130 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/defaults/Packages.cmake:252 (find_package)
  CMakeLists.txt:23 (include)

This change fixes it:

--- a/tools/build_usd.py
+++ b/tools/build_usd.py
@@ -76,6 +76,7 @@ add_subdirectory("{usd_imaging_lite_path.absolute().as_posix()}" usdImagingLite)
                      '--openvdb',
                      '--build-args', *build_args,
                      '--python',
+                     '--force', "OpenSubdiv",
                      '--build-variant', build_var,
                      str(bin_usd_dir / "install"),
                      *args)
@@ -85,7 +86,7 @@ add_subdirectory("{usd_imaging_lite_path.absolute().as_posix()}" usdImagingLite)

Fail rendering Bistro scene

Here's the scene :
https://developer.nvidia.com/orca/amazon-lumberyard-bistro

Package :
BlenderUSDHydraAddon_1.0.55_Windows.(PR-159).zip

Blender :
2.93.1

Steps :
Install and enable BlenderUSDHydraAddon_1.0.55_Windows.(PR-159).zip;
Restart Blender (or not);
Import Bistro_v5_2\BistroExterior.fbx;
Enable Full or HybridPro renderer through USD Hydra;
Activate Camera.001 and pick any frame;
Press F12 (Render);
Toggle System Console and see the following warnings and errors.

Read prefs: C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\config\userpref.blend
2021-12-01 16:59:11,493 INFO hdusd.init [15860]:  Loading USD Hydra addon version=(1, 0, 55), build=90cfad1
Info: Deleted 2 object(s)

FBX Import: start importing C:\Users\AMD\Downloads\Bistro_v5_2\BistroExterior.fbx
FBX version: 7500
        FBX import: Prepare...
                Done (0.000000 sec)

        FBX import: Templates...
                Done (0.000000 sec)

        FBX import: Nodes...
                Done (0.015625 sec)

        FBX import: Connections...
                Done (0.015625 sec)

        FBX import: Meshes...
                Done (69.687500 sec)

        FBX import: Materials & Textures...
                Done (8.906250 sec)

        FBX import: Cameras & Lamps...
                Done (0.000000 sec)

        FBX import: Objects & Armatures...
                Done (0.343750 sec)

        FBX import: ShapeKeys...
                Done (0.000000 sec)

        FBX import: Animations...
                Done (0.062500 sec)

        FBX import: Assign materials...
                Done (0.078125 sec)

        FBX import: Assign textures...
                Done (6.875000 sec)

        FBX import: Cycles z-offset workaround...
                Done (0.000000 sec)

        Done (88.171875 sec)

Import finished.
WARN (bpy.rna): C:\Users\blender\git\blender-v293\blender.git\source\blender\python\intern\bpy_rna.c:1505 pyrna_enum_to_py: current value '29' matches no enum in 'Image', 'Stringlights_BaseColor', 'file_format'
2021-12-01 17:01:23,393 ERROR hdusd.engine [15860]:  bpy_struct: item.attr = val: enum "" not found in ('BMP', 'IRIS', 'PNG', 'JPEG', 'JPEG2000', 'TARGA', 'TARGA_RAW', 'CINEON', 'DPX', 'OPEN_EXR_MULTILAYER', 'OPEN_EXR', 'HDR', 'TIFF', 'AVI_JPEG', 'AVI_RAW', 'FFMPEG'), EXCEPTION:, Traceback (most recent call last):
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\engine.py", line 107, in view_update
    self.engine.sync(context, depsgraph)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\viewport_engine.py", line 195, in sync
    self._sync(context, depsgraph)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\viewport_engine.py", line 372, in _sync
    object.sync(root_prim, obj_data)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\export\object.py", line 127, in sync
    mesh.sync(obj_prim, obj, **kwargs)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\export\mesh.py", line 261, in sync
    _assign_materials(obj_prim, obj.original, usd_mesh)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\export\mesh.py", line 267, in _assign_materials
    usd_mat = material.sync(obj_prim, obj.material_slots[0].material, obj)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\export\material.py", line 41, in sync
    doc = mat.hdusd.export(obj)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\properties\material.py", line 58, in export
    if not node_parser.export():
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\nodes\output.py", line 25, in export
    surface = self.get_input_link('Surface')
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\node_parser.py", line 351, in get_input_link
    return self._export_node(link.from_node, link.from_socket.identifier)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\node_parser.py", line 294, in _export_node
    node_item = node_parser.export()
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\nodes\shader.py", line 46, in export
    base_color = self.get_input_value('Base Color')
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\node_parser.py", line 356, in get_input_value
    val = self.get_input_link(in_key)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\node_parser.py", line 351, in get_input_link
    return self._export_node(link.from_node, link.from_socket.identifier)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\node_parser.py", line 294, in _export_node
    node_item = node_parser.export()
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\nodes\texture.py", line 31, in export
    img_path = cache_image_file(image)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\utils\image.py", line 54, in cache_image_file
    image.file_format = old_file_format
TypeError: bpy_struct: item.attr = val: enum "" not found in ('BMP', 'IRIS', 'PNG', 'JPEG', 'JPEG2000', 'TARGA', 'TARGA_RAW', 'CINEON', 'DPX', 'OPEN_EXR_MULTILAYER', 'OPEN_EXR', 'HDR', 'TIFF', 'AVI_JPEG', 'AVI_RAW', 'FFMPEG')

WARN (bpy.rna): C:\Users\blender\git\blender-v293\blender.git\source\blender\python\intern\bpy_rna.c:1505 pyrna_enum_to_py: current value '29' matches no enum in 'Image', 'Stringlights_Specular', 'file_format'
2021-12-01 17:04:16,161 ERROR hdusd.engine [19464]:  bpy_struct: item.attr = val: enum "" not found in ('BMP', 'IRIS', 'PNG', 'JPEG', 'JPEG2000', 'TARGA', 'TARGA_RAW', 'CINEON', 'DPX', 'OPEN_EXR_MULTILAYER', 'OPEN_EXR', 'HDR', 'TIFF', 'AVI_JPEG', 'AVI_RAW', 'FFMPEG'), EXCEPTION:, Traceback (most recent call last):
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\engine.py", line 75, in update
    self.engine.sync(depsgraph)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\final_engine.py", line 187, in sync
    self._sync(depsgraph)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\final_engine.py", line 281, in _sync
    object.sync(root_prim, obj_data)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\export\object.py", line 127, in sync
    mesh.sync(obj_prim, obj, **kwargs)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\export\mesh.py", line 261, in sync
    _assign_materials(obj_prim, obj.original, usd_mesh)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\export\mesh.py", line 267, in _assign_materials
    usd_mat = material.sync(obj_prim, obj.material_slots[0].material, obj)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\export\material.py", line 41, in sync
    doc = mat.hdusd.export(obj)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\properties\material.py", line 58, in export
    if not node_parser.export():
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\nodes\output.py", line 25, in export
    surface = self.get_input_link('Surface')
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\node_parser.py", line 351, in get_input_link
    return self._export_node(link.from_node, link.from_socket.identifier)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\node_parser.py", line 294, in _export_node
    node_item = node_parser.export()
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\nodes\shader.py", line 56, in export
    specular = self.get_input_value('Specular')
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\node_parser.py", line 356, in get_input_value
    val = self.get_input_link(in_key)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\node_parser.py", line 351, in get_input_link
    return self._export_node(link.from_node, link.from_socket.identifier)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\node_parser.py", line 294, in _export_node
    node_item = node_parser.export()
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\bl_nodes\nodes\texture.py", line 31, in export
    img_path = cache_image_file(image)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\utils\image.py", line 54, in cache_image_file
    image.file_format = old_file_format
TypeError: bpy_struct: item.attr = val: enum "" not found in ('BMP', 'IRIS', 'PNG', 'JPEG', 'JPEG2000', 'TARGA', 'TARGA_RAW', 'CINEON', 'DPX', 'OPEN_EXR_MULTILAYER', 'OPEN_EXR', 'HDR', 'TIFF', 'AVI_JPEG', 'AVI_RAW', 'FFMPEG')

2021-12-01 17:04:16,163 ERROR hdusd.engine [19464]:  Accessed schema on invalid prim, EXCEPTION:, Traceback (most recent call last):
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\engine.py", line 85, in render
    self.engine.render(depsgraph)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\final_engine.py", line 160, in render
    self._render(scene)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\final_engine.py", line 109, in _render
    self._set_scene_camera(renderer, scene)
  File "C:\Users\AMD\AppData\Roaming\Blender Foundation\Blender\2.93\scripts\addons\hdusd\engine\final_engine.py", line 146, in _set_scene_camera
    gf_camera = usd_camera.GetCamera()
RuntimeError: Accessed schema on invalid prim

Problems activating plugin

On Win10, fresh blender 2.91 stable install.

I get this when trying to enable the plugin :

`Traceback (most recent call last):
File "C:\Program Files\Blender Foundation\Blender 2.91\2.91\scripts\modules\addon_utils.py", line 351, in enable
mod = import(module_name)
File "C:\Users\statix\AppData\Roaming\Blender Foundation\Blender\2.91\scripts\addons\hdusd_init_.py", line 31, in
from . import config
File "C:\Users\statix\AppData\Roaming\Blender Foundation\Blender\2.91\scripts\addons\hdusd\config.py", line 15, in
from .utils import logging
File "C:\Users\statix\AppData\Roaming\Blender Foundation\Blender\2.91\scripts\addons\hdusd\utils_init_.py", line 41, in
BLENDER_DATA_DIR = next(BLENDER_ROOT_DIR.glob("2.*/datafiles"))
StopIteration

`

MaterialX importer: Shader inputs precedency

Hi

I have found a case when the MaterialX importer gets a different visual result than MaterialXViewer. However, It's a bit of an edge case and I can't find a precedency in the MaterialX specs for inputs when multiple valid connections exists. So I'm not sure if this should be considered a bug or not.

Consider a MaterialX file containing:

  • A Nodegraph with a constant node outputting a green value "0, 1, 0".
  • A "free node" outputting a blue value "0, 0, 1".
  • A Surfaceshader with a base_color input with a value (red / "1, 0, 0") and connection to both the free node and the nodegraph

Syntax for the input would be:
<input name="base_color" type="color3" value="1, 0, 0" nodename="blue" output="green" nodegraph="NG_green" />

This means that we have multiple valid values for the input, but which one to chose?

In MaterialXViewer and OSL, the precedency seems to be:
nodegraph > nodename > value
I.e the expected base_color will be green

But in this importer it seems like the precedency is
value > nodename > nodegraph
The base_color is red, and no other nodes are imported.

If I render the attached material in MaterialX I get this output

But when importing it in Blender using the add-on I got this
image

Where I'm expecting to get an input similar to this:

As stated in the beginning. I'm not sure what the standard says when it comes to precedency, I have asked a question regarding this on the ASWF Slack., so I'm not entirely sure if this is a bug or not. But it can be good to look into as currently RPR have a different result when importing a mtlx file such as the one described.

Tested versions:

  • v1.1.6
  • v1.1.1

The attached material

<materialx version="1.38">
  <nodegraph name="NG_green">
    <output name="green" type="color3" nodename="green_node" />
    <constant name="green_node" type="color3" nodedef="ND_constant_color3">
      <input name="value" type="color3" value="0, 1, 0" />
    </constant>
  </nodegraph>
  
  <constant name="blue" type="color3" nodedef="ND_constant_color3">
      <input name="value" type="color3" value="0, 0, 1" />
  </constant>

  <standard_surface name="SR" type="surfaceshader">
    <input name="base_color" type="color3" value="1, 0, 0" nodename="blue" output="green" nodegraph="NG_green" />
  </standard_surface>

  <surfacematerial name="Mat" type="material">
    <input name="surfaceshader" type="surfaceshader" nodename="SR" />
  </surfacematerial>
</materialx>

Uses cached version on import despite external changes in the model

  1. When I import a model in .usda format
  2. Then externally change some parameters and save the file
  3. Remove all object in blender (A + Delete)
  4. Then import the same file again - changes are not reflected in the blender.

If replace 3rd with creating a new blender project (File -> New -> General -> Remove default stuff with A + Delete) and then import, changes are reflected as expected.

Sample model

#usda 1.0
(
    doc = "Blender v3.3.1"
    metersPerUnit = 1
    upAxis = "Z"
)

def Xform "Plane"
{
    matrix4d xformOp:transform = ( (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1) )
    uniform token[] xformOpOrder = ["xformOp:transform"]

    def Mesh "Plane"
    {
        int[] faceVertexCounts = [4]
        int[] faceVertexIndices = [0, 1, 3, 2]
        normal3f[] normals = [(0, 0, 1), (0, 0, 1), (0, 0, 1), (0, 0, 1)] (
            interpolation = "faceVarying"
        )
        point3f[] points = [(-1, -1, 0), (1, -1, 0), (-1, 1, 0), (1, 1, 0)]
        texCoord2f[] primvars:UVMap = [(0, 0), (1, 0), (1, 1), (0, 1)] (
            interpolation = "faceVarying"
        )
        uniform token subdivisionScheme = "none"
    }
}

Try to do the steps and on step 2 change, for example, point3f[] points = [(-1, -1, 0), (1, -1, 0), (-1, 1, 0), (1, 1, 0)] to point3f[] points = [(-1, -1, 1), (1, -1, 0), (-1, 1, 0), (1, 1, 0)]. Logically the coplanarity of the plane should fade away but the plugin uses previous version (probably due to caching)


Blender 3.3.1 (b29cfe5a936)
Built-in version of USD plugin (not shown in the addons list)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.