Jump to content


Popular Content

Showing most liked content since 06/26/2021 in all areas

  1. 16 points
    How to guide the shortest path node on tetrahedra using noise and surface distance. guide_shortest_path.hiplc
  2. 12 points
    There are so many nice example files on this website that I am often searching for. I wanted to use this page as a link page to other posts that I find useful, hopefully you will too. This list was started years ago, so some of the solutions may be dated. Displaced UV Mapped Tubes Particles Break Fracture Glue Bonds Render Colorized Smoke With OpenGL Rop Moon DEM Data Creates Model Python Script Make A Belly Bounce Helicopter Dust Effect Conform Design To Surface Benjamin Button Intro Sequence UV Style Mapping UV Box and Multiple Projection Styles Ping Pong Frame Expression Instance vs. Copy (Instance Is Faster) Particle Bug Swarm Over Vertical and Horizontal Geometry Rolling Cube Rounded Plexus Style Effect Pyro Smoke UpRes Smoke Trails From Debris Align Object Along Path Fading Trail From Moving Point Swiss Cheese VDB To Polygons Get Rid Of Mushroom Shape In Pyro Sim A Tornado Ball Of Yarn Particles Erode Surface Unroll Paper Burrow Under Brick Road Non Overlapping Copies Build Wall Brick-By-Brick FLIP Fluid Thin Sheets Smoke Colored Like Image Volumetric Spotlight Moving Geometry Using VEX Matt's Galaxy Diego's Vortex Cloud Loopable Flag In Wind Eetu's Lab <--Must See! Wolverine's Claws (Fracture By Impact) Houdini To Clarisse OBJ Exporter Skrinkwrap One Mesh Over Another Differential Growth Over Surface Blazing Fast OpenCL Smoke Solver [PYTHON]Post Process OBJ Re-Write Upon Export Rolling Clouds Ramen Noodles Basic Fracture Extrude Match Primitive Number To Point Number Grains Activate In Chunks Fracture Wooden Planks Merge Two Geometry Via Modulus Fill Font With Fluid DNA Over Model Surface VDB Morph From One Shape To Another Bend Font Along Curve Ripple Obstacle Across 3D Surface Arnold Style Light Blocker Sphere Dripping Water (cool) Exploded View Via Name Attribute VEX Get Obj Matrix Parts eetu's inflate cloth Ice Grows Over Fire Flying Bird As Particles DEM Image To Modeled Terrain Pyro Temperature Ignition Extrude Like Blender's Bevel Profile Particles Flock To And Around Obstacles BVH Carnegie Mellon Mocap Tweaker (python script) Rolling FLIP Cube Crowd Agents Follow Paths Keep Particles On Deforming Surface Particle Beam Effect Bendy Mograph Text Font Flay Technique Curly Abstract Geometry Melt Based Upon Temperature Large Ship FLIP Wake (geo driven velocity pumps) Create Holes In Geo At Point Locations Cloth Blown Apart By Wind Cloth Based Paper Confetti Denim Stitching For Fonts Model A Raspberry Crumple Piece Of Paper Instanced Forest Floor Scene FLIP pushes FEM Object Animated Crack Colorize Maya nParticles inside an Alembic Path Grows Inside Shape Steam Train Smoke From Chimney Using Buoyancy Field On RBDs In FLIP Fluid Fracture Along A Path COP Based Comet Trail eetu's Raidal FLIP Pump Drip Down Sides A Simple Tornado Point Cloud Dual Colored Smoke Grenades Particles Generate Pyro Fuel Stick RBDs To Transforming Object Convert Noise To Lines Cloth Weighs Down Wire (with snap back) Create Up Vector For Twisting Curve (i.e. loop-d-loop) VDB Gowth Effect Space Colonization Zombie L-System Vine Growth Over Trunk FLIP Fluid Erosion Of GEO Surface Vein Growth And Space Colonization Force Only Affects Particle Inside Masked Area Water Ball External Velocity Field Changes POP particle direction Bullet-Help Small Pieces Come To A Stop Lightning Around Object Effect Lightning Lies Upon Surface Of Object Fracture Reveals Object Inside Nike Triangle Shoe Effect Smoke Upres Example Julien's 2011 Volcano Rolling Pyroclastic FLIP Fluid Shape Morph (with overshoot) Object Moves Through Snow Or Mud Scene As Python Code Ramp Scale Over Time Tiggered By Effector Lattice Deforms Volume Continuous Geometric Trail Gas Enforce Boundary Mantra 2D And 3D Velocity Pass Monte Carlo Scatter Fill A Shape Crowd Seek Goal Then Stop A Bunch Of Worms Potential Field Lines Around Postive and Negative Charges Earthquake Wall Fracture Instance Animated Geometry (multiple techniques) Flip Fluid Attracted To Geometry Shape Wrap Geo Like Wrap3 Polywire or Curve Taper Number Of Points From Second Input (VEX) Bullet Custom Deformable Metal Constraint Torn Paper Edge Deflate Cube Rotate, Orient and Alignment Examples 3D Lines From 2D Image (designy) Make Curves In VEX Avalanche Smoke Effect Instant Meshes (Auto-Retopo) Duplicate Objects With VEX Polywire Lightning VEX Rotate Instances Along Curved Geometry Dual Wind RBD Leaf Blowing Automatic UV Cubic Projection (works on most shapes) RBD Scatter Over Deforming Person Mesh FLIP Through Outer Barrier To Inner Collider (collision weights) [REDSHIFT] Ground Cover Instancing Setup [REDSHIFT] Volumetric Image Based Spotlight [REDSHIFT] VEX/VOP Noise Attribute Planet [REDSHIFT] Blood Cell Blood Vessel Blood Stream [REDSHIFT] Light Volume By Material Emission Only [REDSHIFT] Python Script Images As Planes (works for Mantra Too!) [REDSHIFT] MTL To Redshift Material [REDSHIFT] Access CHOPs In Volume Material [REDSHIFT] Mesh Light Inherits Color [REDSHIFT] Color Smoke [REDSHIFT] FBX Import Helper [REDSHIFT] Terrain Instancer Height Field By Feature Dragon Smashes Complex Fractured House (wood, bricks, plaster) Controlling Animated Instances Road Through Height Field Based Terrain Tire Tread Creator For Wheels Make A Cloth Card/Sheet Follow A NULL Eye Veins Material Matt Explains Orientation Along A Curve Mesh Based Maelstrom Vortex Spiral Emit Multiple FEM Objects Over Time Pushing FEM With Pyro Spiral Motion For Wrangle Emit Dynamic Strands Pop Grains Slope, Peak and Flat Groups For Terrains Install Carnegie Mellon University BVH Mocap Into MocapBiped1 Ramp Based Taper Line Fast Velocity Smoke Emitter Flip Fill Cup Ice Cubes Float [PYTHON]Export Houdini Particles To Blender .bphys Cache Format [PYTHON] OP UNHIDE ALL (opunhide) Collision Deform Without Solver or Simulation Mograph Lines Around Geometry Waffle Cornetto Ice Cream Cone Ice Cream Cone Top Unroll Road Or Carpet Burning Fuse Ignites Fuel or Painted Fuel Ignition Painted Fuel Combustion Small Dent Impact Deformation Particle Impact Erosion or Denting Of A Surface Helicopter Landing Smoke And Particles Radial Fracture Pieces Explode Outwards Along Normal Tangent Based Rocket Launch Rolling Smoke Field Tear/Rip FLIP (H12 still works in H16) Rain Flows Over Surface Rains Water Drip Surface Splash Smoke Solver Tips & Tricks Folding Smoke Sim VEX Generated Curve For Curling Hair Copy and Align One Shape Or Object To The Primitives Of Another Object (cool setup) A Better Pop Follow Curve Setup FEM Sea Cucumber Moves Through Barrier Fracture Cloth Smoke Confinement Setup Merge multiple .OBJ directly Into A Python Node Blood In Water Smoke Dissipates When Near Collision Object Whirlpool Mesh Surface Whirlpool Velocity Motion For FLIP Simple Bacteria Single Point Falling Dust Stream Flames Flow Outside Windows Gas Blend Density Example Localized Pyro Drag (smoke comes to a stop) Granular Sheet Ripping Post Process An Export (Post Write ROP Event) Corridor Ice Spread or Growth Set Velocity On Pieces When Glue Bonds Break Water Drops Along Surface Condensation Bottle Grains Snow or Wet Sand Starter Scene A Nice Little Dissolver Turn An Image Into Smoke Fading Ripples Grid Example Stranger Things Wall Effect Face Through Rubber Wall [PYTHON]Create Nurbs Hull Shelf Tool [PYTHON] Ramp Parameter [PYTHON] On Copy OF HDA or Node Select Outside Points Of Mesh, Honor Interior Holes Sparks Along Fuse With Smoke Umbrella Rig Melt FLIP UVs Tire Burn Out Smoke Sim Flip or Pyro Voxel Estimate Expression Motorcycle or Dirt Bike Kicks Up Sand Particles Push Points Out Of A Volume [PYTHON]Cellular Automata Cave Generator Punch Dent Impact Ripple Wrinkle VEX Rotate Packed Primitive Via Intrinsic Kohuei Nakama's Effect FLIP Fluid Inside Moving Container Particles Avoid Metaball Forces FLIP Divergence Setup FLIP Transfer Color Through Simulation To Surface Morph Between Two Static Shapes As Pyro Emits Constraint Based Car Suspension Pyro Smoke Gas Disturbs Velocity Wire Solver Random Size Self Colliding Cables Fast Cheap Simple Collision Deform CHOP Based Wobble For Animated Character Slow Motion FLIP Whaitewater Avoid Stepping In Fast Pyro Emission Fast Car Tires Smoke FLIP Fluid Fills Object Epic Share Of Softbody/Grain Setups (Must see!) Balloon, Pizza, Sail, Upres Shirt, Paint Brush Create Pop Grain Geometry On-The-Fly In A DOPs Solver Varying Length Trails VEX Based Geometry Transform Determine Volume Minimum and Maximum Values Grain Upres Example Animated pintoanimation For Cloth Sims Batch Render Folder Of OBJ files Vellum Weaving Cloth Fibers Knitting Kaleidoscopic Geometry UV Image Map To Points Or Hair Color Particles Like Trapcode Particular Flat Tank Boat Track With Whitewater Orthographic Angle Font Shadow Select Every Other Primitive or Face? Printer Spits Out Roll Of Paper Unroll Paper, Map, Plans, Scroll Simple Vellum L-System Plant Basic Cancer Cell 2D Vellum Solution Vellum Animated Zero Out Stiffness To Emulate Collapse Whitewater On Pre Deformed Wave [PYTHON] Menu Callback Change Node Color Extruded Voronoi With Scale Effector Multi Material RBD Building Fracture House Collapse Spin Vellum Cloth Whirlpool Vortex Trippy Organic Line Bend Design Logo Based Domino Layout Delete Outer Fracture Pieces, Keeping Inside Pieces UV Mapped Displaced Along Length Curly Curves Slow Particle Image Advection Nebula Saw Through VDB Like Butter Fuel Based Rocket Launch With Smoke Fuel Based Rocket Launch With Smoke [upres] Deform Pyro Along Path Bend Pyro Gas Repeat Solver With RBD Collision Raining Fuel Fire Bomb City Video Tutorial Pyro Cluster Setup (Animated Moving Fuel Source) [PYTHON] Mantra .MTL File Reader (creates new materials) Pyro Dampen By Distance FLIP Fluid Sweeps Away Crowd Ragdoll Gas Repeat Solver X-Men Mystique Feather Effect Camera Frustum Geometry Culling Vellum Extrude Shape Into Cloth Wire Web Constraint Setup Pyro Smoke Font Dissolve "Up In Smoke" Helicopter Landing With Vellum Grass and Dust or Smoke Another Thin Sheet Fluid Setup Color Rain Drops Over Surface Dual Smoke Object Wand Battle Custom GasDisturb node (easy to use) Hair Driven Grass Example File Pyro Smoke With Masked Turbulence Align High Resolution Mesh With Low Resolution RBD Simulation Streaky Portal Effect Height From Luma Cracking Glass Dome, Fracture VEX Noise Types FLIP Waterwheel Fracture Brick Wall Using UVs Vellum Stacked Torn Membranes Terrain Topographical Line Curves Prepare RBD Fracture For Unreal Alembic Export Growing Ivy Solver Fix For Intermittent FLIP Surfacing Issue Extensive RBD Fracturing Thread With HIP Files Peter Quint's Pop Streams Particle Example Fracture Geometry To Release Flip Fluid Inside Procedurally Reverse Normals Vellum Culling Voronoi Shape To Shape Transition Animated Scattering Accessing Parametric UVs On A Surface Organic Hallways/Corridors Through A Mesh Smoke Particle Dissolve Along One Axis Expanding Vellum Rings That Collide With One Another Read, Fetch, or Get SOP Attribute Inside Of DOPS Broad Splash When Object Enters Water Blendshape Crowd Example [PYTHON] Replace Packed Intrinsic Geometry From Another Source Rip/Tear Part Of Paper To Reveal And Roll Up After Effects Text Styles Cabling Mesh Surface Hanging Wires Or Cables Use Python Inside a Font Sop Brand Accurate Textures Using Karma XPU hScript asCode Microscopic Hair USD Attribute Equivalents For Preview Shader (i.e. Cd mangle) Vellum Peel Effect Tutorial HIP Library Use Google To Discover Attached HIP Files Useful Websites: Tokeru Houdini Houdini Vex Houdini Python Houdini Blueprints FX Thinking Rich Lord HIP Files iHoudini Qiita Ryoji Toadstorm Blog Eetu's HIP Of The Day Video Tutorials: Peter Quint Rohan Dalvi Ben Watts Design Yancy Lindquist Contained Liquids Moving Fem Thing Dent By Rigid Bodies Animating Font Profiles Swirly Trails Over Surface http://forums.odforce.net/topic/24861-atoms-video-tutorials/ http://forums.odforce.net/topic/17105-short-and-sweet-op-centric-lessons/page-5#entry127846 Entagma Johhny Farmfield Vimeo SideFX Go Procedural
  3. 9 points
    Another variant using some more recent nodes. 00_patchwork.hiplc
  4. 8 points
    If you've worked through a tutorial and want to share your HIP file with the community, post it here! I completed one where Mikael Pettersen demonstrates how to create a Blendshape crowd agent. ap_mp_blendshape_crowd_character_052120.hiplc
  5. 8 points
    Not long ago I was tasked with a simulation of bags of hard candy falling and splitting open on the floor, with the candy of various shapes and sizes spilling out. This turned out to be way harder then I thought. There is really no built in way for vellum and bullet dynamics to interact with each other in Houdini. After searching the internet, I did find one tutorial on kind of faking the interaction, but it seemed overly complicated to me. So after a bit of R&D I came up with this setup. Its very simple and fast, and solves both the vellum and bullet sims in one network at the same time: It basically works by importing the RBD geo into the vellum collision solver, and the vellum geo into the bullet solver. The mass of the RBD has to be faked in somewhat, so it interacts with the cloth in a more realistic way, but that's it! See hip for example: vellum_x_bullet.hip
  6. 8 points
    Hey friends, Had a fellow 3d person stop by my youtube channel where I mostly sculpt random Zbrush stuff and ask for this model to be donated to the Houdini community: Which I think is a brilliant idea as I dabble with Houdini myself and love it. So here you go, have fun, would love to see some awesome things created with my humble sculpt Use it for whatever, personal, commercial. A link back to me/my channel always massively appreciated, but no obligations. Cheers! EoL PS hope this is the right section of forum to post this, apologies if not. xportPigHead_v01.fbx xportPigHead_v01.obj
  7. 8 points
  8. 8 points
    A simple mycelium growth simulation that works in 2D and 3D: It constantly adds points to the outer edge of point clouds (1) and favours doing so towards food (2). 1: Direction away from surrounding points: float radius = chf('radius'); int pts_max = chi('max_points'); int handle = pcopen(0, 'P', v@P, radius, pts_max); vector pos_avg = pcfilter(handle, 'P'); vector dir_avg = v@P - pos_avg; v@N = dir_avg; 2: Weighting probabilities and adding points: int pt_near = nearpoint(1, v@P); vector pos_near = point(1, 'P', pt_near); float prox = distance(v@P, pos_near); float weight_prox = fit(prox, prox_min, prox_max, 0.0, 1.0); float weight_rim = fit(length(v@N), rim_min, rim_max, 1.0, 0.0); float weight = dens * (weight_rim + weight_prox); if(nrandom('mersenne') > weight){ vector pos_add = v@P + normalize(v@N) * offset; int pt_add = addpoint(0, pos_add); addprim(0, 'polyline', i@ptnum, pt_add); } mycelium.hiplc
  9. 8 points
    I just worked my way through Dave's whirlwind tutorial on how to get better creasing out of vellum. ap_ds_vellum_advanced_crumple_wrinkle_101421.hiplc
  10. 8 points
    Transferring curl noise curves into volumes along with displacements based on principal curvature is another way to shape organic sculptures. sculpture_2.hiplc
  11. 8 points
    Evenly spaced curves from surface distance: 3D straight skeletons from connecting curves centroids: iso_curves.hipnc
  12. 7 points
    Hi guys, I'd like to share my latest personal r&d project of creating procedural assets. Still work in progress. Cheers, Shawn
  13. 7 points
    Hey everyone, A new stable version of MOPs, v1.5, is now available. This encompasses a broad range of new features and bugfixes introduced since v1.4 last May. You can view the whole changelog and download the release here: https://github.com/toadstorm/MOPS/releases If you're new to MOPs and don't know what it's about, check out the Houdini HIVE presentation on MOPs from May 2020: Thanks to everyone who's helped out by submitting bugs, suggesting features, and of course buying MOPs+.
  14. 7 points
    Here is a slighty extended example for space colonization mostly based on Entagma's tutorial: https://www.youtube.com/watch?v=XtYkMnM-szY space_colonization.hiplc
  15. 6 points
    Hi @bentraje, you could map the surface curvature to the height field. The erosion of the landscape can then be transferred back for displacement. https://procegen.konstantinmagnus.de/height-field-erosion-on-meshes
  16. 6 points
    Thank you so much! I've quickly turned it into an HDA. pig.hdalc
  17. 6 points
    New VEX functions in Houdini 19 BSDFs chiang Returns a chiang BSDF. Crowds agentcollisionlayers Returns the names of an agent primitive’s collision layers. agentcurrentlayers Returns the names of an agent primitive’s current layers. setagentcollisionlayers Sets the collision layers of an agent primitive. setagentcurrentlayers Sets the current display layers of an agent primitive. Noise & Randomness mx_cellnoise MaterialX compatible cellnoise mx_perlin MaterialX compatible Perlin noise Strings decodeutf8 Decodes a UTF8 string into a series of codepoints. encodeutf8 Encodes a UTF8 string from a series of codepoints. replace Replaces occurrences of a substring. replace_match Replaces the matched string pattern with another pattern. USD usd_flattenediprimvar Reads the value of a flattened primvar directly from the USD primitive or from USD primitive’s ancestor. usd_flattenediprimvarelement Reads an element value of a flattened array primvar directly from the USD primitive or from its ancestor. usd_iprimvar Reads the value of a primvar directly from the USD primitive or from USD primitive’s ancestor. usd_iprimvarelement Reads the value of an element from the array primvar directly from the USD primitive or from USD primitive’s ancestor. usd_iprimvarelementsize Returns the element size of the primvar directly from the USD primitive or from USD primitive’s ancestor. usd_iprimvarindices Returns the index array of an indexed primvar directly on the USD primitive or on USD primitive’s ancestor. usd_iprimvarinterpolation Returns the element size of the primvar directly on the USD primitive or on USD primitive’s ancestor. usd_iprimvarlen Returns the length of the array primvar directly on the USD primitive or on USD primitive’s ancestor. usd_iprimvarnames Returns the names of the primvars available directly on the given USD primitive or on USD primitive’s ancestor. usd_iprimvarsize Returns the tuple size of the primvar directly on the USD primitive or on USD primitive’s ancestor. usd_iprimvartimesamples Returns the time codes at which the primvar values are authored directly on the given primitive or on its ancestor. usd_iprimvartypename Returns the name of the primvar type found on the given primitive or its ancestor. usd_isabstract Checks if the primitive is abstract. usd_isarrayiprimvar Checks if there is an array primvar directly on the USD primitive or on USD primitive’s ancestor. usd_isindexediprimvar Checks if there is an indexed primvar directly on the USD primitive or on USD primitive’s ancestor. usd_isiprimvar Checks if the primitive or its ancestor has a primvar of the given name. usd_ismodel Checks if the primitive is a model. usd_makevalidprimname Forces a string to conform to the rules for naming USD primitives. usd_makevalidprimpath Forces a string to conform to the rules for paths to USD primitives. usd_setvisibility Configures the primitive to be visible, invisible, or to inherit visibility from the parent. usd_specifier Returns the primitive’s specifier. Volume volumecubicsample Samples the volume primitive’s value. Values between voxels are evaluated with tri-cubic interpolation. volumecubicsamplev Samples the volume primitive’s value. Values between voxels are evaluated with tri-cubic interpolation. volumesmoothsample Samples the volume primitive’s value. Values between voxels are evaluated with smooth interpolation. volumesmoothsamplev Samples the volume primitive’s value. Values between voxels are evaluated with smooth interpolation.
  18. 6 points
    How to procedurally punch scattered holes into a quad mesh using scatter and circle from edges-node.
  19. 6 points
    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
  20. 6 points
    Some of your settings are bit strange, maybe you want to use them like that not sure. But i did some cleanup and tweaks to your initial tank, to use narrowband and adaptive solve to make it faster so you can push more details. broad_splash_02.hip
  21. 6 points
    Ok, I think I finished this. If anyone is interested, the hip file is available below. I hope it could be instructive for beginners. I added leaves, they can have a general motion (breeze), and you can add another wind based on the tree motion (length of averaged velocity). I discovered that Bone Deform is way faster than Point Deform (it was realtime for this tree), but Point Deform is more accurate. My setup includes both, I use Bone Deform for previewing, you can just switch. The wire sim is realtime as well, and cooking everything with leaves and with little branches was around 3 fps on my shy laptop without any pre-caching. (I think it's not that bad.) Actually the leaves part could be better, for example right now leaves don't orient themselfs according to the direction of the wind... so some controlling features like this still would be nice to have. Well, feel free to improve it I would say, theoreatically this setup should work with any tree, bush, plant, etc. created by the Labs Tree tools. The hipfile includes some notes as well, I tried to explain why am I doing what I'm doing. Also, I started an attempt to create a non-simulated tree motion, what I saw in nirfse3D's videos about his Simple Tree Tools. Not really impressive right now... I have no idea how he did it, this approach is getting really slow with more branches Anyway. Best wishes! tree_16.hiplc
  22. 5 points
    I decided to take another look at an old tool I made to increase the functionality of the polyexpand2d sop. Main differences, it's compiled and compilable so it should be faster and more robust. It also generates uvs. Input a curve and a profile curve and you'll get clean, complex geometry that would be impossible with a sweep. The basic gist of how it works is that it's running a PolyExpand2D in a loop for each point in your profile curve. PixelNinja__polyExpand3d__2_0.hdalc
  23. 5 points
    I combined the Entagma flip melting tutorial with Sadjad Rabiee's fluid morph to produce this wax melting combination. I have added additional controls (check tooltips) to the popwrangle inside the DOPNetwork for better control over the "flow" of the simulation. I also added in the flatten flip surface nodes once the surface becomes too thin. This offers a more natural look as the fluid spreads out. You may receive a font error if you don't have "Candara Bold" installed on your system. Simply chose another font in the black/bold style (non-serif works best) ap_ntag_font_melt_FLIP.hiplc
  24. 5 points
    A simple way to render outlines right in SOPs. outlines.hiplc
  25. 5 points
    Finally found some time to paint some textures. I try to keep it "cute". it's why skin bump is light. I even like it without any bump. This gives it a slightly cartoonish look. My renders are done with redshift, but in the file it's a (pretty close) Mantra version. hop you like it :). textures geo and hip file attached. Pighead_eol_paint.hiplc geo tex.zip
  26. 5 points
    I worked my way through Edmond's tutorial on how to allow flip droplet particles to escape their boundary. The nodes modified inside of the unlocked HDAs are marked in RED. ap_flip_droplets_escape_021622.hiplc
  27. 5 points
    I'm not a sim person, apologies etc... but this might give you some ideas. Smoke sims will always go soft over time. Instead I'd look at the footage and go 'it looks like worms of volume travelling over a surface, with some volume traily stuff'. So thats what I've tried here; make some lines, run them through pops so they scoot over the surface with some noise. Then rasterise those into pyro sources, and have them continually emit as they travel; the leading edge will be sharp, and you can control how the trailing edge behaves; shoudl it dissipate quickly, have some upwards billow, all that. The end result is... well, not great, but its easily tweakable, which is always the key for sim work; lots of fast iterations can beat a big slow sim. snow_me.hip
  28. 5 points
    Shortens edges and line segments by an inset distance. Optionally takes the point scale attribute into account. The shortening distance can be limited to a rest length. konstantin_shorten.hdalc
  29. 5 points
    @himedo6979 You can use growth solver also that you can find here and using this file with some Artistic tweaking you can make some Nice shapes (play with multiple metaballs, try diff noise in Bounds and that comp Vex) ..Have Fun..endless possibility I think. I like Those stuffs ,Houdini its A Fabric for everything you can make anything ..Sky its a Limit Houdini 18.0.530 TattooooOdforce.hiplc
  30. 5 points
    Sphere HDA with more regular quads: Left: Normalized box with dense corner regions. Right: More regular quad mesh (see code below). // Turns unit size box into sphere // Source: http://mathproofs.blogspot.com/2005/07/mapping-cube-to-sphere.html vector pos = v@P * 2.0; float x2 = pos.x * pos.x; float y2 = pos.y * pos.y; float z2 = pos.z * pos.z; float x = pos.x * sqrt(1.0 - (y2 + z2) / 2.0 + (y2 * z2) / 3.0); float y = pos.y * sqrt(1.0 - (z2 + x2) / 2.0 + (z2 * x2) / 3.0); float z = pos.z * sqrt(1.0 - (x2 + y2) / 2.0 + (x2 * y2) / 3.0); pos = set(x, y, z); v@P = pos; konstantin.quad_sphere.1.0.hdalc
  31. 5 points
    Particle based RBDs ap_egj_particles_to_rbd_101421.hiplc
  32. 5 points
    Overlay network editor would be nice to have built-in in H19 or 20 I have been using it for more than 2 years in production, so the video I initially uploaded is severely outdated. Will update once H19 is released.
  33. 5 points
    Sorta dodging your question really, but I found you can cheat this by getting 3 samples ($F, $F-0.5, $F-1) and feeding them to a sequence blend shape with cubic interpolation enabled. interpolate_transforms_via_blendshape.hiplc
  34. 5 points
    Hello everyone! My friend Antoine Jaspar and myself are super thrilled to show you our last project we did together during our free time! It’s a big explosion happening in a rocky desert type of environment, inspired by the massive explosion scene in Rogue One. For this shot, I was in charge of every aspect of 3D (FX, Lighting, Modeling, Shading, Assets Layout, etc) and Antoine carried the rest brilliantly (Comp, Color Grading, DMP, etc). Everything is rendered with Mantra. Hope you’ll enjoy the breakdown (sound ON highly advised) ! C&C welcome! Vimeo : https://vimeo.com/588889551 Artstation : https://www.artstation.com/artwork/KrlYwo
  35. 5 points
    Here is another implementation of reaction-diffusion running across a mesh using OpenCL. reaction_diffusion_ocl.hiplc
  36. 5 points
    Hi Ezequiel, you could design these shapes with voronoi cells, too. shoe.hiplc
  37. 5 points
    Hi, I did few rnd for distribute simulation and you can do distribute simulation on single workstation, for example if you have 64core you can split 2-4slices sometihng like 32core or 16core per slice. But you need to have a lot of memory here are some stats and tests - http:// https://vimeo.com/380432448 In your case 14 core with 64GB of ram, is not good option for single workstation distribute simulation. Also simulating on linux can be a lot better then on windows, also simuilating something with flip is more of optimization to solve problem then actual brtue force. You can see what Pixomondo did on Midway https://www.youtube.com/watch?v=kJ8Hz2Bjejc&t=10962s
  38. 4 points
    Ola Peoples! I'm just gonna post my adventure regarding and learning more about organic form and modeling. Have fun , and I hope that someone can help with tips and other Trix in Vex or just enjoying this Topic. Starting model, it's Lily - L-system. Reading ON GROWTH AND FORM BY D’ARCY WENTWORTH THOMPSON Cambridge: at the University Press 1917. This is not for professionally CG artists only for Hobbyist-sss
  39. 4 points
    You can achieve this by writing this sort of code inside a Primitive Wrangle: string cam = chs("cam"); float near = 0; float far = -0.01; vector pnear = fromNDC ( cam, set ( 0.5, 0.5, near ) ); vector pfar = fromNDC ( cam, set ( 0.5, 0.5, far ) ); vector dir = -normalize ( pfar - pnear ); vector n = normalize ( primuv ( 0, "N", @primnum, 0.5 ) ); if ( dot ( n, dir ) < ch("threshold") ) i@group_fresnel = 1;
  40. 4 points
    Hi! I just wanted to share my tree and plant modeling toolkit Simple Tree Tools. Its available on Gumroad for both Indie and FX users and contains 18 HDAs specifically aimed at trees and plants modeling in Houdini. I hope you guys like it as much as I do! Heres a video of some of the new features in this release. Let me know what you think! Cheers Nisse
  41. 4 points
    This nice model could definitely not be left without texture. There is two model with UVs. The first (PigHead_v01c_UVs Conformes.obj) is "original asset material compatible", as you can see it's really far to be perfect. In addition to the visible seams, the bucolic look is a bit lost. But it's not really the point, the second model (PigHead_v01c_UVs.bgeo.sc) has clean uvs, also not perfect, but at least no overlaping or stretching, and ready to paint. The next step haha. I attached also a hip file with the UV network. Pighead UVs.rar Pig_EyesOfLamia.hiplc
  42. 4 points
    I see some activity have Fun @Mexxgen..now if you combine and make some experiments sky its limit CellAnimation077.hiplc voronoi.hiplc
  43. 4 points
    Playing around with emulating some of the per-character animations that you can generate using expression in After Effects. This example is pretty much a direct lift from motionscript.com with the Javascript converted to VEX. Here are a few variations on the post processing of the Javascript scale. BBOX derived: Direct Y-axis manipulation: ap_AE_javascript_font_110421.hiplc
  44. 4 points
    Hi Doanh, I don't remember and I'm not even on FB anymore. I used to get anxious and stressed out there seeing moronic poeple posting opinions and fake news about everything so I just left and nowadays I feel a bit happier.
  45. 4 points
    @konstantin magnus When you are calling the function on the button, use -1 or 1 to swap up/down (technically you can swap with a value that's at any offset but for practical reasons...) #SwapValues(kwargs, hou.ParmTemplate.name a, hou.ParmTemplate.name b) def SwapValues(kwargs, a, b): #a, b are parameter names (not labels) node = kwargs["node"] pA = node.parm(a) pB = node.parm(b) if len(pA.keyframes()) == 0: #if both params have no keyframes if len(pB.keyframes()) == 0: valueSelf = pA.rawValue() valueOther = pB.rawValue() pA.set(valueOther) pB.set(valueSelf) #if A has no keyframes but B does else: valueSelf = pA.rawValue() valueOther = pB.keyframes() pA.setKeyframes(valueOther) pB.deleteAllKeyframes() pB.set(valueSelf) else: #if A has keyframes but B doesn't if len(pB.keyframes()) == 0: valueSelf = pA.keyframes() valueOther = pB.rawValue() pA.deleteAllKeyframes() pA.set(valueOther) pB.setKeyframes(valueSelf) #if both params have keyframes else: valueSelf = pA.keyframes() valueOther = pB.keyframes() pA.deleteAllKeyframes() pB.deleteAllKeyframes() pA.setKeyframes(valueOther) pB.setKeyframes(valueSelf) #GetParamNames(kwargs, hou.parmTemplate mpBlock, int index, int swapIndex, int nestingDepth) def GetParamNames(kwargs, mpBlock, index, swapIndex, nestingDepth): node = kwargs["node"] for i in range(len(mpBlock)): #If the current parameter is of a valid type, check if it has channels if mpBlock[i].type() == hou.parmTemplateType.Int or mpBlock[i].type() == hou.parmTemplateType.Float or mpBlock[i].type() == hou.parmTemplateType.String or mpBlock[i].type() == hou.parmTemplateType.Toggle: #note that vector channels are suffixed after multiparm index - "vector_#x" instead of "vector_x#" if mpBlock[i].numComponents() > 1: for c in range(mpBlock[i].numComponents()): if mpBlock[i].namingScheme() == hou.parmNamingScheme.XYZW: if c == 0: vComponent = "x" elif c == 1: vComponent = "y" elif c == 2: vComponent = "z" elif c == 3: vComponent = "w" elif mpBlock[i].namingScheme() == hou.parmNamingScheme.RGBA: if c == 0: vComponent = "r" elif c == 1: vComponent = "g" elif c == 2: vComponent = "b" elif c == 3: vComponent = "a" elif mpBlock[i].namingScheme() == hou.parmNamingScheme.UVW: if c == 0: vComponent = "u" elif c == 1: vComponent = "v" elif c == 2: vComponent = "w" pName = mpBlock[i].name().replace("#","%s") % index + vComponent pOthrName = mpBlock[i].name().replace("#","%s") % (index+swapIndex) + vComponent SwapValues(kwargs, pName, pOthrName) else: pName = mpBlock[i].name().replace("#","%s") % index pOthrName = mpBlock[i].name().replace("#","%s") % (index+swapIndex) SwapValues(kwargs, pName, pOthrName) #if a folder is found, determine if it's a nested multiparm elif mpBlock[i].type() == hou.parmTemplateType.Folder: #if it is, compare the number of instances in each multiparm if mpBlock[i].folderType() == hou.folderType.MultiparmBlock: getNMP = mpBlock[i].name().replace("#","%s") % index getOthrNMP = mpBlock[i].name().replace("#","%s") % (index+swapIndex) nmpInstances = node.parm(getNMP).evalAsInt() nmpOthrInstances = node.parm(getOthrNMP).evalAsInt() #If both multiparms have the same number of instances, swap nested parameter values if nmpInstances == nmpOthrInstances: for j in range(nmpInstances): pA = node.parm(getNMP).parmTemplate().parmTemplates()[j-1].name().replace("#","%s") % (index, j+1) pB = node.parm(getOthrNMP).parmTemplate().parmTemplates()[j-1].name().replace("#","%s") % (index+swapIndex, j+1) SwapValues(kwargs, pA, pB) #Otherwise, save values to a temporary holder else: tempA = list() tempB = list() for j in range(nmpInstances): nestedParm = node.parm(getNMP).parmTemplate().parmTemplates()[j-1].name().replace("#","%s") % (index, j+1) if len(node.parm(nestedParm).keyframes()) > 0: tempA.append(node.parm(nestedParm).keyframes()) else: tempA.append(node.parm(nestedParm).rawValue()) for j in range(nmpOthrInstances): nestedParm = node.parm(getOthrNMP).parmTemplate().parmTemplates()[j-1].name().replace("#","%s") % (index+swapIndex, j+1) if len(node.parm(nestedParm).keyframes()) > 0: tempB.append(node.parm(nestedParm).keyframes()) else: tempB.append(node.parm(nestedParm).rawValue()) #initialize number of multiparm blocks SwapValues(kwargs, getNMP, getOthrNMP) #and update each block from the temporary holders for k in range(nmpOthrInstances): pA = node.parm(getNMP).parmTemplate().parmTemplates()[k-1].name().replace("#","%s") % (index, k+1) node.parm(pA).deleteAllKeyframes() try: node.parm(pA).set(tempB[k]) except: node.parm(pA).setKeyframes(tempB[k]) for k in range(nmpInstances): pB = node.parm(getOthrNMP).parmTemplate().parmTemplates()[k-1].name().replace("#","%s") % (index+swapIndex, k+1) node.parm(pB).deleteAllKeyframes() try: node.parm(pB).set(tempA[k]) except: node.parm(pB).setKeyframes(tempA[k]) #if it's not a multiparm, dive inside and swap each nested parameter else: GetParamNames(kwargs, mpBlock[i].parmTemplates(), index, swapIndex, 0) #Swap(kwargs, int targetSwapIndex) def Swap(kwargs,targetSwapIndex): node = kwargs["node"] button = kwargs["parm"] #Shorthand to access the index of a multiparm index = int(kwargs["script_multiparm_index"]) #Raise error if parameter hierarchy is configured incorrectly if not button.tuple().isMultiParmInstance(): raise hou.NodeWarning("Button is not inside a multiparm block.") #Get the parent multiparm folder mpFolder = button.tuple().parentMultiParm() #Count the number of multiparm instances -> raise errors if swapping is not allowed mpInstances = node.parm(mpFolder.name()).evalAsInt() #Raise errors if trying to swap up on first block, or swap down on last block if targetSwapIndex > 0: if index == mpInstances: raise hou.NodeWarning("No value below to swap with.") elif targetSwapIndex < 0: if index == 1: raise hou.NodeWarning("No value above to swap with.") #Get the other parameters inside this multiparm block so we can start swapping. mpBlock = node.parm(mpFolder.name()).parmTemplate().parmTemplates() GetParamNames(kwargs, mpBlock, index, targetSwapIndex, 0)
  46. 4 points
    Another similar approach using deltamush, distances and polycuts. helmet2.hiplc
  47. 4 points
    Few tips and tricks to manipulate gas simulation. 1. Independent resolution grid. E.g. Overriding vel grid size independent to a density grid. 2. Creating additional utilities. E.g. gradient, speed, vorticity and etc which can be used to manipulate forces. 3. Forces via VEX and some example snippets. smokesolver_v1.hipnc P.S. Some of this technique are not Open CL friendly though.
  48. 4 points
    Zombie thread alert. I figured I'd share this solution for folks that come across this thread in the future years later like I did. The Ends SOP node can be used to delete the loop so the curves are open instead of closed. Set the Close U parameter to Open and it should work.
  49. 4 points
    attached is a file with all sorts of curvature computation for vdbs ... hth. petz vdb_curvature.hipnc
  50. 4 points
    I've wanted to tackle mushroom caps in pyro sims for a while. Might as well start here... Three things that contribute greatly to the mushroom caps: coarse sub-steps, temperature field and divergence field. All of these together will comb your velocity field pretty much straight out and up. Turning on the velocity visualization trails will show this very clearly. If you see vel combed straight out, you are guaranteed to get mushrooms in that area. If you are visualizing the velocity, best to adjust the visualization range by going forward a couple frames and adjusting the max value until you barely see red. That's your approximate max velocity value. Off the shelf pyro explosion on a hollow fuel source sphere at frame 6 will be about 16 Houdini units per second and the max velocity coincides with the leading edge of the divergence filed (if you turn it on for display, you'll see that). So Divergence is driving the expansion, which in turn pushes the velocity field and forms a pressure front ahead of the explosion because of the Project Non-Divergent step that assumes the gas is incompressible across the timestep, that is where where divergence is 0. I'm going to get the resize field thingy out of the way first as that is minor to the issue but necessary to understand. Resizing Fields Yes, if you have a huge explosion with massive velocities driven by a rapidly expanding divergence field, you could have velocities of 40 Houdini units per second or higher! Turning off the Gas Resize will force the entire container to evaluate which is slow but may be necessary in some rare cases, but I don't buy that. What you can do is, while watching your vel and divergence fields in the viewport, adjust the Padding parameter in the Bounds field high enough to keep ahead of the velocity front as that is where you hope for some nice disturbance, turbulence and confinement to stir around the leading edge of the explosion. or... Use several fields to help drive the resizing of the containers. Repeat: Use multiple fields to control the resizing of your sim containers. Yep, even though it says "Reference Field" and the docs say "Fluid field..", you can list as many fields in this parameter field that you want to help in the resizing. In case you didn't know. Diving in to the Resize Container DOP, there is a SOP Solver that contains the resizing logic that constructs a temporary field called "ResizeField", importing the fields (by expanded string name from the simulation object which is why vector fields work) with a ForEach SOP, each field in turn, then does a volume bound with the Volume Bounds SOP on all the fields together using the Field Cutoff parameter. Yes there is a bit of an overhead in evaluating these fields for resizing, but it is minor compared to having no resizing at all, at least for the first few frames where all the action and sub-stepping needs to happen. Default is density and why not, it's good for slower moving sims. Try using density and vel: "density vel". You need both as density will ensure that the container will at least bound your sources when they are added. Then vel will very quickly take over the resizing logic as it expands far more rapidly than any other field in the sim. Then use the Field Cutoff parameter to control the extent of the container. The default here is 0.005. This works for density as this field is really a glorified mask: either 0 or 1 and not often above 1. Once you bring the velocity field in to the mix, you need to adjust the Field Cutoff. Now that you have vel defined along side density, this Field Cutoff reads as 0.005 Houdini units per second wrt the vel field. Adjust Field Cutoff to suit. Start out at 0.01 and then go up or down. Larger values give you smaller, tighter containers. Lower values give you larger padding around the action. All depends on your sim, scale and velocities present. Just beware that if you start juicing the ambient shredding velocity with no Control Field (defaults to temperature with it's own threshold parameter so leave there) to values above the Field Cutoff threshold, your container will zip to full size and if you have Max Bounds off, you will promptly fill up your memory and after a few minutes of swapping death, Houdini will run out of memory and terminate. Just one of the things to keep in mind if you use vel as a resizing field. Not that I've personally done that... The Resolution Scale is useful to save on memory for very large simulations, which means you will be adjusting this for large simulations. The Gas Resize Field DOP creates a temporary field called ResizeBounds and the resolution scale sets this containers resolution compared to the reference fields. Remember from above that this parameter is driving the Volume Bound SOP's Bounding Value. Coarser values leads to blurred edges but that is usually a good thing here. Hope that clears things up with the container resizing thing. Try other fields for sims if they make sense but remember there is an overhead to process. For Pyro explosions, density and vel work ok. For combustion sims like fire, try density and temperature where buoyancy contributes a lot to the motion.