LucaScheller / VFX-UsdAssetResolver

Usd Asset Resolver Reference Implementations
https://lucascheller.github.io/VFX-UsdAssetResolver/
Apache License 2.0
105 stars 21 forks source link

Layer Muting #9

Closed kreppene closed 7 months ago

kreppene commented 7 months ago

Hi, thank you so much for this great resource Luca.

We are running into a problem when with the cacheResolver when it comes to layer muting.

I tried both with AR_CACHEDRESOLVER_ENV_EXPOSE_RELATIVE_PATH_IDENTIFIERS on and off, it seams like all paths that goes trough the resolver is affected by this.

This shows layer muting with the asset resolver houdinicore_assetresolver

this shows layer muting without the assetresolver houdinicore_rYMWyl9QSx

Houdini uses the UsdStage::MuteAndUnmuteLayers API for the configure stage for muting (got this from sideFx support), From the USD docs it says it needs the layerIdentifier, but i am not able to mute the layer using the identifier i get from cached_resolver.GetCachedRelativePathIdentifierPairs(). Infact i tryed all sorts of combinations, but nothing seams to works, not sure if i get the wrong identifier or if theirs something missing in the asset resolver, or the pythonExpose?

https://openusd.org/dev/api/class_usd_stage.html#a8af4162fe11cc6a5f21a39e770d397c2

Any idea?

BigRoy commented 7 months ago

I suspect you might need to "Layer Mute" using the unresolved identifier path. Unless you need to mute instead with resolved paths This might be a Houdini bug that instead of using the actual identifier here that it tries to mute based on the Resolved Path?

Could you put down a Configure Stage LOP node, enable "Mute layers" and try first one, then the other. One the non-resolved path, and one with the resolved path. At least one of the two should work.

kreppene commented 7 months ago

Thanks Roy, i tested both variants of the path with the configure Stage node, but nothing seems to work. In Fact i think i test all combinations i can think off.

Is it working at your end?

Unresolved path

image

Resovled Path

image
LucaScheller commented 7 months ago

Hey, I'll look into this over the weekend.

LucaScheller commented 7 months ago

Hey, it works for me with the examples .usd files in the repo.

It should be the assetPath that you get in the ResolveAndCache method.

Is it possible for you to share the scene file and resolver (or a simplified version thereof)?

All the best, Luca

LucaScheller commented 7 months ago

Notes from private chat: It happens on Windows only and only with "set AR_CACHEDRESOLVER_ENV_EXPOSE_RELATIVE_PATH_IDENTIFIERS=1" enabled. Strangely enough the Houdini Scene Graph layers panel is also affected. I'll debug this some more later this week.

Using the following identifiers works on Linux, but not on Windows.

for l in stage.GetUsedLayers():
    print(l.identifier)
LucaScheller commented 7 months ago

Issue is fixed in the v0.6.2 release :) Let me know if it works, and I'll close the issue.

The problem was (the usual ;) ) Windows path separator conversion. You can also just fix this line in your PythonExpose.py file.

kreppene commented 7 months ago

This fixes the problems i have had with muting, Thanks Luca. Please go ahead and close this issue