Hi,
you can use xyzdist() with the optional group parameter as well looping over every prim. It is quite slow compared to the other methods but you will get the captured attributes for every primitive. The normal on the closest point (on the primitive) is parallel to the direction from the source point to its closest point.
Here is an example. If you have a cube and take the center, every primitive has the same distance to this center. And if you duplicate the cube this fact won't change, but now you have also overlapping primitives.
Found 477 posts.
Search results Show results as topic list.
Technical Discussion » VEX - xyzdist on overlapping prims
- Aizatulin
- 477 posts
- Offline
Technical Discussion » Wire Deform Orientation
- Aizatulin
- 477 posts
- Offline
I guess it is not working because the wire deform is not using the up vector (but only the tangent of the curve) and it doesn't matter if you have assigned an up vector on the curve.
A possible workaround can be creating a guide geometry (sweep the curve with ribbon transformed and not transformed) and use the point deformer instead.
A possible workaround can be creating a guide geometry (sweep the curve with ribbon transformed and not transformed) and use the point deformer instead.
Technical Discussion » Find geometry symmetrize plane
- Aizatulin
- 477 posts
- Offline
If your geometry is quite symmetric, you can calculate the covariance matrix from the points (which can be used for calculating an oriented bounding box), to get candidates for the plane. Once you have the box (or the eigenvectors of the matrix) you can check each plane, if it is a symmetrize plane. Problem is, if an object is not 100% symmetric you have to define some tolerances.
Here is a modification of an example (calculating an oriented bounding box) which uses the center and the normal of each face to count the number of symmetric points and take the face (normal) with the highest count. This example is more a first start and may fail some situations.
Here is a modification of an example (calculating an oriented bounding box) which uses the center and the normal of each face to count the number of symmetric points and take the face (normal) with the highest count. This example is more a first start and may fail some situations.
Technical Discussion » I need to extrude edge loop called "contour_01"
- Aizatulin
- 477 posts
- Offline
You can also use attribute transfer node to get normals from another geometry. But as juejuezi mentioned, in fact it can be any vector attribute and VEX has many advantages doing this (creating, manipulating etc ...).
Technical Discussion » I need to extrude edge loop called "contour_01"
- Aizatulin
- 477 posts
- Offline
Technical Discussion » basic isometric mesh surfacing
- Aizatulin
- 477 posts
- Offline
It looks like, that in your example the density value of the marching-cubes-grid is either zero or one. If you have a guide geometry, the inner points are candidates to be zero. It seems, that the number of neighbours, which are also inside the geometry has influence on this density value. There are 6 neighbours of a grid point (adding this to the point (+X, -X, +Y, -Y, +Z, -Z) scaled by the grid size). If there are 5 or more neighbours also inside the geo, the point itself should have zero density and one if not.
Here is an experimental file using Marching Cubes in VEX.
Here is an experimental file using Marching Cubes in VEX.
Houdini Indie and Apprentice » How to ramp and randomise a carve sop?
- Aizatulin
- 477 posts
- Offline
Houdini Indie and Apprentice » How to make PolyBevel's tension of the roundness higher?
- Aizatulin
- 477 posts
- Offline
You can workaround the flat grid problem by extruding it (it is not nice but is working). Regarding to the angle problem, I have no other idea at the moment than to map every angle onto a different scale factor (using a ramp or a there is probably a function). But I don't know how to apply different scale factors in one bevel node. Using a feedbackloop, where you set for each iteration a group for each single edge.
Here is another file
@edit: it seems that tangent (x -> tan(x)) is doing the job (check the other file)
Here is another file
@edit: it seems that tangent (x -> tan(x)) is doing the job (check the other file)
Edited by Aizatulin - 2024年2月27日 01:21:45
Houdini Indie and Apprentice » How to make PolyBevel's tension of the roundness higher?
- Aizatulin
- 477 posts
- Offline
You can use a second input of the bevel with a profile curve generating a superellipse by a parametric formula. It seems to give quite acceptable result, if you set convexity to zero and scale factor to 2.
Here is an example file
Here is an example file
Technical Discussion » Converting voxels to iso-surface polygons
- Aizatulin
- 477 posts
- Offline
As you have already described, if the voxels are too large, they are not able to determine between thin connections and no connections. If you only have this information, there is no chance to reconstruct a connectivity, because it is not even clear that a connection exists.
Edited by Aizatulin - 2024年2月13日 10:49:48
Houdini Indie and Apprentice » Houdini smart extrude
- Aizatulin
- 477 posts
- Offline
Technical Discussion » Topology-aware attribute transfer (flood fill?)
- Aizatulin
- 477 posts
- Offline
Here is a setup for the color attribute using neighbour information (ignoring black colors) taking the average of all neighbour colors.
Houdini Indie and Apprentice » how using a section of road make a curve road
- Aizatulin
- 477 posts
- Offline
Sure
In the example file the length in "resample1" is 24 (so probably you have already turned it down to something like 1 or less). If you look at your curve, it has now a higher point density and the points are not on a straight line and all points have quite smooth corners, which means, that the angle between tangents of neighbour points are small. This will affect the pathdeformer, because it is using tangents to transform the geometry to the path (very short explanation for sure).
In the example file the length in "resample1" is 24 (so probably you have already turned it down to something like 1 or less). If you look at your curve, it has now a higher point density and the points are not on a straight line and all points have quite smooth corners, which means, that the angle between tangents of neighbour points are small. This will affect the pathdeformer, because it is using tangents to transform the geometry to the path (very short explanation for sure).
Edited by Aizatulin - 2024年2月2日 02:57:49
Houdini Indie and Apprentice » how using a section of road make a curve road
- Aizatulin
- 477 posts
- Offline
The smoothness of the pathdeformer depends on the attributes of the curve. So probably you resample your curve (with subdivisions on) or with more points. Hard to say, maybe you can share your file.
Houdini Indie and Apprentice » how using a section of road make a curve road
- Aizatulin
- 477 posts
- Offline
You can also use the pathdeformer (if not already done). Just copy your segments along a straight line (z-axis) and resample your curve (like you have probably done already).
Technical Discussion » Find Shortest Path - How to make & use its adjacency array?
- Aizatulin
- 477 posts
- Offline
It is working the same way, if you use a cost array. If you want to avoid the path going uphill, set the weight very high, if the y-component of the neighbour point is greater than the y-component of the current point.
Technical Discussion » Transforming a lissajous curve along a given input curve
- Aizatulin
- 477 posts
- Offline
try float cast on i@copynum (like float(i@copynum + 1) / n) and make sure, that copynum attribute exists.
Technical Discussion » Transforming a lissajous curve along a given input curve
- Aizatulin
- 477 posts
- Offline
In your wrangle v@P.z is always zero. Maybe you set v@P.z to @curveu and make sure, that the path deformer has forward direction Z.
Technical Discussion » Transforming a lissajous curve along a given input curve
- Aizatulin
- 477 posts
- Offline
Houdini Indie and Apprentice » Adding a directed Path Cost to Find ShortestPath SOP
- Aizatulin
- 477 posts
- Offline
Here are some ideas:
Each primitive should exactly contain 2 points (start and end). Replace each primtive by two (new) primitives, where both have opposite directions. Now calculate the angle between each primtive direction (endpoint - startpoint) and the given direction. Based on this calculation value, you can set an angle based primitive cost (using a ramp for example). After this remove the "expensive" paths.
Each primitive should exactly contain 2 points (start and end). Replace each primtive by two (new) primitives, where both have opposite directions. Now calculate the angle between each primtive direction (endpoint - startpoint) and the given direction. Based on this calculation value, you can set an angle based primitive cost (using a ramp for example). After this remove the "expensive" paths.
Edited by Aizatulin - 2024年1月16日 10:40:29
-
- Quick Links