Found 131 posts.
Search results Show results as topic list.
Technical Discussion » Custom ui popup window
- Jikian
- 131 posts
- Offline
Technical Discussion » Vector To Float Mask
- Jikian
- 131 posts
- Offline
If this terrain is not created with Heightfields, one way to mask the river portion is to go into Top ortho view and draw a curve through the center of the river, then projecting it to the terrain, then use Heightfield Mask By Object. If your river's width changes over its length, you may want to Sweep the curve and use Apply Scale Along Curve to give you more control over the masked area.
Technical Discussion » Problems with Right-Clicking the Mouse
- Jikian
- 131 posts
- Offline
This sounds like a graphics issue. Could you check that you are using stable/recommended drivers for your graphics processors?
Technical Discussion » Unreal to Houdini Rotation issues
- Jikian
- 131 posts
- Offline
Is there a reason you cannot use Houdini Engine to send the data from H -> UE, then if necessary baking the result?
Technical Discussion » Packaging geos and files into one folder structure
- Jikian
- 131 posts
- Offline
Technical Discussion » How can I offest this....
- Jikian
- 131 posts
- Offline
Technical Discussion » Find Shortest path - clean branch hierarchy
- Jikian
- 131 posts
- Offline
One way you could attempt to map hierarchy is to measure the length of each full path, then sort by descending length. Run a For Loop over each path, starting from the longest. Have a second input (Fetch Input) in the loop, collecting all the paths with longer length than current.
Give the current-processed path a unique id prim attribute, as well as a per-point age attribute that increases with distance along path. You can then use Attribute Transfer from the second input to the current path. The id attribute tells you which path this path is a parent of, and the age attribute tells you at which point it starts to branch.
if(@length < prim(1, "length", 0)) removeprim(0, @primnum, 1);
Give the current-processed path a unique id prim attribute, as well as a per-point age attribute that increases with distance along path. You can then use Attribute Transfer from the second input to the current path. The id attribute tells you which path this path is a parent of, and the age attribute tells you at which point it starts to branch.
Technical Discussion » LABS AutoUVv question!
- Jikian
- 131 posts
- Offline
If your mesh is rectangular, you could always use the longest edge of the primitive to align U axis, and a roughly perpendicular edge for V.
Technical Discussion » Precise segment length resampling
- Jikian
- 131 posts
- Offline
On the Resample SOP you can disable "Even Last Segment Same Length", this will give you segments of the specified length. If your original curve's length is not an integer multiple of the specified length, this will cut off the last point. If you want to keep the last point (last edge is shorter than specified length), then also enable "Maintain Last Vertex".
Technical Discussion » How to extrapolate a curve?
- Jikian
- 131 posts
- Offline
Method 1: The points at either end of the curve take reference position from their adjacent point, then extrude in the same direction to extend the curve in 2 straight lines.
Method 2: Calculate change in curvature of multiple "previous" points, using dot product, then extrapolating extension points' position based on some function of that curvature (average, min, max, derivative, etc.)
Method 2: Calculate change in curvature of multiple "previous" points, using dot product, then extrapolating extension points' position based on some function of that curvature (average, min, max, derivative, etc.)
Technical Discussion » Python - node.path() - In documentation
- Jikian
- 131 posts
- Offline
The Python documentation for Houdini can be found here [www.sidefx.com]
Specifically, node.path() is a method from the Node class [www.sidefx.com], inherited from hou.NetworkMovableItem [www.sidefx.com]. This method gives the full path of the node.
I realize I didn't answer your question properly: Figuring out which method(s) to use can start with a little trial and error - you could try to search for something like "houdini node path in python", or "houdini node directory python", which will likely bring you to the hou.Node Python documentation page. Then, experimenting with the methods found on the page, you could test what inputs a method requires, and what data is output from them. In the case of node.path(), it outputs a string. If you have familiarity with Python, you can use other methods like split() to convert the string into a list of directories, e.g. /obj/geo1/box1 ->, so you can do things like searching for other nodes on the same level or checking that you're in the right subnetwork.
Specifically, node.path() is a method from the Node class [www.sidefx.com], inherited from hou.NetworkMovableItem [www.sidefx.com]. This method gives the full path of the node.
I realize I didn't answer your question properly: Figuring out which method(s) to use can start with a little trial and error - you could try to search for something like "houdini node path in python", or "houdini node directory python", which will likely bring you to the hou.Node Python documentation page. Then, experimenting with the methods found on the page, you could test what inputs a method requires, and what data is output from them. In the case of node.path(), it outputs a string. If you have familiarity with Python, you can use other methods like split() to convert the string into a list of directories, e.g. /obj/geo1/box1 ->
[obj, geo1, box1]
Edited by Jikian - April 10, 2022 15:48:48
Technical Discussion » Transform Reference - Bad Data Type
- Jikian
- 131 posts
- Offline
Instead of $SIZE, you can use the bbox() expression to get the bounds of another node, or use a Bounds SOP and extract the bounding information (if oriented bounds are required)
@grayback the recommended parameter drag direction is from the node you want to control, to the Type Properties of the parent node. This will automatically use relative path "../" which will work no matter the nesting depth of the parent node.
@grayback the recommended parameter drag direction is from the node you want to control, to the Type Properties of the parent node. This will automatically use relative path "../" which will work no matter the nesting depth of the parent node.
Technical Discussion » order of referencing objects
- Jikian
- 131 posts
- Offline
I forgot about the "Insert Before" function @tamte, ironic because I wrote a little bit of script to reorder multiparm blocks
Technical Discussion » order of referencing objects
- Jikian
- 131 posts
- Offline
If you mean the creation of Spare Parameters, you can edit their position/nesting using the Gear icon - Edit Parameter Interface. If the parameter is created inside a Multiparm Folder Block, then new blocks will always be created "last".
Technical Discussion » Nurbs surface operations? (booleans, fillets)
- Jikian
- 131 posts
- Offline
Some users have made NURBs tools for their own workflows, you can take a look at this thread [www.sidefx.com]
NURBs in Houdini otherwise has very basic functionality as Houdini is not built as a CAD tool.
NURBs in Houdini otherwise has very basic functionality as Houdini is not built as a CAD tool.
Technical Discussion » River stone wall
- Jikian
- 131 posts
- Offline
Technical Discussion » How to be efficient when working with many objects?
- Jikian
- 131 posts
- Offline
You can use the Pack node to efficiently compress geometry, especially if they are used repeatedly. Attach an Unpack node before your export node.
Technical Discussion » Using the Y attribute of bbox_size to drive Y size of box
- Jikian
- 131 posts
- Offline
If you're sticking to VEX and attributes, you can use the expression
Alternatively, you can use a Bounds SOP to get the bounds of your reference object, then use a Match Size to fit incoming geometry to those bounds.
prim(<path_to_wrangle>, "bbox_y", <primnum>) / bbox(0,D_YSIZE)
Alternatively, you can use a Bounds SOP to get the bounds of your reference object, then use a Match Size to fit incoming geometry to those bounds.
Technical Discussion » Using the Y attribute of bbox_size to drive Y size of box
- Jikian
- 131 posts
- Offline
bbox_size is a vector attribute, which is why you get 3 components for the xyz axes. If you only want the Y-component, then you can use bbox_size().y to retrieve its value as a single float.
Example:
f@bbox_y = getbbox_size(0).y;
The functions getbbox_min and getbbox_max also return vectors indicating the min/max xyz corner coordinates of the bounding cuboid.
Example:
f@bbox_y = getbbox_size(0).y;
The functions getbbox_min and getbbox_max also return vectors indicating the min/max xyz corner coordinates of the bounding cuboid.
Technical Discussion » MultiParm Block list - return the value within the list
- Jikian
- 131 posts
- Offline
Just add a Label parameter and include "#" in its name/label. In a multiparm folder, the # symbol will be replaced by the index of the multiparm block. Nested multiparms require multiple # symbols - the number of # you need correlates to nesting depth.
You can further extend the functionality of your multiparms by adding buttons to rearrange values [forums.odforce.net].
You can further extend the functionality of your multiparms by adding buttons to rearrange values [forums.odforce.net].
-
- Quick Links