Jump to content


Popular Content

Showing most liked content on 01/04/2018 in all areas

  1. 3 points
    sweet jesus, forget what I said before, this is much more of a nightmare than I thought! I finally got a faster render, but the rabbit hole kept getting deeper, so it took longer & longer to work out With both the principal and classic shaders / GGX, refracting Reflection rays gives a ton of noise, independent of roughness settings. The noise needs high Pixel Samples and increased Refraction Quality settings to fix. Specular from lights is the worst, as implied by light sampling issues mentioned previously - so I turned the light's reflection contribution off and replaced it with reflection cards. Switching the Refraction Model from GGX to Phong helped a lot ( I haven't found a switch in the principled shaders yet so I had to use classic shaders ), there's still a fair amount of noise but now it seems to shade like I expect it; increasing Max Ray Samples was actually effective, and at only 12, which allowed me to reduce the Pixel Samples down to 8. Noise Level worked fine at the default 0.01. Reflection and Refraction Quality needed a boost to 2 and 4 respectively. Limits panel was left as is ; reflect 2, refract 4, Color 4. I was able to cut the render time in half after all this ( changing the shaders to classic to switch off ggx did change the look ), but that's still way too slow for what it is, there should have been no noise in the first place. Stochastic transparency on / off and high samples made 0 difference Sidefx has to fix this! Using a different renderer is certainly a good idea in the meantime I still want to try it with a fresh scene, and in another renderer for comparison
  2. 2 points
    Houdini engine for Maya should be able to do this no?
  3. 1 point
    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.
  4. 1 point
    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. 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 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 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 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 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 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 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 Use Google To Discover Attached HIP Files Useful Websites: Tokeru Houdini Houdini Vex Houdini Python FX Thinking iHoudini Qiita Ryoji Video Tutorials: Peter Quint Rohan Dalvi Ben Watts Design Yancy Lindquist Contained Liquids Moving Fem Thing Dent By Rigid Bodies Animating Font Profiles Guillaume Fradin's Mocap Crowd Series(no longer available) 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 SideFX Go Procedural
  5. 1 point
    We just released a 4-part particle series I did for LearnSquared: https://www.learnsquared.com/courses/houdini-particles We cover everything from building our own particle solver from scratch, using the built-in Houdini particle POPS, showing how to choreograph and art-direct particle motion, and working through various rendering and instancing strategies.
  6. 1 point
    This is the way I have done it in the past when creating a digital asset from a shelf tool: # Create new digital using OBJ subnet as a base temp_node = hou.node("/obj").createNode("subnet") # Create new digital asset from temp node hda_node = temp_node.createDigitalAsset( name = hda_name, hda_file_name = hdalib_directory + hda_name, description = "DESCRIPTION", min_num_inputs = 0, max_num_inputs = 0, ) hda_node.setName("NAME") # Get HDA definition hda_def = hda_node.type().definition() # -------------------------------------------- # Do whatever you need to do with the HDA here # i.e. Creation, copying and organisation of children: hou.moveNodesTo(tuple(other_premade_node), hda_node) hda_node.layoutChildren() # ------------------------------------------- # Update and save new HDA hda_options = hda_def.options() hda_options.setSaveInitialParmsAndContents(True) hda_def.setOptions(hda_options) hda_def.save(hda_def.libraryFilePath(), hda_node, hda_options)
  7. 1 point
    Hello Everyone, Happy New year I've been making a series of videos for beginners over the last couple of months. These require no prior knowledge of houdini. I've uploaded them to youtube as well since Youtube generates really good subtitles automatically. I'm putting the link below for the youtube playlist. I hope you find it useful. Houdini playlist regards
  8. 1 point
    @akelian: (((value - omin) * (nmax - nmin)) / (omax - omin)) + nmin
  9. 1 point
    Hi! Everyone, i made a little RnD the lasts week on the Rope Simulation. Enjoy
  10. 1 point
    Yeah, sometimes I like to watch paint dry too. (especially when I'm paid by the hour) Here is an example scene that demonstrates lighting with only material emission. There are no lights in this scene. The shader uses a RaySwitch to decouple material based emission from incandescent emission. This allows you to overdrive incandescent output while not blowing out your diffuse. You can even choose an alternate color for the incandescent light as shown in this scene. The sphere emits RED but the incandescent emits BLUE. ap_rs_light_by_material.hiplc
  11. 1 point
    primuv already is basically a 2d representation of the primitive's footprint. a not-aligned bounding box of each primitive can also be found in the primitives intrinsics called "bounds". if you want to copy and squeeze models onto primitives I would create the copies first, create a "copynum"-attribute and distribute the models with something like this: vector bbox = relbbox(0, @P); int prim = point(0, "copynum", @ptnum); float height = sqrt( primintrinsic(1, "measuredarea", prim) ); @P = primuv(1, "P", prim, set(bbox.x, bbox.z, 0) ); @P += prim_normal(1, prim, {0.5, 0.5, 0}) * bbox.y * height; The bounding box from line 1 is stretched across the primitives from line 2 with primuv in line 4. The approximate height of the copies gets derived from the primitives area size in line 3 and is raised along the primitives normals in line 5. copy_on_prims.hipnc
  12. 1 point
    Do you want it to be perpendicular to the plane created by two edges with angle? For any non-corner case you can compute rotation matrix: // Point wrangle. // Compute matrix aligned with plane created by two edges. vector e0 = point(0, "P", @ptnum-1) - @P; vector e1 = point(0, "P", @ptnum+1) - @P; vector y = normalize(e0 + e1); vector z = normalize(cross(e0, e1)); vector x = normalize(cross(z, y)); 3@r = set(x, y, z); After that, you may use it in your point creation loop like this: // Create position on circle centered at the origin. // Scale it by radius. Rotate it by rotation matrix. // Translate it to desired location. set(cos(theta), sin(theta), 0) * radius * r + pivot It's an example expression, not a final code. From your code, value .05 can be used as a radius, @P can be a pivot and r is a matrix computed by the snippet above. There are common cases where it will not work. You should decide which orientation to prefer from infinite possible variants: End points. One or both edges has zero length. Angle between edges is 0 or PI align_circles_to_curve.hipnc
  13. 1 point
    Gifstorm! First I've used a visualizer sop to show @v coming out of the trail sop: That makes sense so far. To make the next step easier to understand, I've shrunk the face that sits along +Z, and coloured the +Y face green, +X red, +Z blue. So, that done, here's that cube copied onto the points, with the v arrows overlaid too: The copied shapes are following the velocity arrows, but they're a bit poppy and unstable. So why are they following, and why are they unstable? The copy sop looks for various attributes to control the copied shapes, @v is one of them. If found, it will align the +Z of the shape down the @v vector. Unfortunately what it does if it has only @v is a little undefined; the shapes can spin on the @v axis when they get near certain critical angles, which is what causes the popping and spinning. To help the copy sop know where it should aim the +Y axis, you can add another attribute, @up. I've added a point wrangle before the trail, with the code @up = {0,1,0}; ie, along the worldspace Y axis: you can see all the green faces now try and stay facing up as much as they can (note the view axis in the lower left corner), but there's still some popping when the velocity scales to 0, then heads in the other direction. Not much you can do about that really, apart from try some other values for @up, see if they hide the problem a little better. What if we set @up to always point away from the origin? Because the circle is modelled at the origin, we can be lazy and set @up from @P (ie, draw a line from {0,0,0} to @P for each point, that's a vector that points away from the origin): Yep, all the green faces point away from the center, but there's still popping when @v scales down to 0 when the points change direction. Oh well. Maybe we can venture into silly territory? How about we measure the speed of v, and use it to blend to the @up direction when @v gets close to 0? Better! Still a bit poppy, but an improvement. Here's the scene with that last setup: vel_align_example.hipnc To answer the other key words in your topic title, I mentioned earlier that the copy sop looks for attributes, obviously @v and @up as we've used here, but if it finds others, they'll take priority. Eg, @N overrides @v. @N is still just a single vector like @v, so it too doesn't totally describe how to orient the shapes. You could bypass the trail and the wrangle so that there's no @v or @up, set @N to {0,1,0}, and all the shapes will point their blue face towards the top. Without any other guidance, it will point the red side of the shapes down +X. If you give it @N and @up, then it knows where point the green side, and you get a well defined orientation. While using 2 attributes to define rotation is perfectly valid, there are other options. The one that trumps all others is @orient. It's a single attribute, which is nice, and its party trick is that it defines orientation without ambiguity, using a 4 value vector. The downside is quaternions aren't easy to understand, but you don't really need to understand the maths behind it per-se, just understand what it represents. The simplest way is to think of it as @N and @up, but glommed into a single attribute. Another way is to think of it as a 3x3 matrix (which can be used to store rotation and scale), but isolated to just the rotation bits, so it only needs 4 values rather than 9 values. In houdini, you rarely, if ever, pluck quaternion values out of thin air. You normally generate what you need via other means, then at the last minute convert to quaternion. Lots of different ways to do this, coming up with ever funkier smug ways to generate them in 1 or 2 lines of vex is something I'm still learning from funkier smug-ier co-workers. Eg, we could take our fiddled @v, and convert it to a quaternion: @orient = dihedral({0,0,1} ,@v); What that's doing is taking the +Z axis of our shape-to-be-copied, and working out the quaternion to make it align to @v. You could then insert an attrib delete before the copy, remove @N, @v, @up, and now just with the single @orient, all the shapes rotate as you'd expect. vel_align_example_orient.hipnc
  14. 1 point
    In a simpler way, Polygons; have arbitrary topology - any number of edges. Mesh; its a patch surface with mxn structure with straight edges (isoparms). Kinda like a NURBs patch with straight edges. This can be converted to Polygons using the Convert SOP.
  15. 1 point
    Hi! The difference between these primitive types is the internal representation inside Houdini. Basically it distinguishes the two types "polygon" and "mesh". "Polygon Mesh" is a combination of both (and only available in the box-SOP) An object consisting of "polygons" can have any arbitrary topology. That means it can have handles, an arbitrary number of boundaries, etc. The internal representation is the following: -point list: A list of vectors specifying a list of positions in space -polygon list: a list indexing into the point list to create triangles, quadrilaterals, etc. For each face you have to store additionally the number of corners. For example pointlist: (0,0,0) (1,0,0) (0,1,0) (0,0,1) polygon list: ((3) 0,1,2) ((3) 2,1,3) ((3) 0,3,1) ((3) 0,2,3) This would specify a tetrahedron with 4 triangles. Also, this tetrahedron can't be represented as a "mesh". A "mesh" has an implicit topology, and therefore no polygon list. This is similar to NURBS. Well, a "mesh" is actually a NURBS surface. Namely one with degree 1 (or order 2). A mesh always looks like: 0-----1-----2-----4 | | | | 5-----6-----7-----8 | | | | 9----10----11----12 | | | | 13---14----15----16 | | | | 17---18----19----20 The numbers I have written at the crosspoints are the indices into the point array (which is also needed by a mesh). They can be easily calculated. If the mesh has a widith of w columns and a height of h rows the index into the point array of crosspoint(x,y) (0<=x<w && 0<=y<h) crosspoint(x,y) = y*w + x In the example above w=4 and h=5. The "Polygon Mesh" mode in the box-SOP is generating faces like the "mesh" primitives, but is using "polygons" instead. Therefore one can continue with extruding handles out of the box, which could not be represented by a simple mesh. The mesh has its right to exist, because it needs less memory and is therefore more efficient concerning rendering performance. At least this was true in the old days, when memory was rare.