Jump to content

konstantin magnus

Members
  • Posts

    1,165
  • Joined

  • Last visited

  • Days Won

    193

konstantin magnus last won the day on June 15

konstantin magnus had the most liked content!

Contact Methods

  • Website URL
    www.konstantinmagnus.de/

Personal Information

  • Name
    Konstantin Magnus
  • Location
    Germany

Recent Profile Visitors

22,309 profile views

konstantin magnus's Achievements

Collaborator

Collaborator (7/14)

  • Well Followed Rare
  • Conversation Starter Rare
  • First Post Rare
  • Posting Machine Rare
  • Collaborator Rare

Recent Badges

1.3k

Reputation

  1. Hi @GlennimusPrime, you could measure and over time remap the surface distance from the mask. attribute_spread_KM.hiplc
  2. This could be due to the internal order of the point group. try shuffling starting points by randomly picking a point number out of the array: int seed = chi('seed'); int pts[] = expandpointgroup(0, 'start'); int iter = detail(1, 'iteration', 0); int pick = pts[int(rand(iter, seed) * len(pts))]; i@group_boundary = i@ptnum == pick; infection_multiple_01.hip
  3. Put the relevant parts of the code inside a loop to offset the time and increment the mask number with each iteration. float speed = chf('speed'); int num = chi('infections'); float t = @Time * speed; int n = npointsgroup(0, 'start'); float mask_collect = 0.0; for(int k = 0; k < num; k++){ t += 1.0 / float(num); int i = floor(t); float u = frac(t); string att = 'dist_' + itoa(i+k%n); float dist = point(0, att, i@ptnum); float mask = chramp('shape', dist - u + 1.0); float fade = 1.0 - smooth(0.5, 1.0, u); mask_collect = max(mask_collect, mask * fade); } f@mask = mask_collect; infection_multiple.hip
  4. Hi @EdwinFumano, you could calculate a bunch of eikonal distances using attribute fill inside a for loop and remap them as animation: float speed = chf('speed'); float t = @Time * speed; int i = floor(t); float u = frac(t); int n = npointsgroup(0, 'start'); string att = 'dist_' + itoa(i%n); float dist = point(0, att, i@ptnum); float mask = chramp('shape', dist - u + 1.0); float fade = 1.0 - smooth(0.5, 1.0, u); f@mask = mask * fade; setdetailattrib(0, 'active_dist', att, 'set'); infection.hip
  5. Hi Jim, you could integrate text from Copernicus which is also a 2D voxel field. heightfield_text.hip
  6. The volume VOP has its own worley noise: https://www.sidefx.com/docs/houdini/nodes/vop/worleynoise.html
  7. The point relax-node tries to achieve this. https://www.sidefx.com/docs/houdini/nodes/sop/relax.html
  8. Hi Hunter, you would probably use the "orient along curve"-node instead, it also happens to offer rotations. However, if you want to do it in VEX you could try: float freq = chf('frequency'); float sc = chf('scale'); float u = vertexcurveparam(0, i@vtxnum); float amount = u * (1.0 / freq); matrix m = ident(); rotate(m, amount, v@N); scale(m, sc); v@P += v@up * m; od_spiral.hip
  9. .. or use the maximum height from two ray nodes. combining_two_patterns_KM.hipnc
  10. @Yors_Void Here is a version that copies a cylinder to a grid of triangles. hexagon_pyramid.hip
  11. Put this in a primitive wrangle: string img = chs('image'); vector bb = relbbox(0, v@P); vector uvw = set(bb.x, bb.y, 0.0); v@Cd = colormap(img, uvw);
  12. We could also scale and circularize a rectangular sweep: https://procegen.konstantinmagnus.de/quadrilateral-spheres tube_monitor.hip
  13. You can mix multiple cross sections with a multiparm block: https://procegen.konstantinmagnus.de/blending-multiple-cross-sections
  14. I've attached an example for mixing 2 cross sections using the sweep node. sweep_two_cross_sections.hip
×
×
  • Create New...