I just wanted to remark something that came up on recent USD-Asset Workgroup meeting:
Note that Variants in USD can not be animated over time. A single USD stage cannot author e.g. timesamples for variant selections and thus within a single USD file it would be impossible to say animate the LOD variant of a prim based on whether it would get closer or further away from the camera.
This by itself makes Variants a bad candidate for those uses of LODs where it would switch dynamically.
You could always write a USD per frame and render that instead - but I just wanted to mention that it might give you problems in certain cases.
What the "recommended" workflow was instead for switching LODs dynamically didn't really find a definitive answer in that meeting if I recall correctly - so I'll leave that to others to answer. Just wanted to highlight the potential issue you might face in the future.
Found 9 posts.
Search results Show results as topic list.
Solaris and Karma » Working with Variants and LODs
- colorbleed
- 9 posts
- Offline
Solaris and Karma » Master material shared with multiple objects in Solaris
- colorbleed
- 9 posts
- Offline
As far as I know in USD itself there's not really such a thing as cross-referencing between Shaders/Materials like a master material. In Houdini itself however, you can of course just create "reference copies" of Houdini nodes so they reference the parms of the others, except for those you want to tweak.
In USD with most renderers what you could do instead is putting down a node that reads a particular user data from a primvar on the geometry. E.g. you could read a filepath from a mesh attribute and use that for the texture, or use a float value from the mesh for specular - etc.
This works fine with Arnold materials. Quickly trying Materialx here with string values doesn't seem as trivial, see attached.
Maybe this gives you some ideas for general approaches.
In USD with most renderers what you could do instead is putting down a node that reads a particular user data from a primvar on the geometry. E.g. you could read a filepath from a mesh attribute and use that for the texture, or use a float value from the mesh for specular - etc.
This works fine with Arnold materials. Quickly trying Materialx here with string values doesn't seem as trivial, see attached.
Maybe this gives you some ideas for general approaches.
Solaris and Karma » How to quickly move pivot to object center in LOP?
- colorbleed
- 9 posts
- Offline
For me - whenever I use a Transform LOP whenever you customize the `primpattern` parm (Primitive Pattern) at the top then it automatically adjusts the pivot point to the center of the selected primitives.
Note that this occurs when you CTRL+CLICK on the right hand side arrow next to the Prim Pattern field and then select objects in there, and click apply.
I've reported that as a bug since it's really annoying that if you've already done transformations and just want to include an extra primitive that suddenly the pivot changes. However, it does mean that for now that's an easy 'hack' to force the pivot point to bounding box center.
In my bug I've basically requested to implement something like the LOP transforms, so that there are explicit buttons in the UI to "Set the Pivot Point to center" (instead of dynamic evals, etc.)
Note that this occurs when you CTRL+CLICK on the right hand side arrow next to the Prim Pattern field and then select objects in there, and click apply.
I've reported that as a bug since it's really annoying that if you've already done transformations and just want to include an extra primitive that suddenly the pivot changes. However, it does mean that for now that's an easy 'hack' to force the pivot point to bounding box center.
In my bug I've basically requested to implement something like the LOP transforms, so that there are explicit buttons in the UI to "Set the Pivot Point to center" (instead of dynamic evals, etc.)
Solaris and Karma » Use same persp cam between stage and inside SOP Create LOP
- colorbleed
- 9 posts
- Offline
You could get your LOPs camera in /obj context with the LOP Import CAM node in /obj? It'll just end up acting as /obj level camera.
Vice versa you can use a Scene Import node in LOPs so that an /obj level camera becomes available in LOPs.
Would either of those work for you?
It's not meant to be manipulated in both - but you can at least enable it in your viewer in both then.
Vice versa you can use a Scene Import node in LOPs so that an /obj level camera becomes available in LOPs.
Would either of those work for you?
It's not meant to be manipulated in both - but you can at least enable it in your viewer in both then.
Solaris and Karma » Solaris - How to Export Animated Cameras and Geo?
- colorbleed
- 9 posts
- Offline
> It looks like some of the formats implement file format args. Is there a way to pass these to the USD rop, maybe a syntax on the asset path/uri that is parsed?
I believe there is - it's something with :SDF_FORMAT_ARGS:
See:
- https://www.sidefx.com/forum/topic/86932/?page=1#post-375444 [www.sidefx.com]
- https://openusd.org/dev/api/usdabc_page_front.html [openusd.org]
I believe there is - it's something with :SDF_FORMAT_ARGS:
See:
- https://www.sidefx.com/forum/topic/86932/?page=1#post-375444 [www.sidefx.com]
- https://openusd.org/dev/api/usdabc_page_front.html [openusd.org]
3rd Party » Houdini 20 HtoA ACES/OCIO troubleshooting.
- colorbleed
- 9 posts
- Offline
Just to confirm whether you're seeing the same behavior as me. I'm on Houdini (Core) 20.0.547 with HtoA 6.2.5.1.
1. Setting these Rendering Color Family and Narrow Color Family on the Arnold Render Settings node instead of the Render Settings node does not work. It always sets the value as "0" as opposed to the selected value.
2. A Custom OCIO config is ONLY loaded when these properties are set on the Render Settings prim that is being used. So e.g. specifying the color spaces for textures when looking through Arnold viewer in the scene above the Render Settings prim or with the "Viewport Settings" display options does not show the correct colors. (Make sure to "Restart Render" for the view so it initializes the active settings). If you enable higher verbosity of the Arnold Render Settings you can see it'll always load the HtoA built-in OCIO instead of the one set from the OCIO env var.
This is also the reason why the Color Space doesn't really work if you don't set those properties (which to me, is very odd default behavior, it should default to the default roles in the OCIO config defined by the `OCIO` env var if not overridden on the Render Settings prim). If that were the case - you wouldn't need to explicitly set these on the Render Settings prim as these are the default values for your OCIO config.
3. When in Render Settings setting "Auto-Generate TX" to disabled and "Use Existing TX" to disabled then the color space conversions in the renderer will report warnings in the logs like: ` unable to convert from color space "ACES - ACEScg", ignoring color transform (filename = "c:\path\to\file.exr")`. Actually no - this last one was only if the OCIO config failed to load due to any of the issues of 1) or 2).
1. Setting these Rendering Color Family and Narrow Color Family on the Arnold Render Settings node instead of the Render Settings node does not work. It always sets the value as "0" as opposed to the selected value.
2. A Custom OCIO config is ONLY loaded when these properties are set on the Render Settings prim that is being used. So e.g. specifying the color spaces for textures when looking through Arnold viewer in the scene above the Render Settings prim or with the "Viewport Settings" display options does not show the correct colors. (Make sure to "Restart Render" for the view so it initializes the active settings). If you enable higher verbosity of the Arnold Render Settings you can see it'll always load the HtoA built-in OCIO instead of the one set from the OCIO env var.
This is also the reason why the Color Space doesn't really work if you don't set those properties (which to me, is very odd default behavior, it should default to the default roles in the OCIO config defined by the `OCIO` env var if not overridden on the Render Settings prim). If that were the case - you wouldn't need to explicitly set these on the Render Settings prim as these are the default values for your OCIO config.
3. When in Render Settings setting "Auto-Generate TX" to disabled and "Use Existing TX" to disabled then the color space conversions in the renderer will report warnings in the logs like: ` unable to convert from color space "ACES - ACEScg", ignoring color transform (filename = "c:\path\to\file.exr")`. Actually no - this last one was only if the OCIO config failed to load due to any of the issues of 1) or 2).
Edited by colorbleed - 2024年2月8日 19:50:10
Technical Discussion » About color Picker (ACES)
- colorbleed
- 9 posts
- Offline
I seem to not be getting the results I expect with the Color Picker either in 20.0.547. Anyone ever figured out how to correctly color pick within the expected colorspace for my current OCIO config.
Basically I'd like to color pick so that my picked color is what becomes the output value at Display (+View?) transform space so that I can basically pick a color as it would be at the end of my render and comps.
Which toggle am I missing?
---
Side note: This particular thread's conversation seemed to have continued somewhat here: https://www.sidefx.com/forum/topic/87323/?page=1#post-376988 [www.sidefx.com]
Basically I'd like to color pick so that my picked color is what becomes the output value at Display (+View?) transform space so that I can basically pick a color as it would be at the end of my render and comps.
Which toggle am I missing?
---
Side note: This particular thread's conversation seemed to have continued somewhat here: https://www.sidefx.com/forum/topic/87323/?page=1#post-376988 [www.sidefx.com]
Edited by colorbleed - 2024年2月6日 05:34:20
Solaris and Karma » Python: Query available USD renderers
- colorbleed
- 9 posts
- Offline
I ended up doing this:
However I'm unsure if the the `aovsupport` really is the only option that defines whether the renderer should appear on the USD Renderer ROP's list or not. It does sound like that going based of of this note in the documentation about Available Renderers [www.sidefx.com].
Which I just happened to find just now.
def get_usd_rop_renderers(): """Return all available renderers supported by USD Render ROP. Note that the USD Render ROP does not include all Hydra renderers, because it excludes the GL ones like Houdini GL and Storm. Returns: dict[str, str]: Plug-in name to display name mapping. """ # USD Render ROP only lists the renderers that have `aovsupport` # enabled. Also see: # https://www.sidefx.com/docs/houdini/nodes/out/usdrender.html#list return { info["name"]: info["displayname"] for info in hou.lop.availableRendererInfo() if info.get('aovsupport') }
However I'm unsure if the the `aovsupport` really is the only option that defines whether the renderer should appear on the USD Renderer ROP's list or not. It does sound like that going based of of this note in the documentation about Available Renderers [www.sidefx.com].
The list of renderers is filtered based on the data returned by the usdrenderers.py script. The husk utility, and by extension the USD Render node, only support renderers that can generate AOV buffers (that is, renderers whose aovsupport attribute is True).
Which I just happened to find just now.
Edited by colorbleed - 2024年1月29日 16:03:07
Solaris and Karma » Python: Query available USD renderers
- colorbleed
- 9 posts
- Offline
I seem to be unable to find how to query the available renderers for Solaris USD Render ROP.
The Render Delegate information [www.sidefx.com] doesn't seem to provide me with the right details to find only those that can be set in the USD Render ROP.
These do appear to list all renderers, but include the viewport Houdini GL and Storm renderer that USD Render ROP can't set.
I can query the information from the USD Render ROP's `renderer` parm.
This is basically the list I want to query, but without requiring to create a USD Render ROP node.
Any ideas?
The Render Delegate information [www.sidefx.com] doesn't seem to provide me with the right details to find only those that can be set in the USD Render ROP.
hou.lop.availableRendererInfo() hou.lop.availableRendererLabels() hou.lop.availableRendererNames()
These do appear to list all renderers, but include the viewport Houdini GL and Storm renderer that USD Render ROP can't set.
I can query the information from the USD Render ROP's `renderer` parm.
node = hou.node("/out/usdrender1") node.parm("renderer").menuContents() ('HdRedshiftRendererPlugin', 'Redshift', 'BRAY_HdKarma', 'Karma CPU', 'BRAY_HdKarmaXPU', 'Karma XPU', 'HdArnoldRendererP lugin', 'Arnold')
This is basically the list I want to query, but without requiring to create a USD Render ROP node.
Any ideas?
Edited by colorbleed - 2024年1月29日 15:58:43
-
- Quick Links