Found 37 posts.
Search results Show results as topic list.
Houdini Indie and Apprentice » New to Houdini Terrain
- Nicolas Longchamps
- 37 posts
- Offline
As asm said, terrains are 2D volume heightmaps, so no overlaps or cavities. Another option would be to extract the terrain area you wish to edit and create a VDB SDF volume from it. Then you can apply volume displacement which will allow the 3D displacement like in the image. For output you would need to convert to a mesh asset.
Houdini Indie and Apprentice » Viewport clipping plane
- Nicolas Longchamps
- 37 posts
- Offline
setting the near clipping plane to 0 didn't change anything.
No problems setting clipping planes on my end, without opening a new viewport. The message refers only to applying defaults. For such a large scene, you want to adjust the far clip and not the near clip. You probably want to set your near clip further also, as to maintain good Z precision.
Houdini Indie and Apprentice » Can a Parameter Interface Callback in one Node call a function in a Python Node passing KWARGS?
- Nicolas Longchamps
- 37 posts
- Offline
Not sure why you want to use a python node. If you want to centralize python code for general use across multiple nodes you should really just write an external python module [www.sidefx.com]. Put it in your environment under scripts/python ie:
C:\Users\<YOU>\Documents\houdini17.5\scripts\python
Then you can simply import it wherever you want to use it and use kwargs to pass info about who/what called your function.
C:\Users\<YOU>\Documents\houdini17.5\scripts\python
Then you can simply import it wherever you want to use it and use kwargs to pass info about who/what called your function.
Houdini Indie and Apprentice » Houdini 17 UV Layout problem
- Nicolas Longchamps
- 37 posts
- Offline
You need to set the udim int prim attribute so that the node knows where to pack the geometry. This attrib should hold a udim id like 1001,1002,1003,etc.
In overrides, activate “target attribute” and use your udim attrib. Then in “targets” set “pack into” to UDIM tiles.
In overrides, activate “target attribute” and use your udim attrib. Then in “targets” set “pack into” to UDIM tiles.
Houdini Indie and Apprentice » addpoint not adding points
- Nicolas Longchamps
- 37 posts
- Offline
One thing i caught in his video is right at the start; He says to “slide the point number to zero” but then sets it to 1 without saying it. This is important because the wrangle code in the solver runs over points, so if there is not at least one point, the wrangle will do nothing.
Houdini Indie and Apprentice » Moving line points with custom rule
- Nicolas Longchamps
- 37 posts
- Offline
If you want to do custom point deformations and manipulations, as a beginner you should look at VOP (vex operator) networks. Add a Point VOP node after your line node. Then dive into it and create your algorithm. This will run over each point in your line.
Houdini Indie and Apprentice » Can't Divide @numpt by @ptnum?
- Nicolas Longchamps
- 37 posts
- Offline
Yes like Andr says, you are dividing two integers and the result is a fraction. Since integers have no fractional part the result is truncated to 0. (If i remember correctly the dotted line in VOPs denotes an implicit type cast)
Houdini Indie and Apprentice » Animated Noise
- Nicolas Longchamps
- 37 posts
- Offline
In this case you could simply rotate the noise, given your object is circular.
Otherwise you could parameterize with uvs or another attribute and use that as the noise position and simply offset it.
Otherwise you could parameterize with uvs or another attribute and use that as the noise position and simply offset it.
Technical Discussion » PolyExtrude in VEX
- Nicolas Longchamps
- 37 posts
- Offline
Simple VEX inset. Run over prims.
Ideally you also interpolate point and vertex attributes on the inset points.
vector centerPoint = v@P ; int pts[] = primpoints(0,@elemnum); int newPTS[] = {}; //generate inset points foreach( int pt ; pts ) { vector pos = point(0,'P',pt); vector insetPos = lerp(pos,centerPoint,ch('inset')); int newPt = addpoint(0,insetPos); append(newPTS,newPt); } //inset prim int prCenter = addprim(0,'poly',newPTS); //contour prims for(int i=0; i<len(pts); i++) { int pr = addprim(0,'poly'); addvertex(0,pr,pts[i-1]); addvertex(0,pr,pts[i]); addvertex(0,pr,newPTS[i]); addvertex(0,pr,newPTS[i-1]); } //remove original prim removeprim(0,@elemnum,0);
Ideally you also interpolate point and vertex attributes on the inset points.
Technical Discussion » can someone explain why twisting happens over only z-axis?
- Nicolas Longchamps
- 37 posts
- Offline
Its difficult to understand what you are trying to do with the limited info, but i'm guessing you mean the copied lines aren't “straight”.
Both these setups are causing axis flipping if you move the point over a specific axis. This is because the copy node only has a normal direction to use to orient the copies. The side and up vectors dont have a reference. If you're just randomly scattering geo this usually isnt a problem, but when you need to align things perfectly you need to either supply reference directions or build your own transform or orient attributes so the copy node knows exactly how to align the copies.
See here:
http://www.sidefx.com/docs/houdini/copy/instanceattrs.html [www.sidefx.com]
You could try setting an up vector in the point wrangle before your copy sop.
ie v@up = {0,1,0};
The side vector would then be the cross product of N and up. So you will get axis flipping if N and up are aligned.
Both these setups are causing axis flipping if you move the point over a specific axis. This is because the copy node only has a normal direction to use to orient the copies. The side and up vectors dont have a reference. If you're just randomly scattering geo this usually isnt a problem, but when you need to align things perfectly you need to either supply reference directions or build your own transform or orient attributes so the copy node knows exactly how to align the copies.
See here:
http://www.sidefx.com/docs/houdini/copy/instanceattrs.html [www.sidefx.com]
You could try setting an up vector in the point wrangle before your copy sop.
ie v@up = {0,1,0};
The side vector would then be the cross product of N and up. So you will get axis flipping if N and up are aligned.
Houdini Indie and Apprentice » Polybevel on polyline?
- Nicolas Longchamps
- 37 posts
- Offline
Ran into this the other day. Polybevel seems sensitive to point/vertex ordering.
Your vertex order is different from your point order. Adding a sort node with sorting set to “by vertex order” will fix the issue. You can also fix the vertex order by changing how you wired them together in your “polyline_90_turn” wrangle. There you call addpoint in top-mid-bottom order, but then call addvertex in bottom-mid-top order.
Your vertex order is different from your point order. Adding a sort node with sorting set to “by vertex order” will fix the issue. You can also fix the vertex order by changing how you wired them together in your “polyline_90_turn” wrangle. There you call addpoint in top-mid-bottom order, but then call addvertex in bottom-mid-top order.
Houdini Indie and Apprentice » How can I 'distort' noise based on a curve?
- Nicolas Longchamps
- 37 posts
- Offline
This is because your points are moving, so the noise samples at a new position when you move them around. If you want your noise to “stick” to the surface when you move it around, you need a value on your points that doesn't change when you move them.
Rather than using @P, you could use UVs or a rest position.
http://www.sidefx.com/docs/houdini/nodes/sop/rest.html [www.sidefx.com]
Rather than using @P, you could use UVs or a rest position.
http://www.sidefx.com/docs/houdini/nodes/sop/rest.html [www.sidefx.com]
Houdini Indie and Apprentice » Retopology or Merge Copy Stamp object, possible?
- Nicolas Longchamps
- 37 posts
- Offline
Houdini Indie and Apprentice » Scattering Objects without Overlapping
- Nicolas Longchamps
- 37 posts
- Offline
Houdini Indie and Apprentice » Scattering Objects without Overlapping
- Nicolas Longchamps
- 37 posts
- Offline
One method I use is culling objects that overlap after scattering them. You can use the point's scale with pcopen to find overlaps. Its pretty quick. Careful that when comparing a point cloud with itself with pcopen, the closest point found will be itself. You could also use this method to push objects out instead of culling, since you could have the radius and relative pos of overlapping objects.
Another method (i haven't tried yet) is maybe using a grain solver to push objects apart based on their scale. Maybe not as fast and will require simulating.
Another method (i haven't tried yet) is maybe using a grain solver to push objects apart based on their scale. Maybe not as fast and will require simulating.
Houdini Indie and Apprentice » Vex - Generate @Cd threw intersecting with a mesh
- Nicolas Longchamps
- 37 posts
- Offline
Volumes would be great for this. It might be more efficient as you can control the sampling of the incoming geo and it should scale really well with geometric complexity.
Simply use a volume sample in a point VOP on the object you want colors on. Pipe in the volume and sample it at the point position.
Simply use a volume sample in a point VOP on the object you want colors on. Pipe in the volume and sample it at the point position.
Edited by Nicolas Longchamps - May 16, 2018 16:26:18
The Orbolt Smart 3D Asset Store » Python function 'node.children()'
- Nicolas Longchamps
- 37 posts
- Offline
All paths are absolute at the base. Relative paths are representations that are parsed by houdini to find the abs path of a node. They cant exist on their own and are meaningless without a relative point of origin.
use hou.node.relativePathTo(base_node) to get paths from one node to another.
In your case you can do this:
But given in this case you are simply getting the path from the parent, relative paths are not very useful here; pathToParent would return ‘..’ for every child node, which simply means “up one level”. pathToChild would simply return the name of the child node, because the parent is like the current directory.
If you do:
You should get the abs path of the parent node.
hou.node.children() will get nodes one level down. For all children, including chilren of children, i think you need to use hou.node.allSubChildren(). Relative path would be more useful in that case.
hope this helps
use hou.node.relativePathTo(base_node) to get paths from one node to another.
In your case you can do this:
chl = myNode.children() for child in chl: pathToParent = child.relativePathTo(myNode) pathToChild = myNode.relativePathTo(child)
But given in this case you are simply getting the path from the parent, relative paths are not very useful here; pathToParent would return ‘..’ for every child node, which simply means “up one level”. pathToChild would simply return the name of the child node, because the parent is like the current directory.
If you do:
child.node('..')
hou.node.children() will get nodes one level down. For all children, including chilren of children, i think you need to use hou.node.allSubChildren(). Relative path would be more useful in that case.
hope this helps
-
- Quick Links