Jump to content

konstantin magnus

  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


Everything posted by konstantin magnus

  1. Tommy the Statue and his Alien Friend

    Tommy got auto-rigged and turned into a drunk Alien. Sliceman's still confused about all this. dancing_skeleton.hiplc
  2. Procedural Holes - Video Tutorial

    How to procedurally punch scattered holes into a quad mesh using scatter and circle from edges-node.
  3. Maybe share a Houdini file, so people can potentially help you with this.
  4. Texture Bombing Tutorial

    Midnight recording on how to do a basic texture bombing shader: https://www.youtube.com/watch?v=sUkyHbSocUE texture_bombing_shader.hipnc
  5. Hi Michiel, the UV texture-node offers a 'perspective from camera'-projection. screen.hiplc
  6. the maximum value of an attribute

    Uniformly scaling an attribute so its maximum is 1.0: 1st point wrangle: setdetailattrib(0, 'height_max', f@height, "max"); 2nd point wrangle: f@height /= detail(0, 'height_max', 0);
  7. Hi Natiq, there is a trigonometry lesson by the same author: https://www.youtube.com/watch?v=gLOd_FFL58Y Also unity developer Freya Holmér explains maths for computer graphics. Part 3 is about trigonometry: https://www.youtube.com/watch?v=MOYiVLEnhrw&list=PLImQaTpSAdsD88wprTConznD1OY1EfK_V
  8. biological modelling methods

    Transferring curl noise curves into volumes along with displacements based on principal curvature is another way to shape organic sculptures. sculpture_2.hiplc
  9. I need some advice on the ripples of the ship.

    Hi @eunchae, @ssh has already implemented the Kelvin Wake pattern in Houdini:
  10. How to shape the points following a curve

    Hi Stefan, rename and remap the curveu to pscale. That way pointjitter can read it. points_curve_distr.hiplc
  11. Scale Smooth Strength

    The blur node supports weighting eg. coming from an attribute remap node. weight_blur.hiplc
  12. Ivy embrace / asphyxiate object?

    Hi @caskal, you could push curves in the opposite direction of the underlying surface normals and use them as a collider for a vellum simulation. asphyxiate.hiplc
  13. I need some advice on the ripples of the ship.

    Alternatively remap and average out directions and distances to points across a height field: float scale = chf('scale'); float range = chf('range'); float disps[] = {}; int pts[] = nearpoints(1, v@P, range * 4.0); foreach(int pt_near; pts){ vector pos = point(1, 'P', pt_near); vector nml = point(1, 'N', pt_near); float pscale = point(1, 'pscale', pt_near); vector dir = normalize(pos - v@P); float angle = fit11(dot(nml, dir), 0.0, 1.0); float dist = distance(pos, v@P); float shape = chramp('shape', angle); float dist_mod = dist * shape * pscale; float mask = 1.0 - smooth(0.0, range, dist); float wave = sin(dist_mod * 0.02); float height = 1.0 - chramp('height', angle); float disp = height * mask * scale * wave; append(disps, disp); } f@height = avg(disps); boat_waves_VEX.hiplc
  14. I need some advice on the ripples of the ship.

    Hi @eunchae, you could copy and transfer displaced grid rows into a height field: boat_waves.hiplc
  15. VDB Curvature Flow

    Hi @papsphilip, this would be the double cross product of the volume's gradient: vector grad = volumegradient(1, 0, v@P); vector perp = normalize(cross(grad, {0,1,0})); vector dir_y = normalize(cross(perp, grad)); volume_dir.hiplc
  16. intersection analysis

    Hey @Follyx, this is essentially a dart throwing algorithm. The switch node decides whether the current sphere or the empty null is merged based on the number of points of the intersection analysis node. if(npoints('../intersectionanalysis2')>0,1,0) If its just about avoiding spheres to collide (and not arbitrary meshes) you can also watch these tutorials: Fill with Non-Overlapping Packed Instances : https://www.youtube.com/watch?v=XJ7QJOZcLJk SOP Solver Tutorial - Dart throwing algorithm: https://www.youtube.com/watch?v=Y1UC3T9l15U
  17. Weathering texture tool

    Hey Paul, I had to save out the caustics texture map because Solaris did not update data live from COPs to LOPs. Set the gamma to 2.2 and save the image as a pic-file. After you have saved the image, just update the file path in stage/materiallibrary1/principledshader1 under "emission texture" and set the "tint intensity" to something like 4.
  18. Weathering texture tool

    Currently working on a from-scratch texturing procedure that simulates water running down surfaces. Models shamelessly taken from @animatrix course files. Starting with projected points, the curves run along a volume until they drop onto the next underlying surfaces using nested while loops. The watery effect is achieved in COPs where the texture is drawn based on measuring distance from texture positions to these curves. Alright, enough art, here comes the proof of dripping :
  19. Get random but connected points on a geometry

    Hi @cur10us, I think I would mainly use the surfacedist() function. First group a few target points: rand(@elemnum, chi('seed')) < chf('chance') Add noise to a custom position attribute: v@pos = v@P + noise(v@P * freq); Then measure the distance over the noised position attribute: int pt_close = -1; float dist = surfacedist(0, 'target', 'pos', i@ptnum, pt_close, 'edge'); And apply random ranges for each island. float range = fit01(rand(pt_close), 0.2, 0.4); i@group_island = dist < range; group_islands.hiplc
  20. Orient away from object

    Hi jon, this is how you could map distance and direction towards a surface into an orient attribute: float dist_min = chf('min_distance'); float dist_max = chf('max_distance'); float angle_max = chf('max_angle'); vector pos = minpos(1, v@P); float dist = distance(pos, v@P); vector dir = normalize(pos - v@P); float mask = 1.0 - smooth(dist_min, dist_max, dist); float angle = radians(angle_max) * mask; vector axis = normalize(cross(dir, v@N)); p@orient = quaternion(angle, axis); orient_away.hiplc
  21. Issue in using vdb segment by connectivity

    Hi @archz2, try to create an SDF and avoid causing it any harm inside the volume VOP. vdb segmentation problem_2.hiplc
  22. Create a illumination light on a tree in procedural?

    Hey Haya, you could shift (and sine wave) the surface distance based on the surface orientation: vector perp = normalize(cross(v@gradient, v@N)); perp *= dihedral(v@gradient, {0,1,0}); float angle = atan(perp.z, perp.x) / 2.0 + M_PI_2; f@wave = sin((f@dist + angle * shift) * freq); tree_lights_simple.hiplc
  23. Custom Raytracer in COPs

    I wrote a custom render engine in COPs today. While 'engine' is probably a bit far fetched, it's a little ray tracer experimentally supporting: Meshes with UV coordinates Shading on diffuse textures Multiple point lights (including color, intensity, size) Area shadows and light attenuation Ambient occlusion Specular highlights Reflections with varying roughness The snippet basically transforms the pixel canvas to the camera position and shoots rays around using VEX functions like intersect() and primuv(). The rendering process only takes a few seconds. I still have to figure the licensing fees, though COP_render.hipnc
  24. Set arrays of attribute values

    Hi Matteo, you will need these functions in this order: nuniqueval findattribvalcount findattribval
  25. A question about geometrical procedural deformation.

    Btw, would anyone know how to update a heightfield within a foreach-loop and feed it back to the next iteration? cash_pile_height.hiplc