I seem to have answered my own question.
The issue it turns out is pretty simple. In the Component Material, I plunked down an Edit Material Properties node and simply hit "Create Parameters". The Primitives path expression picked up the preview surface shader that had been created on my behalf instead of the surface shader itself. Targeting the Primitives directly did the trick.
Found 11 posts.
Search results Show results as topic list.
Solaris and Karma » Edit Material in Component Material
- jGrBr
- 11 posts
- Offline
Solaris and Karma » Edit Material in Component Material
- jGrBr
- 11 posts
- Offline
After watching the video on the component builder, it was my understanding that the dive target for the Component Material was intended to operate on the particular variant represented by the node.
I have a setup with a couple of materials in the Material Library.
For each material, i have a distinct Component Material chained between the original Component Material and the Component Output.
On each Component Material, I have explicitly set the Primitives path to point at the '/ASSET/geo' scope, and the Material Path to point at the particular material in the graph. So far so good.
However, I am trying to create a novel material variant by targeting an existing material in the Material Component's Material Path and then creating an Edit Material in its dive target, and overriding the diffuseColor. When I throw a setVariant node after the Component Output node, and target the appropriate variant, i get inconsistent results. The houdini gl view picks up the new color, but Karma does not. And storm picks up what appears to be the original point color.
As for the material that I am overriding, it is a materialx standard surface shader, which should be compatible with Karma..
I assume that this is a composition arc issue, but I also assumed that the Component Builder was designed for this and that it would work its magic. Is there a specific override to Reference Type that i should set on the Edit Material Properties node in the dive target?
As a followup, I looked a bit deeper into what is going on and realized that the editmaterial properties is indeed targeting /ASSET/mtl/white/mtlxstandard_surface1_preview
That of course explains why it is showing up in gl but not karma. I assume that is because the expression on the Primitives in the Edit Material Properties node is targeting the preview surface. However, when I tried targetting the material as a whole or the mtlxstandard_surface1 Shader in particular, I only achieve the wrong sort of consistency; the override is ignored.
I have a setup with a couple of materials in the Material Library.
For each material, i have a distinct Component Material chained between the original Component Material and the Component Output.
On each Component Material, I have explicitly set the Primitives path to point at the '/ASSET/geo' scope, and the Material Path to point at the particular material in the graph. So far so good.
However, I am trying to create a novel material variant by targeting an existing material in the Material Component's Material Path and then creating an Edit Material in its dive target, and overriding the diffuseColor. When I throw a setVariant node after the Component Output node, and target the appropriate variant, i get inconsistent results. The houdini gl view picks up the new color, but Karma does not. And storm picks up what appears to be the original point color.
As for the material that I am overriding, it is a materialx standard surface shader, which should be compatible with Karma..
I assume that this is a composition arc issue, but I also assumed that the Component Builder was designed for this and that it would work its magic. Is there a specific override to Reference Type that i should set on the Edit Material Properties node in the dive target?
As a followup, I looked a bit deeper into what is going on and realized that the editmaterial properties is indeed targeting /ASSET/mtl/white/mtlxstandard_surface1_preview
That of course explains why it is showing up in gl but not karma. I assume that is because the expression on the Primitives in the Edit Material Properties node is targeting the preview surface. However, when I tried targetting the material as a whole or the mtlxstandard_surface1 Shader in particular, I only achieve the wrong sort of consistency; the override is ignored.
Edited by jGrBr - May 2, 2022 12:09:04
Technical Discussion » binding a handle to a transform node within a foreach
- jGrBr
- 11 posts
- Offline
I have a digital asset which has a multiparm list, allowing the user to add reference nodes in Lops. I have appended a transform and have arranged to target the appropriate prims; it works well. However, I would like to allow the user to use a handle. How does one go about this when multiparm block lists & foreach blocks within ah HDA are involved? Is this a button/script sorta thing or is there another way?
Technical Discussion » linking channels within a multiparm block in an HDA
- jGrBr
- 11 posts
- Offline
Question:
how does one go about linking checkboxes & menus from nodes in a foreach block to parameters within an hda's multiparm block list? I am aware of how to handle regular fields via channel referencing, but I am having a bit of trouble with menus and check boxes.
how does one go about linking checkboxes & menus from nodes in a foreach block to parameters within an hda's multiparm block list? I am aware of how to handle regular fields via channel referencing, but I am having a bit of trouble with menus and check boxes.
Solaris and Karma » mutate scene graph procedurally?
- jGrBr
- 11 posts
- Offline
Is there a way of manipulating the namespace on import? Some sort of callback that would allow you to make programatic changes?
Solaris and Karma » mutate scene graph procedurally?
- jGrBr
- 11 posts
- Offline
Other than using the stagemanager node is there a way of renaming a primitive/scene graph path? Like via a wrangle? or is there a node that lets you target a path and modify the name?
Thanks.
Thanks.
Technical Discussion » Forcing Node to re-evaluate Param
- jGrBr
- 11 posts
- Offline
Hello,
I recently implemented a custom URI via the FS_ReadHelper mechanism. This works well enough. However, I have hit a bit of a snag. The uri points at an entry in a backing datastore. Sometimes the data referred to by the uri updates without the uri itself changing. I see no generic way of getting the node to re-evaluate the uri when this happens. I can physically press the “reload geometry” button (and do the equivalent in code ) but i was hoping that there would be a more generic way…
I have tried recooking the node itself, but that doesn't trigger work. I have also tried re-evaluating the param.
thoughts?
I recently implemented a custom URI via the FS_ReadHelper mechanism. This works well enough. However, I have hit a bit of a snag. The uri points at an entry in a backing datastore. Sometimes the data referred to by the uri updates without the uri itself changing. I see no generic way of getting the node to re-evaluate the uri when this happens. I can physically press the “reload geometry” button (and do the equivalent in code ) but i was hoping that there would be a more generic way…
I have tried recooking the node itself, but that doesn't trigger work. I have also tried re-evaluating the param.
thoughts?
Technical Discussion » HDK - persist data to hip file?
- jGrBr
- 11 posts
- Offline
That is too bad. I noticed
OP_Director
….
void setSaveCallback (SaveCallback cb, void *cb_data)
void removeSaveCallback (SaveCallback cb, void *cb_data)
and was hopeful that this capability existed via the HDK. What is the SaveCallback used for?
OP_Director
….
void setSaveCallback (SaveCallback cb, void *cb_data)
void removeSaveCallback (SaveCallback cb, void *cb_data)
and was hopeful that this capability existed via the HDK. What is the SaveCallback used for?
Technical Discussion » HDK - persist data to hip file?
- jGrBr
- 11 posts
- Offline
Thanks for the suggestions. One more thing; is there a way to register on-save and on open callbacks in c++?
Technical Discussion » HDK - persist data to hip file?
- jGrBr
- 11 posts
- Offline
I am writing a system which keeps track of asset metadata within the runtime. It relies on the FS_Helper classes to look up asset locations based on a uri scheme. I would like write data to the hip file on save and fetch it out of the hip file on load. Is this possible via the api?
Edited by jGrBr - March 18, 2017 12:31:31
Technical Discussion » HDK Question - FS_ReaderHelper
- jGrBr
- 11 posts
- Offline
Hello All,
First, I am a bit new to the Houdini API… but I am implementing a custom URI using the FS_ReaderHelper and FS_InfoHelper and I have a couple of questions.
1 - Is there a way for me to provide custom dropdown menus during the construction phase like when one navigates the houdini graph ? ( ie typing / shows a dropdown of various modes, and as you navigate you get contextual choices) ?
2 - i am implementing a URI which points to a resource which has a TTL and may change. I want to update the resolution of the URI, however, since the uri itself is not changing, the sop ( its a file sop in this case ) never re-evaluates. Any way of getting this to work? Unfortunately, The appropriate methods in the FS_ReaderHelper class do not include a pointer to the calling node.
3 - What uses the FS_InfoHelper? What calls it and under what circumstances. What use is it to me as a developer?
First, I am a bit new to the Houdini API… but I am implementing a custom URI using the FS_ReaderHelper and FS_InfoHelper and I have a couple of questions.
1 - Is there a way for me to provide custom dropdown menus during the construction phase like when one navigates the houdini graph ? ( ie typing / shows a dropdown of various modes, and as you navigate you get contextual choices) ?
2 - i am implementing a URI which points to a resource which has a TTL and may change. I want to update the resolution of the URI, however, since the uri itself is not changing, the sop ( its a file sop in this case ) never re-evaluates. Any way of getting this to work? Unfortunately, The appropriate methods in the FS_ReaderHelper class do not include a pointer to the calling node.
3 - What uses the FS_InfoHelper? What calls it and under what circumstances. What use is it to me as a developer?
-
- Quick Links