Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


Everything posted by Aizatulin

  1. Keeping displacement using rest pos

    Hi, one option -> point deform: first input: deformed and displaced geometry second input: deformed non displaced geometry third input: rest geometry (rest node not necessary here)
  2. Intersect All VEX only works sometimes?

    Hi, not sure what you are trying to achieve, but if you want to detect the points with intersection rays, which are in the overlapping area, you can duplicate the geometry, add an offset to y and move each points slightly based on their point number in y-direction. Now you should be able to send a ray from the original point to y-direction with little offset from the starting point. here is a file intersect_all_overlap.hipnc
  3. Help with offsetting grid

    Hi, if you want to keep the border points in place, you can use the relbbox function. Here is file with some aspects from the given example. grid_point_xy_offset.hipnc
  4. Sidewalks - PathDeform?

    You can also try polyexpand2d (if not already done), but it is only working on planar curves (which is not a problem, since you can project your curves onto a plane and project them back after it, if the curves aren't too distorted). It is also working with intersections (Intersection Stitch can be used before ~ depending on cases). Once you have this you can use the input curves to calculate uv-coordinates.
  5. Sidewalks - PathDeform?

    Hi, if you want to use a path deformer, you can bevel each curve point circular. Unfortunetly there is no inbuild solution yet (afaik). Make sure, that the object width corresponds to the curve radius, the radius should be slighty bigger than the half width of the obejct. Here is an example using a path deformer and a round tool (VEX). path_deform_along_circular_beveled_path.hipnc
  6. Dual mesh to Voronoi mesh

    You can try to combinate some nodes like polyextrude, fuse, polyreduce and subdivide on a voronoi pattern. Here is a simple example ... voronoi_scales_simple.hipnc
  7. Help trying to model a bevelled needle

    Hi, you can use boolean with a big box for example and apply bevel on the abseams (if wanted). Here is an example needle.hipnc
  8. Hi, to get the uvs on different sides, you can create reference copies and transfer the uvs to the deformed geometry for example. Here is an example file (trying to recreate the effect in the video). All steps are quite straighforward and usually substitutable. My approach is using a reference object (sphere) and an influence object (cube) to assign attributes. The bending part is bit critical in performance. At the end I've used simple material to visualize the uv effect. rotate_copy_by_influence_uv.hipnc
  9. Sorting primitives

    Hi, for these kind of tasks you can use attributes, which can be stored in the geometry. The sort sop has the option "primitive sort" -> "by attribute". The result strongly depends on the attributes you set. In your case you can probably combine two attributes. The prim distance to the center prim (by point and not edge incidence) and the direction from the center. Here is an example using two different methods, to get the distance from the center (probably there are better ways), the other attribute uses the xyzdist() function to a circle. Once you have the attributes you can combine them by just adding them. Since the direction ist between 0 and 1, the distance attribute which is a count (0,1,2,...) will dominate. prim_sort_spiral.hipnc
  10. I think I'm fine with it anyway, because there are too many cases, where it is impossible to find a solution anyway.
  11. You don't need the rotation at all, if you are mapping the points directly on the curve. But keep in mind, that the distance between two points is usually different (smaller) compared to the length of the curve section between both points.
  12. "Simple" transforms are eluding me

    Hi, using your file: moving/rotating the triangle, that the midpoint of the longest line is in the center, extract the primitive centers of the grid, getting random values (0, 0.25, 0.5, 0.75) and multiplying them with 2*PI and construct a rotation matrix (convert it to quaternion attribute). triangle_grid_v4_mod.hipnc
  13. Copy stamp

    Another option can be the 3d skeleton extraction tool from labs. sample_skeleton_orientation.hipnc
  14. Here are some issues. In dihedral you are using x-aligned, but your line is z-aligned. The other thing is, that the points you are applying the matrix on, are getting more away from the center, when the point number increases, so you probably want to subtract the predecessor point(i-1) (if exists), before applying the rotation. ps: and yes primduv is getting the derivative (~tangent)
  15. Copy stamp

    Hi, if you have a guide curve, you can capture the orientation attribute from the curve. For the calculation of orientation (on the curve) you can use the "orientation along curve node" on a (resampled) curve. There are surely many other ways depending on the situation. copy_orientation.hipnc
  16. Hi @Petz, nice approach but I had no success to make it work the way as I understood the question. My goal was to to create a chain on a curve, where the start and the end point of each object should stay on the curve and the distance between the points should stay the same. I know that this is not possible for every case, but it will be interesting, if this will work without iteration. The result should be equivalent (as described) to intersections with a sphere around the starting point. The problem is how to find the right point. My aproach was to start with a guess (length of curve divided by the object length, where the difference between those point should be always smaller than the partial curve length). Get the ratio between the the object length and the distance between the points. If the ratio higher, the u-value is too small and vice versa. But this approach may not converge properly. Bisection method can be added aswell (once both sides have been detected), which always converges but it returns any solution. To visualize -> here is another example using straight lines objects_along_curve_connected_start_end_maintain_length.hipnc
  17. pscale size result different between VOP and VEX?

    The fit is different, if you replace the fit01 by //f@pscale = fit01(@age,min,max); // <- same result as fit(@age,0,1,min,max) f@pscale = fit(@age,min,max,0,1) in the Wrangle, the results should be the same.
  18. Hi, you can try to iterate. Start with a first try and find the u-value, where the length between the u-values matches the length of the vector. Here is some VEX Code. Peri is the length of the curve (you can use measure here). L is the length of the vector. u the position of P1. This will surely not work in every situation. But if you start with L / Peri, you have a first guess and probably length between the curve points is greater. So the next du should be a bit bigger. If the length are same, the du should not change anymore. float get_deltau(float u, L, Peri) { float du = L / Peri; int maxcount = 10; int count = 0; while (count < maxcount) { vector A = primuv(1, 'P', 0, u); vector B = primuv(1, 'P', 0, u + du); float delta_u = L / length(A - B) * du; du = delta_u; count += 1; } return du; } P.S. it will be better to add a stop condition in the function and also apply resample on the curve. If interested here is a modification of an older experimental file of my collection. objects_along_curveC.hipnc
  19. Polyextrude - transform extruded front - by attribute

    C is here the Center point (prim center), substracting it will the prim center to zero. M is an orientation matrix (rotation) constructed by the normal of the prim and the difference vector between the first and second point. It should represent the orientation of the primitive. Applying transpose(M) is the inverse of M, which makes the prim X,Y,Z aligned. Now we can perform our scale just on x and y. After scale we apply M and add C to transform the prim back to original position. P.S. M is not a rotation in this case (determinant(M) = -1 ~ reflection) but this does not matter.
  20. Polyextrude - transform extruded front - by attribute

    Hi, you can workaround it by using a reference prim for each point. After extrusion you can store the prim number as point attribute (limited to the extrusion group). Once you have the information you can rescale the points base on the primitives orientation. extrude_non_uniform_scale_ref.hipnc
  21. Split Curve Trail decay

    Hi, here is an example doing the split and shrink part by an array input. The base method is using a clip node in the background. The array represent the u-parameters on curve (which should be sorted ideally). If you want to use particles along the curve, you can probably capture them using xyzdist() and take the uv.x value to create an array. Haven't tried this yet but it should work. split_shrink_curve.hipnc
  22. Orbit or Twist Points Around a Curve

    Hi, you can use a path deformer on the input geometry for example and apply a volume wrangle to peform a rotation/scale on the density (using an orientation frame on the curve). tornado_path.hipnc
  23. Displace points along normal in VEX

    Hi, remove the second "@P" in the second line.
  24. Orbit or Twist Points Around a Curve

    Hi, you can capture by xyzdist() for example using an attribute wrangle and the curve as second input. The rotation matrix can be obtained from the curve's tangent. Basic Shape_mod.hipnc
  25. generate to fill up wire curves in tube meshes

    Hi, here is a Straight Skeleton approach (it seems to work fine even on remeshed geometry) ... tube_fill.hipnc