Materials Grayed only on Geometry Subsets since Installing Update 2023.1.0

I’m having this issue since installing USD Composer 2023.1.0
I have an a room which is a single mesh divided into multiple geometry subsets. I use these subsets to assign different materials to the various parts of the room.
Since the update, all materials assigned to geometry subsets are grayed out, whilst others that are assigned to a mesh that is not divided are working. Also, as you can see in the image, the material preview on the properties tab is also grayed out for these materials.
I have rolled back to the previous version (Create 2022.3.3) and the same usd works perfectly.
Any suggestions on how I should proceed with getting this fixed?

OS:
|Processor|AMD Ryzen 5 5600 6-Core Processor 3.50 GHz|
|Installed RAM|32.0 GB|
|System type|64-bit operating system, x64-based processor|

GPU:
RTX 4090
Driver 536.40

USD Composer Logs:
USD.Composer.zip (4.2 MB)

Thank you for the comment. We will start to look into this straight away.

1 Like

Hey Andy,

Likely this is related to an update to USD that caused a very specific method of material binding/application to be no longer considered valid. To help, we specifically built the asset validator to fix these bindings and make your asset compliant to the updated versions of USD.

You can read about it here! Materials and USD Compliance with 2023.1 - #2

1 Like

Hi Andy
As mentioned, certain older scenes files may exhibit material problems, and the best tool to solve this is the “Asset Validator” that is built into the software. Please see below for how to run it. It will find and fix a lot of these material issues, and several other issues as they occur.

1 Like

We are aware of these issues and we are exploring more options to help fix scenes easily. Could you please run the Asset Validator tool and report back with your results ? That would be of great help.

1 Like

Thank you for your prompt response.
I have run the Asset Validator as instructed. However, it appears to have emptied my stage completely. (see attached image)

My proceedure was:
Open the Stage containing the assets and materials
Save As “Stage_03” (Previously “Stage_02”)
Open the Asset Validator window
Click Enable All
Click Analyse
At this point the red writing appeared under the Asset column
I clicked on the checkbox next to the red writing to select it
Clicked Fix Errors on Selected
At this point the entire stage went black and all assets dissapeared from the stage tab. (Layers are still present)

Log:
USD.Composer.zip (4.3 MB)

Image:

I will experiment some more, but just wanted to keep you informed of each step of my process.
Thanks again for your help.

Also, I’ve just discovered that the previous iteration, “Stage_02” has also been affected, leaving it empty of all assets except the HDRI I have on a Dome Light.

Process:
Following the operation described in my previous comment, I closed “Stage_03” without saving.
I opened “Stage_02” to discover this:

Hi Andy
That is not good. It should not be removing any assets. Can you send me your scene so I can experiment with it. Make sure you have backups. Our apologies for the inconvenience.

Thanks Richard,
I will send you a link in a DM.

I’m curious about the line at the top of the asset validator that says the stage is not available.

Have you tried right clicking on the stage in the content browser and selecting, “validate asset”?

It changes the validator from Stage mode to URI mode. The rules can also be run in dry mode to see what it finds before fixing.

Hi fpliu,
The original stage has no assests left on it. However, I have copied one from my backup on an externalHD to follow your instructions.

Process:
Duplicate folder containing all assets on externalHD
Move duplicate to the project folder on localhost
View project folder in browser in USD Composer
Open “Stage_02” to check if it contains assets as expected: It only shows the assets that were working before. The building that was grayed out by the update is not even present on the stage, though it is listed in the stage tab. (See image1)

Right click “Stage_02”
Click “Validate USD”
Click Analyse
This lists “Stage_02” in the Asset column
Expanded list of Issues (See image1)
Selected All
Clicked “Fix Errors on Seleceted”
This leaves me with the Stage emptied again and the Stage tab depopulated. All that remains is the dome light with HDRI texture.
Also, two Issues remain listed in the Validator Asset column.
When I select these and click “Fix errors on Selected”, they remain and nothing further changes.

I have attempted to “copy output” from the validator but am unable to paste the results in any format.
I have attempted to “save output” from the validator but no .csv file shows up in the file I save to.
So other than trying to screengrab the long list of issues listed, I am unable to send you a copy of the validator output.

Thank you for your time. I hope this information gives you some clues.

Hi @andygreen250
I took a look at your scene and we also consulted members of our engineering team regarding your setup. What was suggested is that you not run all the validation rules. In particular Default Prim Checker Rule. That rule is the cause for making your geometry invisible.

The suggested rules to run are only the Usd:Schema rules. You can Disable All rules. And then enable only the Schema rules. Running this on your original data should fix all invalid USD realated to geomsubset family, material binding API and Dangling Material Bindings.

