Hello,
I have a box SOP with Primitive Type = points, which plugs into input 1 of group SOP, and a poly sphere which plugs into input 2. The group SOP has bounding enabled and Bounding Type = Bounding Object (points only), but it fails to put any of the bounded points in the specified group (it creates an empty group). When I put other geo types in input 1 - eg. a poly sphere - it works. Any idea how to fix this?
Thanks,
Jeremy.
Found 36 posts.
Search results Show results as topic list.
Technical Discussion » group sop: group points box by volume does not work
- emcjagger
- 36 posts
- Offline
Technical Discussion » Do rendered nurbs curves have t-coordinates?
- emcjagger
- 36 posts
- Offline
Technical Discussion » Do rendered nurbs curves have t-coordinates?
- emcjagger
- 36 posts
- Offline
Hello,
When you render nurbs curves in mantra, they have a s parametric coordinate, 0-1, going from the start to the end of the curve. However, the value of the t coordinate seems to always be 0. I believe in RenderMan, curves have a t-coordinate going from 0-1 across the width, handy for faking normals, among other things. Does such a thing exist in mantra?
Thanks,
Jeremy.
When you render nurbs curves in mantra, they have a s parametric coordinate, 0-1, going from the start to the end of the curve. However, the value of the t coordinate seems to always be 0. I believe in RenderMan, curves have a t-coordinate going from 0-1 across the width, handy for faking normals, among other things. Does such a thing exist in mantra?
Thanks,
Jeremy.
Houdini Lounge » Use math functions in lsystem rules?
- emcjagger
- 36 posts
- Offline
Hello,
I've noticed that some hscript math functions, such as rand(), work in lsystem rules, but others, such as pow() and smooth(), do not. Is there a way to make these particular functions work in lsystems, or to write your own functions to be used in lsystems, or a list of functions available in lsystems?
Thanks.
Jeremy.
I've noticed that some hscript math functions, such as rand(), work in lsystem rules, but others, such as pow() and smooth(), do not. Is there a way to make these particular functions work in lsystems, or to write your own functions to be used in lsystems, or a list of functions available in lsystems?
Thanks.
Jeremy.
Technical Discussion » Download HDK documentation?
- emcjagger
- 36 posts
- Offline
Hello,
Is it possible to download the HDK documentation? I'm trying to learn to use HDK and don't have consistent internet access.
Thanks,
Jeremy.
Is it possible to download the HDK documentation? I'm trying to learn to use HDK and don't have consistent internet access.
Thanks,
Jeremy.
Technical Discussion » Python: list outputs of a VOP.
- emcjagger
- 36 posts
- Offline
Hello,
I'm just starting out with python in general, and python in Houdini in particular.
We want to create a python function that will connect the outputs of one VOP node to the inputs of another if their names have the same suffix, and a specified prefix. So, this:
connectSameSuffix(“j_shadingModel1”, “out_”, “j_comp1”, “fg_”)
would result in this:
http://i.imgur.com/C9uuo.png [i.imgur.com]
(I couldn't upload this image for some reason.)
To achieve this, we want to list which parameters correspond to the output connectors of a VOP node, whether or not they are connected.
The closest I've been able to get is hou.node.outputConnectors, which returns a tuple of tuples of hou.NodeConnection objects, but these only exist where the outputs are connected, and even in that case, they appear to only show the index of the output, not the parameter.
Note that these nodes were created using “vcc -m” applied to a “surface” .vfl file, which I learned from this post:
http://www.sidefx.com/index.php?option=com_forum&Itemid=172&page=viewtopic&t=22075&highlight= [sidefx.com]
I'm not sure if this is the best way to write custom VOPs (and I haven't yet looked at the tutorials mentioned in that post).
Related questions: I created outputs for these nodes by specifying parms as “export”, but although it does make them into outputs, it also leaves them as inputs. Is there a way of preventing this? The “invisible” and “hidden” pragma hints don't work.
Much thanks,
Jeremy.
I'm just starting out with python in general, and python in Houdini in particular.
We want to create a python function that will connect the outputs of one VOP node to the inputs of another if their names have the same suffix, and a specified prefix. So, this:
connectSameSuffix(“j_shadingModel1”, “out_”, “j_comp1”, “fg_”)
would result in this:
http://i.imgur.com/C9uuo.png [i.imgur.com]
(I couldn't upload this image for some reason.)
To achieve this, we want to list which parameters correspond to the output connectors of a VOP node, whether or not they are connected.
The closest I've been able to get is hou.node.outputConnectors, which returns a tuple of tuples of hou.NodeConnection objects, but these only exist where the outputs are connected, and even in that case, they appear to only show the index of the output, not the parameter.
Note that these nodes were created using “vcc -m” applied to a “surface” .vfl file, which I learned from this post:
http://www.sidefx.com/index.php?option=com_forum&Itemid=172&page=viewtopic&t=22075&highlight= [sidefx.com]
I'm not sure if this is the best way to write custom VOPs (and I haven't yet looked at the tutorials mentioned in that post).
Related questions: I created outputs for these nodes by specifying parms as “export”, but although it does make them into outputs, it also leaves them as inputs. Is there a way of preventing this? The “invisible” and “hidden” pragma hints don't work.
Much thanks,
Jeremy.
Technical Discussion » Write a custom VOP node?
- emcjagger
- 36 posts
- Offline
Much thanks SYmek! Those tutorials look very promising, though I can't check them just now (no headphones). That cool trick with vcc -m should do me for now - even makes export parms into outputs, which is great!
Jeremy.
Jeremy.
Technical Discussion » Write a custom VOP node?
- emcjagger
- 36 posts
- Offline
Hello,
I'd like to be able to write my own custom vop node, ideally in VEX, much as one writes a custom shop or vop. Something like:
vop myFactorial (
int n = 3;
) {
int prod = 1;
int i;
for (i = 1; i <= n; i += 1) {
prod *= i;
}
ans = prod;
}
I see that vop is not a valid vex context. Is there any way to do this? Note that I know vop otls can be made from vop subnets, but I want to be able to WRITE, ie. code, a vop.
Thanks,
Jeremy.
I'd like to be able to write my own custom vop node, ideally in VEX, much as one writes a custom shop or vop. Something like:
vop myFactorial (
int n = 3;
) {
int prod = 1;
int i;
for (i = 1; i <= n; i += 1) {
prod *= i;
}
ans = prod;
}
I see that vop is not a valid vex context. Is there any way to do this? Note that I know vop otls can be made from vop subnets, but I want to be able to WRITE, ie. code, a vop.
Thanks,
Jeremy.
Technical Discussion » Secondary GI cache in mantra rop in Houdini 11
- emcjagger
- 36 posts
- Offline
Technical Discussion » Secondary GI cache in mantra rop in Houdini 11
- emcjagger
- 36 posts
- Offline
Hello,
I've been trying to setup diffuse secondary lighting / global illumination in Houdini 11, following the instructions in the “view-dependent photon maps” section here:
http://www.sidefx.com/docs/houdini11.0/rendering/pbr [sidefx.com]
It refers to “Primary GI Cache” and “Secondary GI Cache” parms in the Properties > PBR subtab of the mantra rop. Although I see these parms in Houdini 10, they appear to be removed in Houdini 11, nor are they in the “For Rendering” add-able parms in the Edit Parameter Interface window. Has this aspect of the the GI system changed for Houdini 11?
Thanks,
Jeremy.
I've been trying to setup diffuse secondary lighting / global illumination in Houdini 11, following the instructions in the “view-dependent photon maps” section here:
http://www.sidefx.com/docs/houdini11.0/rendering/pbr [sidefx.com]
It refers to “Primary GI Cache” and “Secondary GI Cache” parms in the Properties > PBR subtab of the mantra rop. Although I see these parms in Houdini 10, they appear to be removed in Houdini 11, nor are they in the “For Rendering” add-able parms in the Edit Parameter Interface window. Has this aspect of the the GI system changed for Houdini 11?
Thanks,
Jeremy.
Technical Discussion » Custom layered shader OTL with dynamic UI
- emcjagger
- 36 posts
- Offline
Thanks Edward, that is encouraging. I see that there are some dynamic UI types too, eg. “multiparm block” tabs, but I think we'll need something more elaborate than that. I've emailed sidefx support.
Jeremy.
Jeremy.
Technical Discussion » Custom layered shader OTL with dynamic UI
- emcjagger
- 36 posts
- Offline
Hello,
I want to build a layered shader OTL from a Surface Shader Builder. It would require both the contents and the UI of the OTL to be modified dynamically as the user adds and deletes (and possibly reorders) layers. It would work something like this:
Initially, the OTL would contain only an Add vop plugged into the Surface Color output, and the the UI would have only 2 buttons: AddDiff and AddSpec. Pressing AddDiff would add a proprietary CustomDiff vop to the otl and plug it into the Add vop, as well as adding a folder with controls for this node, which would control the node with channel referencing. There would also be a Delete button that would remove this node and the corresponding controls. Same thing for AddSpec.
Is having modifiable contents and UI consistent with the OTL paradigm? If not, is there another way of achieving this?
Much thanks,
Jeremy.
I want to build a layered shader OTL from a Surface Shader Builder. It would require both the contents and the UI of the OTL to be modified dynamically as the user adds and deletes (and possibly reorders) layers. It would work something like this:
Initially, the OTL would contain only an Add vop plugged into the Surface Color output, and the the UI would have only 2 buttons: AddDiff and AddSpec. Pressing AddDiff would add a proprietary CustomDiff vop to the otl and plug it into the Add vop, as well as adding a folder with controls for this node, which would control the node with channel referencing. There would also be a Delete button that would remove this node and the corresponding controls. Same thing for AddSpec.
Is having modifiable contents and UI consistent with the OTL paradigm? If not, is there another way of achieving this?
Much thanks,
Jeremy.
Technical Discussion » Apply fog only to some geometry?
- emcjagger
- 36 posts
- Offline
Hello,
I'm trying to apply a fog shader to only certain geometry. Is this possible? I created an atmosphere object and assigned a material to it with a fog shader, which works but it puts the fog effect on everything, which is not what I want.
I'm using this fog shader as a bit of a hack to effectively add another layer of surface shading to geo without altering the surface shader. Specifically, I'm trying to add impressionistic forests to a mountain. I'm using VEX Mountain shader for the mountain and a custom fog shader for the forest. I know this kind of layered shading can be done in VOPs or VEX, but I'm trying to add a layer of shading onto a precompiled surface shader without modifying the VEX code (too hard to asset-manage) or redoing it in VOPs. Anyone have any suggestions on how to do this?
Thanks in advance,
Jeremy.
I'm trying to apply a fog shader to only certain geometry. Is this possible? I created an atmosphere object and assigned a material to it with a fog shader, which works but it puts the fog effect on everything, which is not what I want.
I'm using this fog shader as a bit of a hack to effectively add another layer of surface shading to geo without altering the surface shader. Specifically, I'm trying to add impressionistic forests to a mountain. I'm using VEX Mountain shader for the mountain and a custom fog shader for the forest. I know this kind of layered shading can be done in VOPs or VEX, but I'm trying to add a layer of shading onto a precompiled surface shader without modifying the VEX code (too hard to asset-manage) or redoing it in VOPs. Anyone have any suggestions on how to do this?
Thanks in advance,
Jeremy.
Technical Discussion » UVs on polygons, xyzdist bug?
- emcjagger
- 36 posts
- Offline
Thanks for looking at this. Hmm… yes, a colleague of mine suggested using nurbs for this. I'm pretty committed to using polys for the initial 2 geometries (which will eventually not be just a sphere and plane), and I'm afraid that converting them to nurbs (and maybe back) will get messy, but maybe I can manage to just do the joining portion in nurbs, convert it back to polys, and merge it with the original geo.
I managed to get the effect I wanted with xyzdist()/primuv() stuff by using the ray sop. I extruded the grid hole upward so that that it encircles the tube, like a sleeve. I then used the ray sop to flare out the edge of the tube to make it touch this “sleeve”, and another ray sop to pull the edge back down to join the original grid geo. So I've gotten the grid hole and the severed tube edge to be as close to each other as I can – but of course, there are still cracks between these two surfaces, because their topology does not match.
So, my next challenge is:
-Subdivide the tube edge so that a new point is inserted for every point on the grid hole (see circled areas of attached pic).
-Make sure the tube edge points all lie precisely on the grid hole (they currently don't, see pic).
-“Fuse” the tube to the grid, so that all the points that join them belong to both geometries + there are no holes (even 0-area ones).
Any suggestions?
Thanks,
Jeremy.
ps. I'm still curious about how uvs work on polys, + whether there's anything amiss with xyzdist() and primuv()…
I managed to get the effect I wanted with xyzdist()/primuv() stuff by using the ray sop. I extruded the grid hole upward so that that it encircles the tube, like a sleeve. I then used the ray sop to flare out the edge of the tube to make it touch this “sleeve”, and another ray sop to pull the edge back down to join the original grid geo. So I've gotten the grid hole and the severed tube edge to be as close to each other as I can – but of course, there are still cracks between these two surfaces, because their topology does not match.
So, my next challenge is:
-Subdivide the tube edge so that a new point is inserted for every point on the grid hole (see circled areas of attached pic).
-Make sure the tube edge points all lie precisely on the grid hole (they currently don't, see pic).
-“Fuse” the tube to the grid, so that all the points that join them belong to both geometries + there are no holes (even 0-area ones).
Any suggestions?
Thanks,
Jeremy.
ps. I'm still curious about how uvs work on polys, + whether there's anything amiss with xyzdist() and primuv()…
Houdini Lounge » Make particles leave mark on texture.
- emcjagger
- 36 posts
- Offline
Aaaah, I see… well, that was very prompt, if disappointing. I wonder if there's any way to attach the pcloud info as attributes within the houdini network before the geo is sent of to mantra… maybe via cops… but I'll probably end up just baking the pointclouds to disk, which isn't so bad. Many thanks!
Jeremy.
Jeremy.
Houdini Lounge » Make particles leave mark on texture.
- emcjagger
- 36 posts
- Offline
Hi again,
I still can't get the op: syntax to work for pointclouds. I've tried the following with no luck:
oppath/to/sop
op/path/to/sop
op:path/to/sop
I've attached a shader that makes dots where points are in a pointcloud, and a hip that uses it. Instructions:
-Download + extract attached tarball.
-Open pCloudDemo.hipnc
-Install pCloudDemo.otl ( File > Install Digital Asset Library )
-Enter a path for the pcloud you will create in the “Output File” field of /obj/geo1/rop_geometry1, and click “Render” on that node.
-Render the view using the mantra1 output driver. You should get an image similar to the attached render. In this case the shader reads the pointcloud from the geo file.
-On /obj/geo1/switch1, set “Select Input” to 1. This causes the shader to read the pointcloud directly from the same sop that was used to bake the pointcloud file. Render again. This *should* create the same image, but if you're like me, it doesn't; there are no dots.
Any suggestions?
Thanks,
Jeremy.
I still can't get the op: syntax to work for pointclouds. I've tried the following with no luck:
oppath/to/sop
op/path/to/sop
op:path/to/sop
I've attached a shader that makes dots where points are in a pointcloud, and a hip that uses it. Instructions:
-Download + extract attached tarball.
-Open pCloudDemo.hipnc
-Install pCloudDemo.otl ( File > Install Digital Asset Library )
-Enter a path for the pcloud you will create in the “Output File” field of /obj/geo1/rop_geometry1, and click “Render” on that node.
-Render the view using the mantra1 output driver. You should get an image similar to the attached render. In this case the shader reads the pointcloud from the geo file.
-On /obj/geo1/switch1, set “Select Input” to 1. This causes the shader to read the pointcloud directly from the same sop that was used to bake the pointcloud file. Render again. This *should* create the same image, but if you're like me, it doesn't; there are no dots.
Any suggestions?
Thanks,
Jeremy.
Edited by - 2007年10月9日 12:50:53
Technical Discussion » UVs on polygons, xyzdist bug?
- emcjagger
- 36 posts
- Offline
Technical Discussion » UVs on polygons, xyzdist bug?
- emcjagger
- 36 posts
- Offline
Hello,
I have a poly tube that passes through a poly grid, and I'm trying to smoothly join the top of the tube to the outside of the grid and discard the rest. I've tried a number of approaches, including the cookie sop (funny help for that!), but currently the nicest solution seems to be: delete tube points under the grid, delete the grid points inside the tube, and then snap the edge points of the tube to the nearest prims of the grid. I tried to do this like so:
For each tube edge point:
Get the nearest grid prim number using pointdist().
Get the uv coords of the closest part of that prim using xyzdist().
Move the point to that part of that prim using primuv() and a Point SOP.
However, I encountered a couple problems. First of all, the u coordinate returned by xyzdist was often well above 1, and the v coordinate was always 0. This may be related to buggy behaviour of pointdist() with polygons reported here:
http://www.sidefx.com/index.php?option=com_forum&Itemid=172&page=viewtopic&t=9140&highlight=pointdist [sidefx.com]
Secondly, I found when I manually adjusted the uv coords used with primuv, changing v had no effect, but changing u from 0 to 1 caused the point to move all the way around the perimeter of the polygon. Is this the way polygon UVs work, ie. u is mapped around the perimeter and v does nothing? That would be fine by me, as long as there was some equivalent to xyzdist() that returned a corresponding value.
I've included a hipnc to illustrate this. It also contains a branch that snaps the tube edge to the nearest grid points instead of nearest prims, which works properly, although it results in a lot of fanned triangles. Any input most welcome, either about these specific xyzdist() and poly uv questions or about the more general problem of smoothly intersecting and joining polys.
Thanks,
Jeremy.
I have a poly tube that passes through a poly grid, and I'm trying to smoothly join the top of the tube to the outside of the grid and discard the rest. I've tried a number of approaches, including the cookie sop (funny help for that!), but currently the nicest solution seems to be: delete tube points under the grid, delete the grid points inside the tube, and then snap the edge points of the tube to the nearest prims of the grid. I tried to do this like so:
For each tube edge point:
Get the nearest grid prim number using pointdist().
Get the uv coords of the closest part of that prim using xyzdist().
Move the point to that part of that prim using primuv() and a Point SOP.
However, I encountered a couple problems. First of all, the u coordinate returned by xyzdist was often well above 1, and the v coordinate was always 0. This may be related to buggy behaviour of pointdist() with polygons reported here:
http://www.sidefx.com/index.php?option=com_forum&Itemid=172&page=viewtopic&t=9140&highlight=pointdist [sidefx.com]
Secondly, I found when I manually adjusted the uv coords used with primuv, changing v had no effect, but changing u from 0 to 1 caused the point to move all the way around the perimeter of the polygon. Is this the way polygon UVs work, ie. u is mapped around the perimeter and v does nothing? That would be fine by me, as long as there was some equivalent to xyzdist() that returned a corresponding value.
I've included a hipnc to illustrate this. It also contains a branch that snaps the tube edge to the nearest grid points instead of nearest prims, which works properly, although it results in a lot of fanned triangles. Any input most welcome, either about these specific xyzdist() and poly uv questions or about the more general problem of smoothly intersecting and joining polys.
Thanks,
Jeremy.
Houdini Lounge » Make particles leave mark on texture.
- emcjagger
- 36 posts
- Offline
Technical Discussion » No displacement bounds in geometry's render tab.
- emcjagger
- 36 posts
- Offline
Thanks for the input folks, prompt as always.
I found the hidden displacement bounds parm, but that didn't solve the problem (black cracks). No matter, I'll just use bump for now and let you know if I need more help.
Cheers,
Jeremy.
I found the hidden displacement bounds parm, but that didn't solve the problem (black cracks). No matter, I'll just use bump for now and let you know if I need more help.
Cheers,
Jeremy.
-
- Quick Links