I have an object that has multiple meshes, each with a custom string attribute “texture_filepath” that contains a path to a texture to display in the viewport. I'm trying to use one main principle shader that would look up that primitive string attribute and apply the proper texture to each primitive.
I've been unsuccessful in my attempt to do that. I've tried using a Parameter node to look up the attribute and plug that into the basecolor_texture port, but that's not working. I doubled checked the attributes to make sure it points to the right textures and if I enter the path manually in the Base Color Texture parameter, it works, so my data is right, it just ain't passing through a Parameter node. I could create a materiel per texture and link a different material per primitive, but that just creates a ton of materials… I would much rather have one material that looks up the relative texture per primitive. How can I do something like that?
Found 79 posts.
Search results Show results as topic list.
Technical Discussion » Texture from attribute
- MathieuLeclaire
- 79 posts
- Offline
Technical Discussion » measure area in UV space?
- MathieuLeclaire
- 79 posts
- Offline
Any suggestions on how to measure area occupied in UV space? The measure SOP only work in world space. I'm leading towards writing an attribute wrangle to extract vertex uv positions per primitive and split it into triangles and sum the area of each triangle by finding min and max values of their UV positions (uvarea = (Xmax - Xmin) * (Ymax - Ymin) /2)… but I'm wondering if there might already exist something to do this instead of coding my own wrangle?
Technical Discussion » Debugging Hip file size
- MathieuLeclaire
- 79 posts
- Offline
One of my artists have a hip file that weight over 2gb… There's a lot of nodes in there. I'm trying to find what is weighting so much. Did he lock or stash a node? Is there a tool I can use to analyze the scene and find where the heavy data resides in his scene?
Technical Discussion » Generate multiple UDIM UVs on a simple mesh
- MathieuLeclaire
- 79 posts
- Offline
I have no patches. I have one patch. That's what I want to create. I want to split that patch into many and distribute them over multiple UDIMs.
Technical Discussion » Generate multiple UDIM UVs on a simple mesh
- MathieuLeclaire
- 79 posts
- Offline
Technical Discussion » Generate multiple UDIM UVs on a simple mesh
- MathieuLeclaire
- 79 posts
- Offline
I'm having a hard time figuring out how to automatically split a simple mesh into multiple UDIM UVs so I get a result similar to this image :
Since the mesh is just one big polygon island, everything I've tried seems to keep the mesh on the first UDIM tile. I basically want to be able to take a mesh and tell it, split it onto 30 UDIM tiles. Seems pretty straight forward, but I can't figure it out. How do I do that?
Since the mesh is just one big polygon island, everything I've tried seems to keep the mesh on the first UDIM tile. I basically want to be able to take a mesh and tell it, split it onto 30 UDIM tiles. Seems pretty straight forward, but I can't figure it out. How do I do that?
Technical Discussion » Write multiple Alembic at once
- MathieuLeclaire
- 79 posts
- Offline
Technical Discussion » Write multiple Alembic at once
- MathieuLeclaire
- 79 posts
- Offline
I need to write out hundreds of Alembic files based on the name attribute in a SOP.
If I would write them out as bgeo, I would simply use a File SOP in a Foreach loop and change the name based on the name attribute.
…but I don't see how I could do that for Alembics. Is there a way to do that?
If I would write them out as bgeo, I would simply use a File SOP in a Foreach loop and change the name based on the name attribute.
…but I don't see how I could do that for Alembics. Is there a way to do that?
Technical Discussion » efit in expression
- MathieuLeclaire
- 79 posts
- Offline
I can use fit in an expression, but it clamps the values… so I want to use efit, but that doesn't seem to work in an expression.
I can work around the problem by using an attribute wrangle to store a detail attribute and then do a detail expression on the parameter I want, but that feels like an awkward solution. I'm wondering if there are better ways to do that?
I can work around the problem by using an attribute wrangle to store a detail attribute and then do a detail expression on the parameter I want, but that feels like an awkward solution. I'm wondering if there are better ways to do that?
Technical Discussion » Click arrow on the exposed Group pararmeter in a subnet/HDA gives error...
- MathieuLeclaire
- 79 posts
- Offline
Technical Discussion » Click arrow on the exposed Group pararmeter in a subnet/HDA gives error...
- MathieuLeclaire
- 79 posts
- Offline
Hi,
I'm trying to expose/promote the Group parameter of a node inside a subnet/HDA so I can manually select points from the subnet/HDA exposed/promoted parameter. It works if we type in the values manually or select a group from the list, but as soon as I click the little arrow to make a manual selection, Houdini pops up a “argument of type ‘NoneType’ is not iterable” error message. What's going on? How can I make this work?
I'm trying to expose/promote the Group parameter of a node inside a subnet/HDA so I can manually select points from the subnet/HDA exposed/promoted parameter. It works if we type in the values manually or select a group from the list, but as soon as I click the little arrow to make a manual selection, Houdini pops up a “argument of type ‘NoneType’ is not iterable” error message. What's going on? How can I make this work?
Technical Discussion » exr texture vop slow?
- MathieuLeclaire
- 79 posts
- Offline
Why is it so slow to read an exr texture inside a point vop? Am I doing something wrong? If I convert them to jpg, they read super fast. Sure, jpg are much lighter then exr, but still, the speed difference is ridiculous. And if I put the same exr in a UV quick shade, it also reads super fast. Why is it that inside a point vop context it gets so slow?
Technical Discussion » delete/dissolve polyline/edge in VEX?
- MathieuLeclaire
- 79 posts
- Offline
I think I understand. It really depends on the context. I have a primitive per polyline so a simple removeprim works in this case. If a primitive has multiple polylines, I need to create new primitives that won't contain the polyline I'm trying to remove.
I'm starting to wrap my head around this. If anyone has suggestions for documentation/tutorials on how to manage geometry in VEX, feel free to share and I'll look into it.
I'm starting to wrap my head around this. If anyone has suggestions for documentation/tutorials on how to manage geometry in VEX, feel free to share and I'll look into it.
Technical Discussion » delete/dissolve polyline/edge in VEX?
- MathieuLeclaire
- 79 posts
- Offline
Technical Discussion » Logging?
- MathieuLeclaire
- 79 posts
- Offline
When Houdini is evaluating (Cooking Op), there's messages that are being logged along with the time it takes in the bottom of the UI :
…is there a log that's being written somewhere?
I'm especially wondering if we can feed a log from Houdini Engine to our render manager to keep track of where our scene is taking lots of time or being jammed. We have some scenes that often locks up on our farm and we can't seem to be able to pinpoint what's going on and where it gets stuck. There must be a way to get more information on what Houdini is doing to help us find where it's jamming our render nodes?
…is there a log that's being written somewhere?
I'm especially wondering if we can feed a log from Houdini Engine to our render manager to keep track of where our scene is taking lots of time or being jammed. We have some scenes that often locks up on our farm and we can't seem to be able to pinpoint what's going on and where it gets stuck. There must be a way to get more information on what Houdini is doing to help us find where it's jamming our render nodes?
Technical Discussion » Scaling hair with character
- MathieuLeclaire
- 79 posts
- Offline
We crated hair for a character. The hair is groomed on a neutral pose and then deformed by an animation cache. The problem is, the character's scaling might be adjusted shot to shot by as much as 50%. When we read a cache where the character is scaled up, the hair length stays the same length as the grooming neutral pose and so looks too short and too thin for the shots where the character is scaled up. Right now, it seems like we have to play with the length, the thickness, the interpolation Influence, etc… it becomes a nightmare. Is there an easier way to scale everything up to stay relative to the animated scaling?
Technical Discussion » Groupcopy by name attribute
- MathieuLeclaire
- 79 posts
- Offline
Technical Discussion » Groupcopy by name attribute
- MathieuLeclaire
- 79 posts
- Offline
I figured it out:
For primitive groups, which is the only group type I care about anyways.
I'm still not sure I understand the nametoprim() function and it's usefulness though.
int pr = findattribval(1, "prim", "name", @name, 0); string groups[] = detailintrinsic(1, "primitivegroups"); foreach (string group; groups){ setprimgroup(0, group, @primnum, inprimgroup(1, group, pr), "set"); }
For primitive groups, which is the only group type I care about anyways.
I'm still not sure I understand the nametoprim() function and it's usefulness though.
Technical Discussion » Groupcopy by name attribute
- MathieuLeclaire
- 79 posts
- Offline
I won't necessarily know how many groups there will be. I'm guessing there's a way to get all groups and loop through them to recreate them on the current geometry?
I'm not sure I follow you on the nametoprim() function. How is that suppose to help?
I'm not sure I follow you on the nametoprim() function. How is that suppose to help?
Technical Discussion » Groupcopy by name attribute
- MathieuLeclaire
- 79 posts
- Offline
Hello,
We constantly have to transfer attributes and groups from one asset that comes from one Alembic to another asset that comes from another that have different hierarchies. We extract a @name from the @path attribute to match the pieces by name and then we can use foreach loops or attribcopy with a Match by Attribute by “name” activated to copy attributes from one mesh to another.
The groupcopy doesn't have a Match by Attribute by “name” option though.
Inside a compiled block, I created a foreach loop by name that uses a blast for the second input (fetch input) to isolate each piece by name and do a groupcopy piece by piece.
It works, I'm just wondering if that's the most efficient way to do this? Anybody has any better recommendation on how to handle this sort of scenario?
Thanks.
We constantly have to transfer attributes and groups from one asset that comes from one Alembic to another asset that comes from another that have different hierarchies. We extract a @name from the @path attribute to match the pieces by name and then we can use foreach loops or attribcopy with a Match by Attribute by “name” activated to copy attributes from one mesh to another.
The groupcopy doesn't have a Match by Attribute by “name” option though.
Inside a compiled block, I created a foreach loop by name that uses a blast for the second input (fetch input) to isolate each piece by name and do a groupcopy piece by piece.
It works, I'm just wondering if that's the most efficient way to do this? Anybody has any better recommendation on how to handle this sort of scenario?
Thanks.
-
- Quick Links