It was noted that the data in your scene wasn’t actually deleted. It was invisible. To restore that visibility, you can go to the Script Editor and run the following on your scene

stage = omni.usd.get_context().get_stage()
for prim in stage.GetPseudoRoot().GetChildren():
	prim.SetActive(True)

In the future we’re going to change the default enabled rules in the Validator and we’re re-looking at the default prim checker to see if it’s overly aggressive.

Hope this helps.

@fpliu

Thank you fpliu and the engineering team.

Apologies, but this is getting pretty complex now. My original issue with grayed out materials has snowballed. I’ll try to keep my response as clear as possible in the hope that we can glean something useful from this.

For clarity: there are two versions of the scene that I have now shared with Richard:

The original version: In a folder called “Layers” with usd’s called “Stage_01”, “Stage_02” and “Stage_03”

The second version: called “Rooms_Modular_2.2_for_Richard”

I am unsure which of these versions you have examined.

So, following your message above, I went straight to the original version (“Stage_03”) that had been emptied by the Assest Validator to try out the script you suggested would restore the invisible data.

Process:
Open the script editor window
Copy and paste the script from your message above into the Python tab
Click “Run”

Result: It didn’t restore the data, the scene remained unchanged and empty. (Note: on this original, when I ran the asset validator on this scene, all assets dissapeared from the Stage tab as well as the viewport)

I then opened the second version that I sent Richard, the usd called “Rooms_Modular_2.2” and ran the Asset Validator in the reduced way you suggested.

Process:
I opened the usd, selected everything in the Stage tab,
opened asset validator window (in uri mode)
disabled all, renabled only options in the usd:schema set,
clicked analyse
selected everthing in the asset list
clicked fix errors on selected

The result was that everything in the environment prim and everything in it has dissaperared and the building has turned red.

I then tried on this scene the script you suggested might restore visbility to data made invisible by the asset validator. The scene remained unchanged.

(See image 1)

On a positive note: I have just experimented with a clean copy of the 2nd version of the scene and have begun to be able to restore the materials manually in a unexpected way, as follows:
1: Select the geometry subset of a greyed out object
2: Locate the MDL Source Asset
3: Drag the asset from the browser onto the mesh in the viewport
4: The wierd thing here is that doing this with only one material, this restores all other materials associated with all other geometry subsets on that mesh. (see image 2)

I hope this might gives you some further insight into whatever has happened here.

Anyway, I’m very grateful for your time in trying to work this out and I hope that anyone reading the thread can learn from my mistakes. I have actually rebuilt the whole scene from scratch and so far it’s working in the updated USD Composer. For the benefit of anyone reading this thread, I’ll list some of my considerations in the rebuild. This time I’ve:

  • Avoided using any geometry subsets in the original meshes
  • Introduced materials to a scene much more efficiently by ensuring they all go into one World/Looks folder, instead of having Looks folders spread thoughout the hierarchy
  • Been much more considered in how the scenes are referencing usds,etc. (this is vital)
  • Begun thinking of the scene as layers right from the start instead of trying to decomile a an existing scene into layers later on.

So it’s been a tough but valuable lesson for me.
I understand if you don’t want to take this investigation further, as it’s all got a bit messy now. However, if it helps the devs to improve the software, then I’m happy to continue trying anything you might suggest.

Thanks again
Andy

(EDIT: Even stranger! I just reopened the version where I had begun to restore materials manually. When I closed it before, I had only restored materials to one room, as you can see in the picture above. On reopening it, all materials have been restored to all assets!! The scene now looks exactly as it did before I began this whole thread :) )

Here’s a log of todays activity, incase it helps:
kit_20230706_113027.log (3.2 MB)
kit_20230706_120209.log (5.4 MB)

I have exactly the same issue as described at the top. I opened my file using Code and all the material are textured correctly, in opened it in US Composer and they are all grey.

Hi Zambetti1,
So could you follow the same advice.

  1. Backup and copy your file
  2. open Asset Validator
  3. Disable All rules
  4. enable only the Schema rules
  5. Run

Hello! I am experiencing the same issue with multiple stages. I have attempted the afore-mentioned remedies and unfortunately, none of them have worked. Notably, regardless of the file, the asset validator fails to apply the material binding API to any asset with the following result:
Screenshot 2023-07-12 112057
It does this with every stage on all assets. It keeps failing on the “CloudSky.USD” file when it isn’t even the asset being evaluated.

I am using the latest build 2023.1.1.

Thank you!
-Brent