Skeljoint: Adding variants to bones causes an unstoppable loop of errors

Recently we’re working on bendable volumes for 3d object scattering.

For initial tests I to use a basic subdivided cube with rigged bones. The goal was:

  • create a volume mesh which would be bendable/deformable with skeleton rig
  • create a set of variants containing various positions of rig’s bones to get various deforms

I tried to use any potentially useful properties, starting from xformOp ones, but exploring other options. Apparently all properties connected to space transformations added to prims in a variant cause Variant Editor UI flickering and a loop of errors in console (not sure if I pasted them below from first one in loop, but after this they start over again).
I can’t stop the loop and can’t delete variants set or the problematic variant.

Reproducing:

  1. Open attached USD file:
    volume_leaning.zip (2.8 KB)
  2. Make sure Skeljoint extension is on
  3. Go to Variant Editor and create new variant on /root
  4. Add Bone (or multiple bones) prim from volume_skeleton object in stage
  5. Add Property for any prim in the variant
  6. Select any property which corresponds with space manipulation of the object (xformOp:rotateXYZ, Bind Scale, Retarget Translation etc.)

IsaacSim versions tested: 4.1.0 and newer.
System: Windows 11
GPU: GeForce RTX 3060, driver ver: 32.0.15.6094

2025-02-18 12:40:27 [10,863,571ms] [Error] [omni.kit.app._impl] [py stderr]: AttributeError: 'NoneType' object has no attribute 'path'
2025-02-18 12:40:28 [10,863,599ms] [Error] [omni.kit.app._impl] [py stderr]: Traceback (most recent call last):
2025-02-18 12:40:28 [10,863,600ms] [Error] [omni.kit.app._impl] [py stderr]:   File "d:/_praca/surveily/omniverse/isaac_4.50/extscache/omni.kit.variant.editor-106.1.1+106.1.0/omni/kit/variant/editor/stage_change_helper.py", line 87, in on_update
2025-02-18 12:40:28 [10,863,600ms] [Error] [omni.kit.app._impl] [py stderr]:     instance().on_stage_changed()
2025-02-18 12:40:28 [10,863,601ms] [Error] [omni.kit.app._impl] [py stderr]:   File "d:/_praca/surveily/omniverse/isaac_4.50/extscache/omni.kit.variant.editor-106.1.1+106.1.0/omni/kit/variant/editor/window.py", line 688, in on_stage_changed
2025-02-18 12:40:28 [10,863,601ms] [Error] [omni.kit.app._impl] [py stderr]:     if self._editor_core.is_prim_path_in_metadata(path):
2025-02-18 12:40:28 [10,863,602ms] [Error] [omni.kit.app._impl] [py stderr]:   File "d:/_praca/surveily/omniverse/isaac_4.50/extscache/omni.kit.variant.editor-106.1.1+106.1.0/omni/kit/variant/editor/core.py", line 1204, in is_prim_path_in_metadata
2025-02-18 12:40:28 [10,863,602ms] [Error] [omni.kit.app._impl] [py stderr]:     vspec = self.find_spec_in_variant(variant_path)
2025-02-18 12:40:28 [10,863,602ms] [Error] [omni.kit.app._impl] [py stderr]:   File "d:/_praca/surveily/omniverse/isaac_4.50/extscache/omni.kit.variant.editor-106.1.1+106.1.0/omni/kit/variant/editor/core.py", line 996, in find_spec_in_variant
2025-02-18 12:40:28 [10,863,603ms] [Error] [omni.kit.app._impl] [py stderr]:     spec_path = spec_path.ReplacePrefix(v_path, v_spec.path)

Related issue (by the way) - Variant Editor window/dock cannot be saved in layout. Every time I reload windows layout, I have to open Variant Editor window and dock it manually.

cc @pcallender this is our team member

1 Like

A little update: this is probably an UI bug, since editing the .usd file in text mode and adding these properties in text editor works well.

Another bug is, that if you create some variants and give some (any) properties to added prims, and after that, you delete these properties - they won’t be deleted. They will disappear as they were gone, but after toggling between variants, when you get back to these prims, the deleted properties are back.

Hi @ThatHiden Thanks for clarifying in your most recent post. So to recap these are the issues:

  1. There’s a (likely) UI bug when editing properties in variants with skeljoints.
  2. The variant window/dock cant be saved in the layout.
  3. Create some variants, add properties, delete properties, they’ll return after toggling between variants.

This is outside my group (synthetic data), but I’ll get this pointed in the right place, since I was previously trying to get eyes on this for the skeljoint group.

Toggling and clicking around variants doesn’t help. In fact, it kind of breaks the variant/variant set.

I have some variant sets on my asset. I’ve added another one, and for the first variant of the new set I added some bones prims. Then I added xformOp properties to all of them simultaneously.
It caused major slowdown of the whole program, some parts of Variant Editor UI disappeared and started flickering occasionally here and there.

Clicking on any variant in any other variant set stops the flickering and gets Isaac to normal work speed. After clicking on the bones variant to see if xformOp properties have been added to selected prims, nothing appears. Prims list area has a communicate “Please select a variant to edit”, ignoring the fact I selected the variant set or the variant.

There are more minor bugs of Variant Editor UI, like stronger opinion L icon which does not disappear when clicked to override local layer’s opinion, or xformOp sliders in prims properties which get back to original values after tweaking despite no other factors in file which could interfere with those sliders. Prims does not disappear from variants after deleting them, because overrides brackets are deleted from variant, but prims aren’t deleted from custom data header, so when you go to other variant(set) and go back to given variant, deleted prims appear again with no properties.
Sometimes it’s faster to work from text editor to create even complicated variants, because of errors in implementations coming from usage of the UI.

Having long years of experience with Unreal Engine, Unity and other softs with similar UI, and after over half a year of everyday work with IsaacSim, in my opinion Variant Editor UI is the most disappointing piece of UI I ever experienced. Very, very sloppy UX due to multitude of bugs.

I peaked to text edit to see how the variant looks like after trying creating it via UI. It is created and has custom data header filled properly, but the scope is empty, there are no overrides.
After adding them by finger, choosing the variant causes the same flickering bug.

We need that feature for data (asset) randomization, we were planning on creating variants for bones deformation. If it won’t work (and it apparently doesn’t at the moment), @Turowicz must hardcode those transformations in spawning methods in his generation scripts, which is not only burden of work for him, but also very inconvenient way to check looks of those changes, as he must generate them every time to check if input values are good.

In short, this bug is major and is blocking us bad.