Jump to content


Popular Content

Showing most liked content since 09/18/2017 in all areas

  1. 22 points
    Few tips and tricks to manipulate gas simulation. 1. Independent resolution grid. E.g. Overriding vel grid size independent to a density grid. 2. Creating additional utilities. E.g. gradient, speed, vorticity and etc which can be used to manipulate forces. 3. Forces via VEX and some example snippets. smokesolver_v1.hipnc P.S. Some of this technique are not Open CL friendly though.
  2. 14 points
    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
  3. 12 points
    Filament like structure, combination of Smoke Solver, VDB Advect Points + Volume Rasterize Particles. smokesolver_v3.hipnc
  4. 6 points
    I was playing today with an L-system tree and grains funnily enough, then read your post. Had a go at changing my setup to a simple grow anim (more just a scale up and bend really), kinda works. Give it a go with your setup: tree_grain_grow.hip
  5. 5 points
    I'd looked at this problem a few weeks ago, got 90% the way there looking at some other odforce posts, this inspired me to finish it. The idea is to first calculate the angle between each curve segment, then apply it in a for each loop so each segment is rotated by the total of all the previous segment angles, at the correct pivot point. curve_unroll.hip
  6. 5 points
    Subjective question, at least this how I started: 1. Shelf tools, learn the basics and concepts. 2. Dive into DOPs OTLs/HDAs and look around to see how they are implemented. My examples are just a product of what those Side Effects guys implemented. 3. Read Houdini's documentation. 4. Be inspired by all the test that posted on Vimeo/YouTube that doesn't look like off the shelf imagery.
  7. 5 points
    Hey, just finished my first project involving Houdini Crowds. I'm still working on the comp but majority of the shot is finished!
  8. 4 points
    Yes,. well Potentially as a FX artist who mainly makes tools / codes / programs etc. which is always needed, But I would say you have less chance of becoming an actual fx artist if you ONLY have previous experience within Houdini coding and no actual 'FX' or simulation knowledge, - If I were you with what you've said I would learn code as much as you can (Vex/Python/C++ may even be useful to add to your CV) - And then do whatever simulation practice you can to show FX or concentrate on making optimized/streamlined Houdini tools which really aid the FX or any other process's. (Essentially in my eye if you want to go to work as a FX artist or TD and produce simulations/renders (explosions/fire/magic etc.) as well as some technical stuff (coding etc.) you need some simulations in your reel to a good level. Otherwise with coding alone I think you may struggle to get more artistic jobs and live in the world of programming/coding (Pipeline TD's/Coders etc) which is if that's your aim no problem! BUT if not make sure to try and produce whatever simulations you can using what you have. (PS; ive been told by senior artists and recruiters often rendering isn't always necessary especially if the simulation itself is very good or accurate and presented well (something to consider when you have a lower end pc spec etc. not rendering can save a lot of time) Hope this helps just my opinion on the matter
  9. 4 points
    HI FRIENDS! So over the past year I've been doing far too much Houdini in my free time, and I noticed that all of the people I look up to in the community have their own cute ODForce threads. So with the release of my latest blog post on Voronoi Diagrams and Remeshing, I thought it best to make one of those threads, to avoid flooding the Education section with tons of new posts... Anyways here's a link to my new blog post: https://medium.com/@jakerice_7202/voronoi-for-the-people-60c0f11b0767 And if the link itself isn't enough, here are a couple of GIFs from the blog post, including one that didn't make the cut. All credit for the post title goes to @mestela <3 Big thanks to @toadstorm for editing my grammar as well, and the whole ThinkProcedural discord for putting up with my insanity
  10. 4 points
    Try this: pyro_big_location_v`padzero(3, opdigits($HIPNAME))`.$F4.bgeo.sc padzero opdigits
  11. 4 points
    Make sure to turn off "Cache Object Transform" on your targetNode. This should help. If not, use an old good trick with a hidden parameter with expression in it, which will trigger your node to cook.
  12. 4 points
    What's that old adage? "When all you know is a single chop trick, everything looks like that same single chop trick..." pig_timeslice.hip
  13. 3 points
    node_type = hou.objNodeTypeCategory().nodeTypes()['bone'] for x in node_type.instances(): print x Using instances() should give you the bone nodes in the scene..
  14. 3 points
    If you know VEX, you can use an attribute wrangle inside a solver. Here is a rough sketch.. Set up a (quadratic) spiral: float rounds = (@numpt - 1) * 0.5; float grad = 1 - ( @ptnum / float(@numpt - 1) ); float spiral = (rounds * $PI * grad); @P.x = cos(spiral); @P.y = sin(spiral); @P *= grad; Unroll the curve inside a solver: int pt = int( ceil(@Time) ); float amount = ( radians(@Time % 1.0) * $PI * 2.5 ); matrix m = ident(); vector axis = set(0, 0, 1); vector offset = point(0, "P", pt); if(@ptnum > pt) { @P -= offset; rotate(m, amount, axis); @P *= m; @P += offset; } To get the wavy curve, merge it with a trail SOP running on the last point. Useful links: http://forums.odforce.net/topic/24056-learning-vex-via-animated-gifs-bees-bombs/ http://www.tokeru.com/cgwiki/index.php?title=The_solver_sop Example file: spiral_moving.hipnc
  15. 3 points
    Assemble creates Packed Fragment primitives, while Pack just creates Packed Primitives. A Packed Fragment refers to a portion of an underlying shared geometry. In this case, all the packed fragments will refer to the same geometry, just different parts of it. The viewport can then draw this as a single mesh. But when you pack to Packed Primitives, the parts of the geometry you are packing from are extracted into new geometry for each packed prim. When the viewport goes to draw this it sees 7000 separate meshes. This takes much longer to draw as the overhead of sending 7000 batches is a long higher than sending a single batch. It's this overhead that slows things down a lot.
  16. 3 points
  17. 3 points
    I experimented with another method. The basic idea was to rebuild the curves and physically add anchor points. So far, this is what I ended up with: I used the file from your 2nd post. The only odd thing I'm noticing is that it seems to simulate much slower for some reason. I'll try and troubleshoot the next time I have time to sit on this. Houdini Indie 16.0.745 - dynamic_tree_grow_help_02_jeff.zip
  18. 3 points
    I was able to integrate your solution into my cloth stitching. Now I have a working sleeve!
  19. 3 points
  20. 3 points
    Working on a procedural cave generator using input curves for the base shape and cellular automata. The goal is for them to be game engine ready with textures, what do you think?
  21. 3 points
    Uh oh, I'm back. While putzing around, trying to come up with good ideas for my next blog post (covering discrete operators seems a bit too mathy, so I'm open to suggestions. Maybe building a cloth solver in VEX?), I spent some time revisiting an old idea I've been attempting to solve for the better part of a year, rolling up a curve. That's probably not the best way to describe the effect, so I'll let my below GIF do the talking. This solution wouldn't have been anywhere close to possible without Stephen Bester (https://vimeo.com/user13305957) for a solid vex foundation of chained rotations, or Julian Johnson's transport frame file (http://julianjohnsonsblog.blogspot.com/2017/). Above you'll see final effect in action. Still not sure how to describe it other than rolling up a curve... I've attached the final OTL to this post along with the above example HIP! It works over multiple curves as well, so dont be afraid to try crazy stuff with it, it's pretty gosh darn fun! If you try it on a vertical line, you might need to change the up direction, or turn off "set up direction." Maybe it's time to make a Github too... <3 <3 <3 JR_CurveRoll.zip
  22. 3 points
    Really loved this piece by Alexa Sirbu and Lukas Vojir. Notice on their portfolio sites they also worked on the Logitech G433 piece at Man vs Machine which I thought was primarily a Simon Holmedal piece. I think it highlights the fact that most really great Houdini work is the result of a collaboration. Since I'm getting heavily into Nuke I was wondering if any experts could hazard a guess as to whether the DOF in this and the Logitech piece was rendered or done in post? http://www.simonholmedal.com/logitech-g433/
  23. 3 points
    First update! Also did some bug fixes. Available Here: https://gum.co/zWFNX Slight change to pricing, still 'Pay what you want' for Non-commercial but now has a (low) minimum price for indie licence. Anyone who has already picked it up should have access to both licences still.
  24. 2 points
    Hello, I've try something for you. The 'attribwrangle_between_points' is placing point between itself and next point. I've tried to comment the scripts but let me know if its clear enough. Gab. forOdForce_02.hip
  25. 2 points
    Hello, by raising your sphere division, your sim is more accurate but i takes more time to compute... and sometimes, the result is still not perfect ... and it seems you are in this case. if i were you, i would keep your sim as it is , and after that, i would make some adjustements with sop point nodes to reduce overlapping. bellow 2 variations of the same method. have fun with your muffin ! ++ testme-sop adjustements-ok++.hipnc
  26. 2 points
    Set "Local scaling" to "Use Local Feature Size" to have more accurate solidembed. In "box_object1" set "Division size" to 0.05 or less. Change substeps to default 4 and 2 for collision.
  27. 2 points
    The problem seems to be that you are not keeping both sides equal. When you convertvdb for one side, make sure you match the settings on the other (i.e. Convert Fog to SDF). Also, turn off that vdbresample unless you plan on resampling the other side too. It worked fine for me after that, no more exploding velocity.
  28. 2 points
    I believe you can edit your own post title to say [SOLVED] in it, which would help. Ideally though you'd reply to your own post with the solution to the problem. If there's one thing we've learnt over the years it's that you're never the only one who will get stuck on something :).
  29. 2 points
    Here's a sample for SDF representation and gas analyses to get curvature data. Can I see the reference technique you are looking for? curv_analyse_sdf_repr.hip
  30. 2 points
    I think it's better to make the loops post sim and just offset and slide everything there. Here's a scene that shows how to do that. dynamic_tree_grow_help_03d.hipnc
  31. 2 points
    The SF Houdini User Group will have a kick-off meeting at the Morrison Planetarium at the California Academy of Sciences on October 6th (6-9:30pm). We'll discuss everything procedural and listen to a presentation by the team of awesome Houdini artists creating the shows at the Planetarium! Event details can be found at the newly created San Francisco Houdini User Group Facebook Page - so please, join that as well if you live in the area. If you have any questions or want me to add you to the email list for the new SF HUG, let me know. Patricia
  32. 2 points
    Hi! There is my fresh demoreel.Houdini, Maya , Real Flow.
  33. 2 points
    "Cubicles" Same structure as above but rendered semi-opaque in Redshift: And a detail view: Cheers, Tom
  34. 2 points
    Hi Van, I attached a file below that I tweaked a little bit, not sure if this is what you mean, but basically removepoint() / removeprim() is convenient for deleting geo in a wrangle node, you can search in the vex functions or type in this and hit F1 in the textport in wrangle node to view the documentation I bypassed the unpack for now, so they are packed geo and can be manipulated at point level, but if you need them to be unpacked geo, you can add "v" at the transfer attribute input textfield in the unpack node to get the velocity from the packed sim geo. Hope this helps. delete_geo_vl.hipnc
  35. 2 points
    Edge groups are not as easy to work in Houdini as point/prim groups. You can do this using a Python SOP though: edge = geo.findEdgeGroup("edgegroup").edges()[0] newgroup = geo.createEdgeGroup("one") newgroup.add(edge)
  36. 2 points
    We can't define default parameters for non-context functions from VEX, but it is possible to workaround this too. float fade(float actualtime, fromtime, endtime) { return 444; } float fade(float actualtime, fromtime, endtime; string ramp) { return chramp(ramp, .5); } float fade(float actualtime, fromtime, endtime; string ramp) { if (ramp == "linear") return 444; return chramp(ramp, .5); } float fade(float actualtime, fromtime, endtime) { return fade(actualtime, fromtime, endtime, "linear"); }
  37. 2 points
    You can normally include in wrangles: #include "mylib.h" Assuming that $HIP/vex/include/mylib.h is where the lib is located now. If you are editing mylib.h and not the wrangle itself, Houdini doesn't track the file's changes, and you need to force compile manually. Adding spaces in wrangle is quickest and default way. Using Force Recompile button on inside Attribute VOP also works. You could also promote it for convenience. If you see the ch("../vop_forcecompile") expression reference set on the original Attribute VOP's button (RMB / Expression / Edit Expression), everything should work. vex_library.zip
  38. 2 points
    There's this cpp code here: https://www.nayuki.io/page/smallest-enclosing-circle but I don't have a clue how to turn that into a SOP, eheh @pusat That works pretty well! Thanks! https://streamable.com/73xcm
  39. 2 points
    I made this operator when I first started using Houdini. It's from Dave Eberly's library: https://www.dropbox.com/s/ojzptmfpafqjw5n/MinimumCircle_SOP_Animatrix.otl?dl=1 Could be made faster by using least squares methods instead.
  40. 2 points
    Looks fantastic Matt! You might've seen these course notes from siggraph last year, lots of interesting stuff: http://web340.server8.webgo24.de/pirk_info/projects/plant_life/resources/Modeling_Plant_Life.pdf In particular Soeren Pirk's work: https://vimeo.com/user6602111/videos
  41. 2 points
    Categories were introduced, so feel free to give us feedback on the split of channels. Some things are a trial to see if it takes off.
  42. 2 points
    A bit late, but there's a few choices for custom handles, though I'm not sure how to create custom manipulators that would work the same as the built in ones (meaning they would show up in the handles section for the HDAs). The MSS_CustomBrushState sample shows how to create a paint node. The ways Houdini implements handles, is with 'states'(BM/BM_State is a good place to look to learn a bit more). States are event handlers, tied to specific nodes, all nodes have them but most only have a generic implementation. If you register a state(MSS_SingleOpState is the best choice for a SOP, though BM_SingleOpState will work for OBJs and SOPs but is a bit more effort to work with) , and specify the name of the node, the state automatically associates with it (just select the node and hit enter in the viewport), you can create states for custom HDA's and even override states for built in nodes. States can also handle rendering, so by creating a state, rendering a custom handle and defining the interactions and plugging the resulting values into parms you can create a completely customized handle for any type of node. This is basically how Houdini handles are implemented but I think there are a few missing pieces preventing the creation of a proper handle though. You could also create a DM_MouseHook and DM_SceneHook to create and render anything you wanted without it being tied to any particular node type.
  43. 2 points
    you gotta use pop wrangle or pop vop to bring that attribute/data from SOPs into DOPs then you can use it with Vex inside DOPs. popforce+bullet_FIX.hipnc
  44. 2 points
    Ended up using Capture Attribute Unpack SOP to access the Capture Layer Paint SOP values. Would be cool if was a bit more arbitrary and wouldn't require placeholder bones. But hey... it's delivering good results atm. https://streamable.com/2riat
  45. 2 points
    or was it: Once you go choppin'...there ain't no stoppin' ?
  46. 2 points
    Decided to look at this thread finally and it was a fantastic way to get more comfortable with animation techniques and just getting better with Vex. Some of the older (1st page) ones were H15 so I went ahead and updated them to H16 nodes where it made sense. Cleaned up a couple bits and bobs and made some minor visual tweaks. Hopefully this will help someone else who is starting out with basic Wrangle wrangling. Most of this is direct ports of Matt's work, with some contributions from iamhoy and some chitchat on the Discord forum. -Robert beesAndBombs_01_columns.hiplc beesAndBombs_02_twistingBox.hiplc beesAndBombs_03_waveGrid.hiplc beesAndBombs_04_twistingCubes.hiplc beesAndBombs_05_dancingOrbs.hiplc beesAndBombs_06_bounce.hiplc beesAndBombs_07_swirlBall.hiplc beesAndBombs_08_circleWave.hiplc
  47. 2 points
    Hello, since last week i can play with houdini again to keep going my tests ... and bellow , some of my latest hip files from this video: torus+wrinckles+.hiplc stick man rbd+ .hiplc bubbles- rbd+cloth-2.hiplc
  48. 2 points
    Got a bit bored and thought of this thread, so here are some roughly similar gif recreations from Bees&Bombs. knotwave waves on waves triangle sweep six chequered waves six.hipnc chequered waves.hipnc knotwave.hipnc triangle sweep.hipnc waves on waves.hipnc
  49. 2 points
    Hi, guys! Just wanted to share with you some of my experiments. huilib - is a simple Python wrapper around Houdini's native .ui language. It has been written "just for fun", so no warranty if it works for you, but I think it's pretty usable for a simple UI, in situations, when using PyQt is not an option Maybe someday we'll see something similar from SESI Feel free to use it. https://bitbucket.org/alexxbb/huilib/overview
  50. 2 points
    Basic: // Primitive wrangle. int pts[] = primpoints(0, @primnum); vector rest = point(0, "P", pts[0]); vector prev_pos = rest; matrix3 frame = ident(); for (int i = 0; i < len(pts); i++) { vector pos = point(0, "P", pts[i]); rotate(frame, 0.1, {0, 0, 1}); vector new_pos = (pos - rest) * frame + prev_pos; rest = pos; prev_pos = new_pos; setpointattrib(0, "P", pts[i], new_pos); } Advanced: // Primitive wrangle. #define TWO_PI 6.2831852 addpointattrib(0, "N", {0, 0, 0}); int pts[] = primpoints(0, @primnum); int npt = len(pts); // Loop variables. vector rest = point(0, "P", pts[0]); vector prev_pos = rest; matrix3 frame = ident(); for (int i = 0; i < npt; i++) { vector pos = point(0, "P", pts[i]); vector delta = pos - rest; rest = pos; // Make normal. Point normals could be used instead. vector normal = normalize(cross(cross({0, 1, 0}, delta), delta)); if (length(normal) == 0) { normal = {0, 0, 1}; } // Drive a shape with ramps and multipliers. vector axis; float ramp, angle; // Twist the bend axis. axis = normalize(delta); ramp = chramp("twist_profile", (float) i / npt); angle = fit01(ramp, -TWO_PI, TWO_PI) * ch("twist") / (npt - 1); rotate(frame, angle, axis); // Bend the curve. axis = normalize(cross(normal, delta)); ramp = chramp("bend_profile", (float) i / npt); angle = fit01(ramp, -TWO_PI, TWO_PI) * ch("bend") / (npt - 1); rotate(frame, angle, axis); // Compute new position and normal. vector new_pos = delta * frame + prev_pos; prev_pos = new_pos; setpointattrib(0, "P", pts[i], new_pos); setpointattrib(0, "N", pts[i], normal * frame); } curl.hipnc