Leaderboard
Popular Content
Showing content with the highest reputation since 01/10/2025 in all areas
-
Its been a while since I posted progress in this topic. Here is the latest project that I been working on my spare time, always trying to improve my small scale pipeline. I hope you like it! Cheers!!4 points
-
untitled.mp4 pointrelax_simple.hip3 points
-
2 points
-
We could also scale and circularize a rectangular sweep: https://procegen.konstantinmagnus.de/quadrilateral-spheres tube_monitor.hip2 points
-
I reviewed the code and I think I made some mistakes. The second condition, the speed difference check, I put it after the angle difference condition is verified. It works better now. What do you think? clusterbyattribute2_fix.hip2 points
-
2 points
-
2 points
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
untitled.mp4 that should give you the idea growth_curve_changing_geo_pop_vellum.hip1 point
-
untitled.mp4 maybe you can just fake the part where its just rotating in the air like that. pop and noisey geo pop_surface_slider_ray_water_ball_attract_2.hip1 point
-
COURSE PROMO https://www.youtube.com/watch?v=BPY3ZCKMcm0 COURSE LINK https://payhip.com/b/kPATt 24+ Hours of content This is an advanced course dives into the world of DOPs (Dynamic Operators). If you are either a VFX artist, supervisor or a technical developer, you surely work with DOPs and Gas Microsolvers. This world seems so mysterious and difficult to understand. This course will help you dive deeply into the world of DOPs and Gas Microsolvers and solve the mysterious puzzle of this complicated world. First Section: Introduction and smoke solver anatomy (2 hrs and 15 mins) We will talk about some basic maths needed in the course, volumes and volume types in Houdini and the simple anatomy of the smoke solver, this means the basic gas microsolvers that are used to build a simple smoke solver that handles a simple smoke simulation. Second Section: Masking and Detailing Simulations (11 hrs) The richest chapter in this course. We will talk about noise in Houdini in details, then we will talk about vector operators like curl, gradient, divergence, laplacian and curvature. Then we will talk about detailing and masking smoke and Pyro simulations in Houdini. Firstly, we will talk about the preset already made Gas Microsolvers that are used to add details to the smoke simulations like the Gas Turbulence, Gas Shredding, Gas Vortex Confinement and Gas Disturb. We will not only talk about the settings of these nodes and how they are used, but we are also going to learn how to build them from scratch using Gas Microsolvers which gives you a core knowledge about the world of DOPs and Gas Microsolvers. You will learn how to create these systems from scratch. I am pretty sure that if you learn how to make these nodes from scratch using Gas Microsolvers, you will be able to understand DOP networks and Gas Microsolvers deeply and will be able to build your own systems and advanced techniques in DOP simulations. So we will create them from scratch and go through the math behind them, so we will use so many Microsolvers like the gas match field, gas analysis, gas linear combination, gas field VOP and more. Then after talking about the usual ready made ways to detail smoke sims, we are going to create our own custom way of detailing smoke simulations and we will learn how to create custom masks using different things in Houdini and we will put all of that into an OTL to be used in any simulation Third Section: Custom Forces and Velocity Fields (8 hrs) We are going to create custom velocity fields and forces to control simulations. First we are going to create a custom velocity field to get an ocean vortex effect with great banding effect. Then, we are going to create custom curve forces that drive smoke or particle simulations according to a curve. Then, we are going to learn how to create custom forces that work with complex geometry to get an interesting result. Then, we are going to create an interesting particles to word effect to learn how to deal with to object force situation. Then, we are going to learn how to create forces related to an axis. We are also going to learn different ways to apply velocity volumes in simulations like POP Advect by volume and also our ways to blend the velocity in the simulation or applying them as wind, directional drag or full drag. This chapter entails using of a lot of advanced things like point clouds and Volume VOPs to manipulate volumes. Fourth Section: SOP Geometry Data and SOP Solver (3 hrs) We are going to deal with geometry data and sop solver in DOPs, so we are going to create a snow simulating system and learn how to simulate sand and snow using gas sand forces, SOP solver and impact data Then we are going to learn how to create an interesting lava melting effect using SOP solver. Then we are going to learn how to mask and detail water simulations using SOP solvers This course will give you very deep knowledge in the world of DOP networks... after it, you will have very solid base in DOPs, you will have so much better understanding of the workflow in DOPs. You will be able to create your own systems of custom simulations in DOP networks.1 point
-
flip_interact_rbd_packed_geo.hip here a scene example. cant figure out whats wrong in your scene to b e honest... maybe inside of the rbd pack1 point
-
// Wrangle set to Run Over Detail int current_segment = 0; int end_of_segment = 0; for(int pt=0; pt<npoints(0); pt++) { setpointattrib(0, "id", pt, current_segment); int intersect = point(0, "intersect", pt); if(intersect >= 0) { if(!end_of_segment) { end_of_segment = 1; current_segment++; } } else end_of_segment = 0; } In the scene, I noted that it's a bit easier to do this if you do not have the "doubled intersect" around each segments, so there's a second method that's a bit easier to follow. Basically, it's a sequential algorithm. For each point.. We assign current_segment to the current point. Is the current point the end of a segment ? If yes, we increment current_segment by one. There's some logic to handle the "doubled intersect", otherwise current_segment would increase by 2 at the end and start. Does that work for you ? intersect segment id.hiplc1 point
-
I have a source curve and I want to move the points of the curve closer towards a goal curve, if the points are outside of a certain distance. That part works already. // Define the second curve input int curve2 = 1; // Assuming the second curve is the second input (input 1) // Define distance threshold and move distance float distanceThreshold = 0.1; // Specify your threshold value float moveDistance = 0.1; // Specify how far to move the point along the normal // Initialize variables int prim; vector uv; float minDist; // Use xyzdist to find the closest point on the second curve minDist = xyzdist(curve2, @P, prim, uv); // Get the position of the closest point using the primitive and UV vector closestPoint = primuv(curve2, "P", prim, uv); // Store the distance as a new attribute on the current point f@dist_to_curve = minDist; // Calculate the normal vector pointing towards the closest point vector normalDirection = normalize(closestPoint - @P); // Store the normal direction as a new attribute v@N = normalDirection; // Check if the distance exceeds the threshold if (minDist > distanceThreshold) { // Move the point along the normal direction by a set amount @P += normalDirection * (0.02); } What I want to achieve, however, is to use a set of goal curves that are horizontally stacked and do the following: 1) move the curve points of the first source curve towards the bottom curve of the goal curves. 2) use the result of 1 and copy/move it up horizontally to the same y-coordinates as the next goal curve and use the result of 1 as the new source curve 3) repeat and go upwards until I reach the last of the goal curves I've attached what I have so far. I'm looking for a way to iterate through all the goal curves and also to make sure that the source curve moves always towards the goal curve on the same horizontal level. The screenshot above shows my current bug - if the distance to another layer is shorter than to the goal curve on the same layer, xyzdist points towards the wrong curve/primitive. limit_angle.hipnc1 point
-
Thanks, that's great. I had to change the method in the "Block Begin" to "Fetch Feedback" instead of "Fetch Input" for it to work as expected.1 point
-
You can add an LPE tag node right before karma. Add your geometry lights to the list by clicking on teddy bear icon in the middle and give them tags. Then you can include these geometry lights in karma render settings and they should show up for you in the render primitive list. Earlier I gave my sky lights an 'Untagged_Lights' tag so they wont have layer, if you need them just give them a tag or remove the 'Omit LPE Tags checkbox' Did this for my lightning which is emissive mesh treated as light source1 point
-
I developed this tool to make a faster and easy-to-read version of the combination of Pre-Flight Scene tool and labs archive project tool. Let's take a look of the advantage of my tool: about file viewer 1. faster loading speed than Pre-Flight Scene 2. allow to filter by node name, file name and extension 3. show absolute and relative path. 4. tell you which path is not under $HIP 5. double-click the node name and jump to the node 6. show the number of link status and the number of files with $HIP path about package 1. allow to copy Non-$HIP files to the folder where your .hip file is and replace the path to $HIP. 2. toggle of copy sequence files. Installation Create a new tool in shelf and copy the python codes. Don't be shy to give me any suggestion and feedback FileCollector.txt1 point
-
Hello fellow magicians I've released my latest project Skull Beach and raised some interest regarding the method I used for the foam. I want to share a hip file with the basic principle behind this fx. Have fun with it, improve on it, and don't hesitate to share your creations! vellum_foam.hip1 point
-
Hi to all of you. I am happy to be a part of this Odforce community As a passionate user of Houdini I am excited to dive into discussions about visual effects, 3D animation & all things Houdini related. I wish to get in touch with people who have similar interests to mine. I have participated in a number of discussion that have undoubtedly greatly helped me; I still want to share & learn as well as start my own conversation to answer my question and learn more. If there are any posts or resources that are suggested for new users. Please divulge me I am grateful.1 point
-
1 point
-
1 point
-
I was looking for the same things, and after hitting all the key of my keyboard, I find that Ctrl+middle_mouse_click work for me ! Hope that help !1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
Here is one way you can do this. If you are building a HDA, the multiparm block should be in your HDA parameters instead of a nested node, otherwise it can be quite difficult to manage. multiparm_sample.hiplc1 point
-
Hey guys, I received few requests to share my tool. I guess it may be interesting to someone else. This project is just a simple test which I did in a few hours, so it still needs some tweaking. Anyway, I hope it'll be useful to someone. cheers FLIP_auto_resize_03.hip1 point
-
Hey everyone, so after my very long thread (https://forums.odforce.net/topic/44053-implement-kernel-maths-in-vex/) I finally found a solution. The setup works great at 0.05 res, you might have to dive inside the solver and change some parameters to get it work at other resolutions (especially to get the droplets). Here are some test : Emission threshold at 60 (depending on the situation, there might be some abusive expansion, like at the end on the rubber toy, but this seems impossible to fix when you want a full thin sheet) Stretch threshold at 0.75 / Surface Tension 0.5 Emission threshold at 15 / Stretch threshold at 1.25 / Surface Tension 1 Houdini default Flip with Surface Tension at 1 Crown test with 50 Emission threshold (problem with infinite expansion with liquid dropping from the collider) If someone has suggestion to improve it, feel free to tell me I'm still working on fixing the infinite expansion issue, but the emission threshold is doing great until 20-30 depending on the situation Cheers, thin_sheet_solver.hipnc1 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. 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 SOP Pyro Control Field Gas Disturbance Repair Geometry Self Intersection FLIP Follows Curve Long Winded Guide To Houdini Instancing Disable Simulations On Startup 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 Procedural1 point
-
Under Edit/Preferences/Miscellaneous, try switching from GPU to CPU for OpenCL. I have the same problem, even older vellum projects no longer work. My guess is video driver updates have altered the way Houdini perceives my GPU hardware.1 point
-
Hi, I haven't looked at your scene but if your river is curved, you can use Gas Guiding Volume method to have continuous custom emission and sink sites: https://www.sidefx.com/forum/topic/48409/#post-219027 I find this method more versatile than the Boundary Layer method, as it's more generic, though the latter is easier to set up.1 point
-
1 point
-
1 point
-
1 point
-
Hey Folks, This thread is such a good resource for Differential Growth experiments, I thought I'd add this one, from Martin Salfity's Behance site, for work done at Art&Graft from here: https://www.behance.net/gallery/47193587/Experiment-Number-2 Cheers, Stu.1 point
-
here is simple example of how streams work, no need to put stream name in group field, POP nodes in the stream affect only incoming stream (or streams if they were merged) ts_streams_example.hipnc1 point
-
I'm sure you can't do it without an additional data. For example, is it possible to retain transform matrix on points of original geometry? Then yes, just multiply it by inverse. Dealing with object transforms is the most straightforward way, and you need only transform, simple box with some snapping techniques with desired transform is fine. Extract Transform OBJ. There is another nice method I didn't found in Houdini, maybe it will fit you. If you have at least two triangles, or any arbitrary 3 points transformed, of before-transform and after-transform states (for example, if you store rest position or if you could recreate it more or less exact), then you may easily calculate transform matrix between them using triangles's "local spaces" created from triangles's sides. Here the code for Primitive Wrangle (I used "0" as group, it runs only for first polygon) with two identical geometries on inputs, where second is arbitrarily transformed. // Create a basis from points of triangle. matrix3 basis_from_triangle(vector p1, p2, p3) { // Axes vectors. May not be orthogonal. vector X, Y, Z; Z = p2 - p1; X = p3 - p1; Y = normalize(cross(Z, X)) * length(p2 - p3); return set(X, Y, Z); } // Calculate rotation matrix rotating triangle ABC into triangle DEF. matrix3 rotation_between_triangles(vector a, b, c, d, e, f) { matrix3 basisABC, basisDEF; basisABC = basis_from_triangle(a, b, c); basisDEF = basis_from_triangle(d, e, f); return invert(basisABC) * basisDEF; } // Calculate transform matrix transforming triangle ABC into triangle DEF. matrix transform_between_triangles(vector a, b, c, d, e, f) { matrix transform = ident(); matrix3 r = rotation_between_triangles(a, b, c, d, e, f); transform *= r; translate(transform, d - a * transform); return transform; } 4@transform = transform_between_triangles(point(1, "P", primpoint(1, @primnum, 0)), point(1, "P", primpoint(1, @primnum, 1)), point(1, "P", primpoint(1, @primnum, 2)), point(0, "P", primpoint(0, @primnum, 0)), point(0, "P", primpoint(0, @primnum, 1)), point(0, "P", primpoint(0, @primnum, 2))); Now, transform points using Point Wrangle with second input as geometry, simply getting first primitive's transform attribute. @P *= matrix(prim(1, "transform", 0)); Or, being contemporary, Deformation Wrangle, because it is exactly why it was created. pos *= matrix(prim(1, "transform", 0)); It will properly transform attributes you need to have transformed. With Point Wrangle you need to use other wrangles to transform vertex normals or other attributes. Actually, for normals only there is special checkbox on Point Wrangle, and sometimes it works. betweentria.hipnc1 point
-
There is no mystery as to how Houdini works. Anything that gets done in Houdini can be expressed by a node. Whether that node is a coded c++ operator, an operator written in VEX (or using VOP nodes representing vex functions), Python operators or Houdini Digital Assets (HDA's), each node does it's own bit and then caches it's result. There is no lower level than nodes. The nodes in Houdini are the lowest level atomic routine/function/programme. A SOP node for example takes incoming geometry and processes it all in of itself, then caches it's result which is seen in the viewport, MMB on the node as it's stats and in the Details View to see the specific attribute values. If this is a modifier SOP, it will have a dependency on it's input node. If there is an upstream change, the current node will be forced to evaluate. If there is a parameter reference to another node and the other node is marked "dirty" and affects this node, this node will have been forced to evaluate. To generalize the cooking structure of a SOP network, for every cook (frame change, parm change, etc), the network starts at the Display/Render node and then walks up the chain looking for nodes with changes and evaluates dependencies for each node also querying those nodes for changes until it hits the top nodes. The nodes marked dirty causing the network to evaluate the dirty nodes top down evaluating the dependencies that were found. You can set a few options in the Performance Monitor to work in the older H11 way and see this evaluation tree order if you wish. Change that. It is "mandatory" that you do this if you want a deeper understanding of Houdini. You definitely need to use the Performance Monitor if you want to see how the networks have evaluated as it is based on creation order along with the set-up dependencies. Yes deleting and undeleting an object can and will change this evaluation order and can sometimes get you out of a spot with crashing. If you haven't used the Performance Monitor pane, then there you go. Use it. Just remember to turn it off as it does have an overhead performance wise. Another key is to use the MiddleMouseButton (MMB) on any and all nodes to see what they have cached from the last cook evaluation. Memory usage, attributes currently stored, etc. the MMB wheel on my mouse is as worn in as the LMB as I use it so much. You can see if the node is marked as time dependent or not which will affect how it evaluates and how it will affect it's dependent nodes. You can RMB on the node and open up the Dependency view for that operator which will list all references and dependencies. You can hit the "d" key in the network and in the parameter display options, in the Dependency tab, enable the various dependency aids (links and halos) in the network to see the dependencies in the network. Houdini is a file system, in memory, and on disk in the .hip "cpio" archive file. If you want, you can use a shell, and given any .hip file, run the hexpand shell command on the file. This will expand the Houdini file in to a directory structure that you can read and edit if you so wish. Then wrap it back up with hcollapse. If you really want to see how Houdini works low level, then this how it all ends up, and how it all starts. It's just hscript Houdini commands that construct the nodes including the folder nodes themselves. Each node is captured as three distinct files: the file that that adds the node and wires it up to other nodes, the parameter file that sets the nodes parameters, and another file that captures additional info on the node. If you locked a SOP, then that binary information will be captured as a fourth file for that node. It is for this reason that .hip files are very small, that is unless you start locking SOPs and that is not wise. Better to cache to disk than lock but nothing stopping you. When you open up a .hip file, all the nodes are added, wired, parameters modified and nodes cooked/evaluated. There are different types of node networks and nodes of a specific type can only be worked on in specific directory node types. This forces you to bop all over the place, especially if you still willingly choose to use the Build desktop which I do not prefer. You have to have a tree view up somewhere in the interface to see how the network lays out as you work. It's also very handy for navigating your scene quickly. The Technical Desktop is a good place to start when working on anyone's file as there is a tree view and a few other panes such as the Details View, Render Scheduler and more. If you want to use the technical desktop and follow a vid done with the Build desktop, simply switch up the Network with the Parameter pane and now the right hand side is the same as Build, but now you can follow the tree view and see where and when other nodes are dropped down. A new Houdini file is an unread book, full of interesting ideas. Using a desktop that exposes a tree view pane, you can quickly see what the user has been up to in a couple seconds. Again use the Technical Desktop as a start if you are still using Build (if you know me you will know I will force you to have a tree view up). You can quickly traverse the scene and inspect the networks. If that isn't enough, you can pop open the Performance Monitor and see what nodes are doing the most work. You really don't need any videos, ultimately just the .hip file. Helps if the scene is commented and nodes named based on intent. Let's stick to SOPs. In Houdini, attributes are an intrinsic part of the geometry that is cached by each SOP. Not some separate entity that needs to be managed. That is what makes SOPs so elegant. That wire between two SOPs is the geometry being piped from one SOP to the next, attributes and all. Not a link per attribute (which in other software can be a geometry attribute, parameter attribute, etc). This makes throwing huge amounts of geometry with lots of attributes a breeze in Houdini. All SOPs will try their best to deal with the attributes accordingly (some better than others and for those others, please submit RFE's or Bugs to Side Effects to see if there is something that can be done). You can create additional geometry attributes by using specific SOPs: - Point SOP creates "standard" point attributes - Vertex SOP creates "standard" vertex attributes - Primitive SOP creates "standard" Primitive attributes - Use the Attribute Create SOP to create ad-hoc attributes with varying classes (float, vector, etc) of type point, vertex, primitive or Detail. - Use VEX/VOPs to create standard and ad-hoc point attributes. - Use Python SOPs to create any standard or ad-hoc geometry attributes. One clarification that must be made is the distinction between a "point" and a "vertex" attribute in Houdini. There are other softwares that use the term vertex to mean either point attributes or prim/vertex attributes. Games have latched on to this making the confusion even deeper but alas, it isn't. In Houdini, you need to make the distinction between a point and a vertex attribute very early on. A point attribute is the lowest level attribute any data type can have. For example, vector4 P position (plus weight for NURBs) is a point attribute that locates a point in space. If you want, that is all you need: points. No primitives what so ever. Then instance stuff to them at render time. You can assign any attribute you want to that point. To construct a Primitive, you need to have a point for the primitive's vertices to reference as a location and weight. In the case of a polygon, the polygon's vertices is indexing points. You can see this in the Details View when inspecting vertex attributes as the vertex number is indicated as <primitive_number>:<vertex_number> and the first column is the Point Num which shows you which point each vertex is referencing as it's P position and weight. Obviously you can have multiple vertices referencing a single point and this is what gives you smooth shading by default with no vertex normals (as the point normals will be used and automatically averaged across the vertices sharing this point). In the case of say a Primitive sphere, there is a single point in space, then a primitive of type sphere with a single vertex that references that point position to locate the sphere. Then there is intrinsic data on the sphere (soon to be made available in the next major release) where you can see the various properties of that sphere such as it's bounds (where you can extrapolate the diameter), area, volume, etc. Other primitive types that have a single point and vertex are volume primitives, metaball primitives, vdb grid primitives, Alembic Archive primitives, etc. How does a Transform SOP for example know how to transform a primitive sphere from a polygonal sphere? Answer is that it has been programmed to deal with primitive spheres in a way that is consistent with any polygon geometry. Same goes for Volumes. It has been programmed to deal with Volumes to give the end user the desired result. This means that all SOPs properly coded will handle any and all primitive types in a consistent fashion. Some SOPs are meant only for Parametric surfaces (Basis SOP, Refine SOP, Carve SOP, etc.) and others for Polygons (PolySplit, etc.) but for the most part, the majority of SOPs can work with all primitive types. What about attributes? The Carve SOP for example can cut any incoming polygon geometry at any given plane. It will properly bi-lineraly interpolate all attributes present on the incoming geometry and cache the result. It is this automatic behaviour for any and all point, vertex, primitive and detail Attributes that makes working with SOPs a breeze. How does Houdini know what to do with vertex attributes when position P, velocity v and surface normal N need to be handled differently? When performing say a rotate with a Transform SOP and the incoming geometry has surface normals N, velocity vector v, and a position cache "rest", each attribute will be treated correctly (well N because it is a known default attribute but for user-defined attributes, you can specify a "hint" to the vector that will tell it to be either vector, 3 float position, or of type surface normal). It is this auto-behaviour with attributes and the fact you don't need to manage attributes makes using SOPs so easy and very powerful without having to resort to code. Remember that each SOP is a small programme unto it's self. It will have it's own behaviours, it's own local variables if it supports varying attributes in it's code logic, it's own parameters, it's own way of dealing with different primitive types (polygons, NURBs, Beziers, Volumes, VDB grids, Metaballs, etc). If you treat each SOP as it's own plug-in programme, you will be on the right path. Each SOP has it's own help card which if it is authored correctly will explain what this plug-in does, what the parameters do, what local variables are available if at all, some other nodes related to this node, and finally example files that you can load in to the current scene or another scene. Many hard-core Houdini users picked things up by just trolling the help example files and this is a valid way to learn Houdini as each node is a node and a node is what does the work and if we were to lock geometry in the help cards the Houdini download would be in the Gigabytes so nodes are all that is in the help cards and nodes is what you need to learn. I'm not going to touch DOPs right now as that is a different type of environment purpose built for simulation work. Invariably a DOP network ends up being referenced by a SOP to fetch the geometry so in the end, it is just geometry which means SOPs. Shelf tools are where it's at but I hear you. Yes there is nothing like being able to wire up a bunch of nodes in various networks and reference them all up. Do that for a scratch FLIP simulation once or twice, fine. Do that umpteen times a week, well that is where the Shelf Tools and HDA's make life quite simple. But don't be dismayed by Shelf Tools. All of those tools are simply executing scripts that place and wire operators together and set up parameter values for you. No different than when you save out a Houdini .hip scene file. If you are uber-hard-core, then you don't even save .hip files and you wire everything from scratch, every time, each time a bit different, evolving, learning. So with the shelf tool logic you find so objectionable, if you open up an existing .hip scene file, you are also cheating. Reminds me of the woodworker argument as to what is hand built and what isn't. I say if you use anything other than your teeth and fingernails to work the wood, you are in essence cheating, but we don't do that. Woodworkers put metal or glass against wood because fingernails take too long to grow back and teeth are damaged for ever when chipped. And I digress... Counter that to power users in other apps that clutch to their code with bare white knuckles always in fear of the next release rendering parts of their routines obsolete. With nodes, you have a type name and parameter names. If they don't change from build to build, they will load just fine. I can load files from before there were .hip files and they were called .mot (from Sage for those that care to remember) from 1995. Still load, well with a few meaningless errors but they still load. A Point SOP is a Point SOP and a Copy SOP is a Copy SOP. No fear of things becoming obsolete. Just type in the "ophide" command in the Houdini textport and you will still find the Limb and Arm SOPs (wtf?). LOL! First thing I do every morning? Download latest build(s). Read the build journal changes. If there is something interesting in that build, work up something from scratch. Then read forums time permitting and answer questions from scratch if I can. All in the name of practice. Remember from above that a .hip file is simply a collection of script files in a folder system saved on disk. A Houdini HDA is the same thing. A shelf tool again is the same thing: a script that adds and wires nodes and changes parameters. Not pounding a bunch of geometry and saving the results in a shape node never to have known the recipe that got you there. To help users sort out what created which node, you can use the "N" hotkey in any network and that will toggle the node names from the default label, the tool that added that node and finally nothing. Hitting "N" several times while inspecting a network will toggle the names about. That and turning on the dependency options in the network will help you see just what each shelf tool did to your scene. Knowing all this, you can now troll through the scene and see what the various shelf tools did to the scene. If you like to dig even deeper, you can use the Houdini textport pane and use the opcf (aliased to cd), opls (aliased to ls), and oppwf (aliased to oppwd and pwd) to navigate the houdini scene via the textport as you would in a unix shell. One command I like to show those more interested in understanding how Houdini works is to cd to say /obj then do an opls -al command to see all the nodes with a long listing. You will see stats very similar to those found in a shell listing files or if you RMB on any disk file and inspect it's info or state. Remember Houdini "IS" a file system with additional elaborate dependencies all sorted out for you. There are user/group/other permissions. Yes you can use opchmod (not aliased to chmod but easily done with the hscript alias command) to change the permission on nodes: like opchmod 000 * will remove read/write/execute permissions on all the nodes in the current directory and guess what? The parameters are no longer available for tweaking. Just remember to either tell your victim or to fix it for them or you may be out of a job yourself. opchmod 777 * gives back the permissions. An opls -al will verify this. Now you know what our licensing does to node states as you can set the state of a node to be read and execute only but remove the write to any DOP or POP node and you have a Houdini license while a Houdini FX license will enable the write to all nodes in all networks. Also knowing this, the .hip file truly is a book with a lot of history along with various ways of inspecting who created what node and when, what tool was used to create this node, what dependencies are on this node, is it time dependent, and more, all with a quick inspection. After all this, learning Houdini simply becomes learning each node in turn and practice, practice, practice. Oh and if you haven't figured out by now, many nodes have a very rich history (some older than 30 years now) and can do multiple things, so suck it up, read the node help cards, study the example files and move forward. The more nodes you master, the more you can see potential pathways of nodes and possibilities in your mind, the faster you work, the better you are. The more you do this, the more efficient your choices will become. The learning curve is endless and boundless. All visual. All wysiwyg.1 point
-
Quoting my self from the TD Academy thread, here are some links on OpenCourseWare I got from CGTalk. Opencorseware search: ocwsearch.com --------------------------------- khanacademy.org academicearth.org MIT Stanford Princeton Berkeley and iTunes Berkeley Purdue Carnegie Mellon Utah State Tufts Johns Hopkins School of Public Health University of Washington Computer Science & Engineering Harvard Openlearn Connexions Wikiversity and Wikibooks Lamar University Math Course *edit - I'll make updates as more links are posted1 point
-
And my pipe system... It's really complicated project Now I would have done it very differently. Pipes_01.rar1 point
-
There's a problem with expression in sweep node. Branch width is flicker in animation. I created this file in H10 and didn't find out why this problem appear in H12. P.S. I get hired! branchCreator9.rar1 point
-
1 point