Jump to content

konstantin magnus

Members
  • Posts

    1,172
  • Joined

  • Last visited

  • Days Won

    198

konstantin magnus last won the day on September 30

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,963 profile views

konstantin magnus's Achievements

Collaborator

Collaborator (7/14)

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

Recent Badges

1.3k

Reputation

  1. https://procegen.konstantinmagnus.de/circuit-networks
  2. Or you use VEX to apply UV coordinates onto the roof: // VERTEX WRANGLE float s = ch('uv_scale'); vector up = {0,1,0}; vector nml = normalize(prim_normal(0, i@primnum, 0.0, 0.0)); vector tang = normalize(up - dot(nml, up) * nml); vector bitang = normalize(cross(-nml, tang)); vector pos_rel = v@P - prim(0, 'P', i@primnum); float u = dot(pos_rel, bitang); float v = dot(pos_rel, tang); v@uv = set(u, v, 0.0) * s; Align each polygon to the bottom left corner of the UV space: // VERTEX WRANGLE string geo = geounwrap(0, 'uv'); vector size = getbbox_min(geo, itoa(i@primnum)); v@uv -= size; roof.hip
  3. Hi @lacer8, you may want to look into @animatrix' setup here: https://www.sidefx.com/forum/topic/84345/#post-364636
  4. @millsy Check this to take it further: https://procegen.konstantinmagnus.de/wicker-basket
  5. Hi @millsy, maybe start with sweeps as they provide output attributes like primcol to later create patterns. straw_weave.hip
  6. Did you model these procedurally? If so, there are probably ways of assigning UVs while modeling and not after.
  7. It's usually best to create UVs on the fly and not just at the end. For this, you can use the sweep node for pretty much any building part and enable its UV outputs. Additionally other output attributes such as primrow and ptcol can be useful for selecting patterns next, ie. i@primcol%3==1
  8. Hi @GlennimusPrime, you could measure and over time remap the surface distance from the mask. attribute_spread_KM.hiplc
  9. 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
  10. 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
  11. 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
  12. Hi Jim, you could integrate text from Copernicus which is also a 2D voxel field. heightfield_text.hip
  13. The volume VOP has its own worley noise: https://www.sidefx.com/docs/houdini/nodes/vop/worleynoise.html
  14. The point relax-node tries to achieve this. https://www.sidefx.com/docs/houdini/nodes/sop/relax.html
  15. 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
×
×
  • Create New...