Jump to content

konstantin magnus

Members
  • Content count

    943
  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won

    100

konstantin magnus last won the day on July 11

konstantin magnus had the most liked content!

Community Reputation

921 Excellent

About konstantin magnus

  • Rank
    Houdini Master

Contact Methods

  • Website URL
    https://odysee.com/@konstantinmagnus:5

Personal Information

  • Name
    Konstantin Magnus
  • Location
    Stuttgart, Germany

Recent Profile Visitors

9,944 profile views
  1. VDB Curvature Flow

    Thank you for sharing this! Is there any way on a volume to normalize and regularize curvature values between -1 and +1 ? place unique points on local minima and/or maxima?
  2. Converting VEX to OpenCL

    Here is another implementation of reaction-diffusion running across a mesh using OpenCL. reaction_diffusion_ocl.hiplc
  3. Deer Modeling in Houdini ! Is Procedural Possible ?

    It is. Just transfer a bunch of curves from tubes, grids and lines with pscale and velocity attributes into a volume. Reshape VDB will blend all shapes eventually. dinosaur.hiplc
  4. Ray marching in COPs

    Just found a great presentation on Ray Marching:
  5. Organic shape

    Another similar approach using deltamush, distances and polycuts. helmet2.hiplc
  6. Organic shape

    Hi Ezequiel, you could design these shapes with voronoi cells, too. shoe.hiplc
  7. Camera Offset X & Y

    I think it's called "screen window X/Y" in Houdini: https://www.sidefx.com/docs/houdini/nodes/obj/cam.html
  8. Bend paper effect?

    Thank you @Atom. Perhaps a simple modulo might just work, too. s@basecolor_texture = directory + paths[curvenum % len(paths)];
  9. Bend paper effect?

    Hi RTF, yes, Vellum might be a good choice. flipchart_vellum_2.hiplc
  10. Ray marching in COPs

    Thank you @animatrix. Currently expanding it into a constructive solid geometry (CSG) stack tool. It can even write to a 3d volume while it creates a really crisp rendering.
  11. what's the Geometry traversal's application in houdini?

    My favorite "traversal" adds primitive objects to points. Unfortunately there is very little types to choose from. // Choose random primitive types from list string types[] = {'sphere', 'circle', 'tube'}; int index = int(rand(i@ptnum) * len(types)); int prim_add = addprim(0, types[index], i@ptnum); // apply point orientation from polyframe node matrix3 xform = set(v@tangentv, v@N, v@tangentu); scale(xform, 0.05); setprimintrinsic(geoself(), "transform", prim_add, xform); add_prims.hipnc
  12. Ray marching in COPs

    A basic ray marching / sphere tracing renderer written in VEX inside COPs. Entirely based on a shader toy-tutorial by Martijn Steinrucken / @The_ArtOfCode: https://odysee.com/@TheArtOfCode:b/ray-marching-for-dummies:f // SCENE function float get_dist(vector pos){ vector pos_sphere = set(sin(TIME), 1.55, 6.0); float radius_sphere = 0.75; float dist_sphere = length(pos - pos_sphere) - radius_sphere; float height_plane = noise(pos * 2.75) * 0.2; float dist_plane = pos.y - height_plane; float dist_min = min(dist_sphere, dist_plane); return dist_min; } // TRACING function float raymarch(vector pos_cam, dir_cam){ float dist_orig = 0.0; float dist_srf = 1e-3; float dist_max = 1e1; int steps_max = 200; for(int i = 0; i < steps_max; i++){ vector pos = pos_cam + dir_cam * dist_orig; float dist_scene = get_dist(pos); dist_orig += dist_scene; if(dist_scene < dist_srf || dist_scene > dist_max){ break; } } return dist_orig; } // NORMALS function vector get_normal(vector pos){ vector offset = {0.01, 0.0, 0.0}; float dist = get_dist(pos); float dx = get_dist(pos - offset.xyy); float dy = get_dist(pos - offset.yxy); float dz = get_dist(pos - offset.yyx); vector nml = normalize(dist - set(dx, dy, dz)); return nml; } // LIGHTING function float get_light(vector pos){ vector pos_light = set(1.0, 4.0, 3.0); pos_light.x += sin(TIME*8); pos_light.z += cos(TIME*8); vector dir_light = normalize(pos_light - pos); vector nml_srf = get_normal(pos); float amount = max(dot(nml_srf, dir_light), 0.0); float dist = raymarch(pos + nml_srf * 1e-1, dir_light); if(dist < length(pos_light - pos)){ amount *= 0.2; } return amount; } // CANVAS float aspect = XRES / float(YRES); vector uvw = set(X - 0.5, (Y - 0.5) / aspect, 0.0); // CAMERA vector pos_cam = {0.0, 1.5, 0.0}; vector dir_cam = normalize(set(uvw.x, uvw.y, 1.0)); // PROCESS float dist_field = raymarch(pos_cam, dir_cam); vector pos_world = pos_cam + dir_cam * dist_field; float diffuse = get_light(pos_world); float mask_clip = dist_field < 55.0; // OUTPUT vector color = diffuse * mask_clip; assign(R, G, B, color); ray_marching.hipnc
  13. random rotarion added to the each Y axis

    Also the scatter and align-node has "rotating around normal" build in. rotate_around_axis.hipnc
  14. random rotarion added to the each Y axis

    Matt Estella wrote a great article on this: https://www.tokeru.com/cgwiki/index.php?title=JoyOfVex17#Combine_orients_with_qmultiply
  15. Cushion pattern

    Hi Antoine, maybe I'd rather come up with a clean input curve such as a mirrored zigzag-line: v@P.x += i@ptnum % 4 == 0; v@P.x -= i@ptnum % 4 == 2; zigzag.hipnc
×