You can use smooth and turn off "constrained boundary" option. If you do, you can additionally set a constrained point group, which keeps the position. You probably want the "side points" with the sharp corners not in this group.
If you want to group procedurally and you have a grid like geometry, you can straighten it and use the relative (uv)positions to group the borders or you just manually group the points. If you don't want this group keep just keep it empty of course or turn it off (check attachment).
Found 480 posts.
Search results Show results as topic list.
Technical Discussion » Slide relax quad topology only?
- Aizatulin
- 480 posts
- Offline
Technical Discussion » how do I revolve using vex?(SOLVED)
- Aizatulin
- 480 posts
- Offline
Technical Discussion » scale bias for specific voronoi fracture cell points
- Aizatulin
- 480 posts
- Offline
I think it is quite hard here to get good results. I've done experiments by setting weights on each point, which is used as weight to influence the voronoi pattern. So the default weight should be 1 for every point, which should give you the standard voronoi pattern.
My first idea was to influence the distance by the weight. Just calculate the distance between every point and each target point and divide it by the weight. If every weight is 1 the result is equal, but if you set even one to something different, you will lose the convexity and the new pattern will look very different.
The same for the second idea, which is more a faked voronoi using booleans. For each cell and for each point pair you can apply a boolean by intersecting a half-space (giat cube), where one side is inside and the other is not. The plane psoition can be inluenced by the weight ratio for each point pair. The problem here is similar to the first idea, because you will lose the convexity and the pattern looks broken.
The third idea is influence each point based on the weight of the neighbours, where the neighbour can be defined, but I would take the adjacent cell for the original vornoi. This will give a voronoi pattern, but the neighbour cells are also inlfuenced. And it is hard to avoid this becauce the neighbour relation can change during the process.
I'm pretty sure there are many more approaches, but you can look into file if you want
My first idea was to influence the distance by the weight. Just calculate the distance between every point and each target point and divide it by the weight. If every weight is 1 the result is equal, but if you set even one to something different, you will lose the convexity and the new pattern will look very different.
The same for the second idea, which is more a faked voronoi using booleans. For each cell and for each point pair you can apply a boolean by intersecting a half-space (giat cube), where one side is inside and the other is not. The plane psoition can be inluenced by the weight ratio for each point pair. The problem here is similar to the first idea, because you will lose the convexity and the pattern looks broken.
The third idea is influence each point based on the weight of the neighbours, where the neighbour can be defined, but I would take the adjacent cell for the original vornoi. This will give a voronoi pattern, but the neighbour cells are also inlfuenced. And it is hard to avoid this becauce the neighbour relation can change during the process.
I'm pretty sure there are many more approaches, but you can look into file if you want
Technical Discussion » VEX - xyzdist on overlapping prims
- Aizatulin
- 480 posts
- Offline
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.
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.
Technical Discussion » Wire Deform Orientation
- Aizatulin
- 480 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
- 480 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
- 480 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
- 480 posts
- Offline
Technical Discussion » basic isometric mesh surfacing
- Aizatulin
- 480 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
- 480 posts
- Offline
Houdini Indie and Apprentice » How to make PolyBevel's tension of the roundness higher?
- Aizatulin
- 480 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 - Feb. 27, 2024 01:21:45
Houdini Indie and Apprentice » How to make PolyBevel's tension of the roundness higher?
- Aizatulin
- 480 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
- 480 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 - Feb. 13, 2024 10:49:48
Houdini Indie and Apprentice » Houdini smart extrude
- Aizatulin
- 480 posts
- Offline
Technical Discussion » Topology-aware attribute transfer (flood fill?)
- Aizatulin
- 480 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
- 480 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 - Feb. 2, 2024 02:57:49
Houdini Indie and Apprentice » how using a section of road make a curve road
- Aizatulin
- 480 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
- 480 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
- 480 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
- 480 posts
- Offline
try float cast on i@copynum (like float(i@copynum + 1) / n) and make sure, that copynum attribute exists.
-
- Quick Links