Jump to content

konstantin magnus

Members
  • Posts

    1,138
  • Joined

  • Last visited

  • Days Won

    169

konstantin magnus last won the day on April 13

konstantin magnus had the most liked content!

Contact Methods

  • Website URL
    www.konstantinmagnus.de/

Personal Information

  • Name
    Konstantin Magnus
  • Location
    Germany

Recent Profile Visitors

20,984 profile views

konstantin magnus's Achievements

Enthusiast

Enthusiast (6/14)

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

Recent Badges

1.3k

Reputation

  1. Hi @MadMax50, after the intersect node, fuse and attribute promote can create an array for grouping the intersecting geometry with VEX: int index[] = detail(1, 'index', 0); foreach(int i; index){ setpointgroup(0, 'in', i, 1, 'set'); } The best place for VEX related questions on odforce is probably the scripting section: https://forums.odforce.net/forum/28-scripting/ group_intersect.hipnc
  2. you could promote a group from polygons to edges. edge_group.hipnc
  3. Hi Tomek, you could use smooth minimum functions: https://www.shadertoy.com/view/DlVcW1 Article: https://iquilezles.org/articles/smin/ Here is an example for Houdini: float r = chf('radius'); function float smin(float a, b, k){ k *= 1.0/(1.0 - sqrt(0.5)); return max(k, min(a,b)) - length(max(k - set(a,b), 0.0)); } float dists[]; int pts[] = pcfind_radius(1, 'P', 'pscale', 1.0, v@P, 10.0, 2, dists); float d = smin(dists[0], dists[1], r); f@dist = d; metaball_2D.hipnc
  4. Hi Ajlan, you'd usually take a rig wrangle after a rig doctor: float u = vertexcurveparam(0, i@vtxnum); float amount = chramp('roll', u) - 0.5; rotate(4@localtransform, amount, {1,0,0}); roll_curve.hip
  5. Hi JD, append a primitive wrangle right after your merge1-node, that puts all primitive attributes into an array and checks if they match the name Color if their string is longer than 0, assign it to a variable named path and break out of the loop. string attribs[] = detailintrinsic(0,"primitiveattributes"); string path; foreach(string a; attribs){ if(match('*Color*', a)){ string path_n = prim(0, a, i@primnum); if(len(path_n)>0){ path = path_n; removeattrib(0, 'prim', a); break; } } } s@path = path; attribute_partial_name_example_KM.hipnc
  6. We've got a SQL input node in TOPs now: https://www.sidefx.com/docs/houdini/nodes/top/sqlinput.html
  7. Hi @jonidunno, you can project a mesh onto a plane using the planepointdistance-function with a grid on the second input: // PARAMETERS float in = chf('in'); float out = chf('out'); float off = chf('offset'); float soft = chf('soften'); // PLANE vector p; vector pos_pt = point(1, 'P', 0); vector nml = prim_normal(1, 0, vector(0.0)); float d = planepointdistance(pos_pt, nml, v@P, p); vector plane = p + normalize(nml) * off; // MASK vector dir = normalize(pos_pt - v@P); float angle = dot(dir, nml); float sdist = sign(angle) * d; float bias = smooth(-out, in, sdist); float mask = smooth(-soft, soft, sdist); vector pos = lerp(v@P, plane, bias); // OUTPUT f@mask = mask; v@P = pos; Later I might discuss the code a bit here: https://procegen.konstantinmagnus.de/pressing-meshes-against-a-plane pressing_plane.hipnc
  8. Hi Takuya, you could make him walk through a static point grid and only keep the points inside the mesh. voxelize_animation.hipnc
  9. Or simple use the mountain node on a mask. seams_mountain.hipnc
  10. Thank you @velk. I would use noise along the seams and fade it out based on the distance. @f1480187 once again contributed a great technique to orient noise towards curves:
  11. Try to measure (and blur) the distance to the boundary and remove points with little difference to their neighbor points. remove_tight_parts.hip
  12. Reversed surface normals go inwards to measure the inside occlusion of the mesh. Complementing the outside/ambient exposure (1.0 - exposure) would just remap the values.
  13. Hi karen, Store the nearest mesh point for each scatter point. Promote nearest point numbers to an array under detail. Group the mesh points that can be found inside the array. group_closest.hipnc
  14. Hi Antoine, there's a Convex decomposition-node that can do similar things. Otherwise you could create clusters based on reversed ambient occlusion. mesh_segmentation.hip
×
×
  • Create New...