Jump to content


Popular Content

Showing most liked content since 10/08/2018 in all areas

  1. 5 points
    I can't take credit for it, but it needed to be shared. This made me cry with laughter.
  2. 4 points
    - rather than doing it in detail wrangle use point wrangle as you want trail per point - also you can create prims directly in wrangle too so no need for id - addpoint() can take reference ptnum which it will clone with all the attribs so no need to import the attribs manually - and to your question, no, it's not possible to access attributes from new points as the creation will happen at the end as a separate single threaded process, all you are doing with geometry creation functions addpoint() setpointattrib(), ... is queuing those for later here is a simple pointwrangle volume trail code: float step = chf("step"); int niter = chi("niter"); if (niter <= 0) return; int prim = addprim(0, "polyline"); vector P = @P; vector v = 0; for (int i=0; i<=niter; i++){ int pt = i == 0 ? @ptnum : addpoint(0, @ptnum); addvertex(0, prim, pt); P += normalize(v)*step; v = volumesamplev(1, "vel", P); setpointattrib(0, "P", pt, P); setpointattrib(0, "v", pt, v); } volume_trails_VEX_fix.hip
  3. 2 points
    My implementation of a bezier handle using new custom states in H17. Please don't hesitate to criticize/suggest features. Thanks! ao_utility__bezierhandle__1_0.hdalc
  4. 2 points
    Hey, I know I will look stubborn, but check this file, this should do what you want : it gives your image a name that contains the name of the object you are rendering (using splitpath). You'll have to adapt it as I don't know how you stored the data, but the file is easy to understand. Just use the same wrangle and the null whose purpose is to capture the name of your obj, in your Instance node. The parameter of the null I have added is then referenced in your Mantra node, in the name of the saved image. All of that before using the Wedge that controls everything. Hope that will solve you problem for good :-) wedgeRenderObj.hip
  5. 2 points
    Tried to get mud surface effect with some reaction to the geometry without heavy simulations. iskalvlup_heightfields_mud_worms.hip
  6. 2 points
    You can also wrap pages by offsetting rotations a little for every page. // PARAMETERS float start = chf('start'); float touch = chf('touch'); float speed = chf('speed'); float flip = 1 - chf('flip'); vector fade = relbbox(0, @P); // POSITION @P.y -= vector( getbbox_size(0) ).y * 0.5; // WRAP PAGES matrix m = ident(); float copy = ( ch("../copy1/ncy") - prim(0, "copynum", @primnum) ) * flip; float t = @Time * speed - start - copy + sin( fade.x ) + fade.z * touch; rotate(m, smooth(0, $PI, t) * $PI, {0, 0, 1}); @P *= m; // TEXTURE COORDINATES v@uv = set(fade.x, fade.z * -1, 0); book_flip_pages.hipnc
  7. 1 point
  8. 1 point
    It's CRAiG, son of CRAG...but CRAiG can wield custom weapon...whatever you give him, guitar, Tommy, rolling pin...whatever...link in youtube video
  9. 1 point
    I think he meant something like: for a given point, find the node the furthest upstream in which this point is created. I'm not sure this notion is well defined. For example if you merge two curves, it would allow to change the selection in Network view to one of the two curves I don't know a way to select something in Network view based on a selection in Scene View, (unlike at Scene level)
  10. 1 point
    Just move your mouse into the network view and press SPACE-G. You will "go" to the selected node.
  11. 1 point
    I don't think you can. This is a feature that is available at Scene Level AFAIK BUT... Let's say you want to tweak the curves, while having a node downstream set as the DISPLAY node. The information you're looking for doesn't exist in Geometry Spreadsheet, so in a way it's lost, unless you store it somehow. It's possible to have the node name displayed with Visualizers, attributes, point wrangles.. but it's intrusive, and it won't allow you to jump to it However, you can use persistent handles. Go to the node(s) you want to tweak (later somewhere in your graph). Switch to handle mode, then right click on the handle. Enable persistent. Now you can display another node, and still have the handles for that other node Obviously the handle is unaware of anything that happens downstream, so if you transfer the curve after that, the handle won't match the curve. You can mitigate that by templating the curve (violet button, second from right on the node itself) while you work on it.
  12. 1 point
    I'll just repeat my H15.5, H16, H16.5, H17 number one wish then: Finally get the built in VEX editor up to snuff. Make it a real code editor. Pretty Please :-) The most important improvement for me would be showing the parameters of a function right there in the editor, but many other things from editors like Code, Komodo Edit etc. would also make Houdini much better to code in. Thanks and Cheers, Tom
  13. 1 point
    you can also just use UV Transform SOP: Transform Order: Trans Scale Rot Translate X: 0.5-$CEX Translate Y: 0.5-$CEY Scale X: 1/$SIZEX Scale Y: 1/$SIZEY Pivot XY: 0.5
  14. 1 point
    I am a terrain noob, but besides triplanar projection (or PxrRoundCube in RenderMan) you can also look into writing some custom code to break up texture repetition, as in this IQ article or detail textures in this David Rosen article: http://www.iquilezles.org/www/articles/texturerepetition/texturerepetition.htm https://www.gamasutra.com/blogs/DavidRosen/20091225/86222/Detail_Textures.php Note these techniques are both for real-time so might not give you the fidelity you are looking for.
  15. 1 point
    So, 3D apps get harder as you spend time with them? I must be doing it wrong
  16. 1 point
    hi, I can only repeat what I have said before. for texturing, use masks you get from heightfield erode, plus you can generate your own hi-res masks in shader using mesh masks with shader noises and position data. you can do full terrain texturing procedurally in Mantra. Of course it depends how much detail you need, how specific look you want and how much time you have. Using triplanar textures to finalize shading/displacement is a good idea. For general rock displacement detail Worley/Manhattan/Chebyshev noise patterns are good but it takes some practice to get to good results but you'll get great deal of flexibility and no tiling issues. Best for large areas. Otherwise triplanar projection of multiple sculpt maps is good too. Ideal is to use both. Painting huge textures is a bad idea in my opinion. Too much manual work, resources required for data handling, plus youre f*cked if somebody decides to make more significant changes to the terrain. Dunno what level of realism are you aiming at and whether you're pathtracing or using realtime engine. This may impact your workflow to some extent (Ive got minimal experience with realtime stuff). I personally never used LODs for this but I don't see any reason why you couldn't use it if you need it. \ cheers.
  17. 1 point
    The infinity fabric has lower latency than socket to socket. That said it's still very sensitive to memory timings and speeds. Unlike Intel processors, the Ryzen processors must have the timings dialed in and the processors respond better to higher to memory frequencies(the less memory you have the faster it needs to be). In the case of the 32 core Threadripper it can only be run in NUMA mode which windows is absolutely terrible at handling. Slow, improperly timed memory + bad NUMA + bad scheduling = performance regressions with a 32 core processor in windows. Having slow improperly timed memory will also hurt your performance in Linux, but at least you will have superior NUMA and scheduling.
  18. 1 point
    In the video the chocolate material has all the values already exposed at SHOP level. If the values are exposed you can change them using just a wrangle. If the parameters are not exposed, so you have to dive inside the VOP material for change them, you need to use a bind and tell houdini to read the value of the geometry attribute you assigned. If there are other ways (and probably there are) I am not aware of them. Below the hip file with the 3 different methods: exposed parameters, not exposed parameters and using a bind. Override_shop_values.hip
  19. 1 point
    Stretching of UVs on extreme vertical changes will always be the weakness of a system using Y Projection UVs. In Alex's example, he doesn't have any vertical displacements nearly as extreme as your example, so that would be why you don't see the degradation you're seeing. The other weakness isn't just UV degradation, but also the lack of much terrain detail in highly sloped areas. I recently completed a project that had very large terrains, with a few extremely vertical mountains. The workflow that I found to work best for this situation is to separate the extreme mountains and map them individually (or sculpt extra detail into them as we did), while keeping as much of the remaining terrain as possible as heightfields. You can use some of the heightfield masks to isolate the large elevation changes, but I was manually selecting areas where the mountains were for separation. This worked in my case as the output was highly driven by concept art, so it needed to be very manually directed. As for texturing, I found exporting the heightfield masks to be very useful. I did a small amount of processing in COPs, but not much, as I preferred to use Nuke to do essentially the same processing. There wasn't much direct texturing work we did with the masks, as we mostly used them to drive scattering of trees, grass, etc. We did use painted texture maps for the rocks and such, and masked them in via shaders. Let me know if you have any specific questions about workflow etc.!
  20. 1 point
    hi, here are some answers: as far as I am understand it heightfield will always have the same resolution across its entire area since it is a volume. so you shouldn't need to care about that (at least I've never noticed any resolution issues). when it comes to texturing, I wouldn't even think about using uvs and traditional approach of texturing things as that's very painful process for things like terrains (unles you have a very good reason to do so). what I am doing is just using various masks generated by erosion sim, combined with position based procedural patterns and running it through Mantra. to me, this procedural approach seem to be quite convenient and fast. if you need to, you can always bake into uv textures and export do different renderer/realtime engine. cheers.
  21. 1 point
    I think he means it's usually the director of photography/compositor/director who defines camera details and this is done in post to ensure consistent look between different shots. But I agree with you having them available would be nice.
  22. 1 point
    Are you running it with OpenCL? That usually happens when the graphics card runs out of memory.
  23. 1 point
    Maybe a little too inside baseball, but some interesting peeks at the internals of Houdini here:
  24. 1 point
    Transcribed from the end of H17 launch video ... "LOPS (Project Solaris) Major new architecture, busy developing in R&D. Architecture that goes straight to the heart of lighting and rendering. And in one big swoop, takes Houdini's proceduralism, combines it with GPU accelerated workflows across the board. Dedicated artist workflows, and it weaves all that into a live and native USD core. But that is a story for another day." Can't wait! :-)
  25. 1 point
    If you don't have the original geometry and therefore no access to that initial resample. This should work. vu_tubecentre_end_bit.hipnc
  26. 1 point
    A lot of people asked me to share this fake fire method.If you interested it, you can will check this simple hip. After rander i used ACES for a better look. fake_fire_rnd.hip
  27. 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.
  28. 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 [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 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 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 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 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
  29. 1 point
    Hello everyone, A few months ago, I have demolished a building in the randomly chosen footage. A lot of constructive criticism has been received: Big Thanks to all artists who gave me advice on how to improve the composition and VFX. I always looking to excel in VFX craft so the whole project is under rework. Please see video below with the new version of destruction effects. Before I punish my CPU with some Mantra renders I have done Redshift version for you to review: Please let me know what you think.
  30. 1 point
    Looks like you were on the right track with the use of half edges. You could approach the problem using a primitive wrangle as follows: // Array of neighbouring prims int prim_neighbours[]; // Loop through the primitives vertices foreach (int vtx; primvertices(0, @primnum)) { // Get the forward half edge for the vertex int this_hedge = vertexhedge(0, vtx); // Only process if a valid half edge if (hedge_isvalid(0, this_hedge)) { int equiv_hedge = this_hedge; // Loop through equivalent half edges and get the neighbouring prims do { equiv_hedge = hedge_nextequiv(0, equiv_hedge); if (equiv_hedge != this_hedge) { // !! Get your attribues here !! push(prim_neighbours, hedge_prim(0, equiv_hedge)); } } while (equiv_hedge != this_hedge); } } i[]@neighbours = prim_neighbours;
  31. 1 point
    Heyo! I'm sure you've probably figured it out by now, but for anyone having the same issue, It's cause you have to visualize the hairgen curves AND the guides to get it to render. I couldn't tell you why.. just how it goes lol
  32. 1 point
    I would render the underlying mesh as a matte object. The surface will naturally cull geometry behind it. Nice way to render wireframes. If you want to do it in SOPs, I would stick to the Ray node method. Delete-by-normal method doesn't really cull things. It works properly in the file you posted. Here is VEX version of initial idea (identical to just using the Ray, though): // Point wrangle. vector camP = point(1, "P", 0); vector dir = normalize(camP - @P); float bias = 0.01; // Error margin to avoid self-occlusions. // Get all intersections along the ray. vector hit_ps[]; int hits = intersect_all(2, @P, dir * 100, hit_ps, {}, {}); if (hits && distance(@P, hit_ps[-1]) > bias) { // Occluded by some surface. removepoint(0, @ptnum); } vex_cull_curves.hipnc
  33. 1 point
    adding project files, it is a bit messy because it contains all my nodes for exploring the techniques and testing out things, but still might be helpful for some some paths are hardcoded but with a bit of fixing you can get it running gridless_selma.hipnc
  34. 1 point
    Filament like structure, combination of Smoke Solver, VDB Advect Points + Volume Rasterize Particles. smokesolver_v3.hipnc
  35. 1 point
    Another, focused on instancing smoke objects. Manipulating points with basic instancing attributes, i@cluster, v@scale and f@sourceframe. How to activate smoke object and holding a volume source. This method ideal for triggering independent gas simulation on impact data. Additional examples, e.g. grid clustering method for trail and non-trail which I'm merging from a separate thread. smokesolver_v2.hipnc
  36. 1 point
    VEX can't write to channel parameters at this time (Houdini 15.5). But Python can, just use a Python node instead of an Attribute Wrangle. result_node = hou.node("/obj/some_node_with_result_parm") x = 2 y = 3 result = x * y result_node.parm("result").set(result)
  37. 1 point
    Well i have the time to put some more love into this . Here is a Hip with tension map node with - UV, U, V stretch map - RG / Luminance map - Smooth map It's pretty complete now, but if you have any idea to enhance it feel free to share ! Cheers E tension_map_uv_ok.hip
  38. 1 point
    http://www.sidefx.com/docs/houdini14.0/nodes/sop/convertline May be this node will be of some use. Convert Line surface node Converts the input geometry into line segments. Unlike the Convert SOP, this node will not copy the unconverted geometry. Primitive attributes and groups are not preserved. This replaces the incoming primitives with two-point line segments. Each segment connects any point connected in the source. Note Two points will only be connected by a single segment, regardless of the number of connections in the source. Parameters Compute Length Computes the length of each resulting line segment and stores it in the given attribute.
  39. 1 point
    This is simply redundant in a pipelines Mantra is usually used, but I see your point. You can install on camera "White Point" property (Gear icon->Edit Rendering Properties). It usually exists on Mantra ROP, and is set to 1.0. It's not in exposure metrics, and it won't give you a physical camera model (with vignetting and such), but at least allows you to control camera sensitivity. Alternatively atmosphere object can be used as well. hth, skk. ps You can link white point with f-stop parameter with the expression like 1/pow(sqrt(2), ch("fstop")) (or whatever the math should be)*. * - I'm a last person to ask, but without shutter and ISO this is rather meaningless, I would assume that a diffuse with reflectivity of 0.18 at default 5.6 f-stop, should give us ~0.4 pixel value on grid facing camera, at a given lighting condition and ISO, right?
  40. 1 point
    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.
  41. 1 point
    you can also use the nearpoint expression together with a foreach sop. file is atached! petz non_overlapping.hipnc