Jump to content


Popular Content

Showing most liked content since 09/18/2017 in Posts

  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, 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
  25. 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.
  26. 2 points
    Cool web! I put down a clean sop which usually is able to tidy up non manifold geo like this; the fuse was correct, but there was lots of doubled up edges which the clean removed. Re sim, I've used a grain setup, works pretty well. I've labelled most of the things, but let me know if any of it doesn't make sense. The main thing that threw it for a while was the scale, grain was behaving very strangely until I looked at the preferred grain scale size (around 0.1 for each grain), and they were all overlapping and confused. I scaled the entire web up 10x, twiddled some other numbers, much happier. spiderwebRnD_grain_sim.hip
  27. 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 :).
  28. 2 points
    I tried sorting with VEX. sy_sort_points_along_edge_group.hiplc
  29. 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
  30. 2 points
    After adding the PythonSOP, click the little down arrow in the upper right-hand corner of the code window. There you should find "Move Points Up": node = hou.pwd() geo = node.geometry() # Add code to modify contents of geo. for point in geo.points(): pos = point.position() pos += hou.Vector3(0, 1, 0) point.setPosition(pos) This should give you an idea of how to move points in python. -b
  31. 2 points
    Hello, now when it is finally published I would like to share you something I was working on during my first semester at the university. It is an university project done at Filmakademie Baden-Wuerttemberg and my role was Technical Director. Enjoy watching with loud sound and in HD Big thanks goes to our cool team, who did their best to finish this piece: Concept/Design: Alex Berweck Technical Directing: Juraj Tomori Film Music: Alexander Wolf David Sounddesign: Robin Harff Animation-­/ VFX-Producing: Vincent Waltan, Tina Vest Modeling: Mitja Öhm Director and Layout: Caroline Kießling FX & Simulation: Aleksej Skrypnik, Justin Braun Production Company: Filmakademie Baden-Württemberg GmbH Pipeline was centered around Houdini and Mantra and we really enjoyed the production of it. I did short breakdowns of a tools and workflows I developed for this project, you can check it here: https://vimeo.com/album/4471569 We used a lot of assets and relied heavily on instancing and I really liked how well Houdini suited into our pipeline, from fast viewport preview of packed disk primitives, to lightweight IFDs being constantly sent to renderfarm Also using digital assets enabled us to efficiently collaborate and transfer setups to the shots. Also big thanks to awesome people here at odforce, it was really great learning/help resource for our project. If you have any questions feel free to ask Juraj
  32. 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
  33. 2 points
    Hi! There is my fresh demoreel.Houdini, Maya , Real Flow.
  34. 2 points
    Yes, you can do that. The Envelope CHOP is useful to extract a much lower frequency curve from the volume, while the Pitch CHOP can be used to extract the dominate pitch of the audio. You can use either (or both) to affect the object. Instead of using noise, substitute a FIle CHOP and load your audio through that. Then use the Envelope or Pitch CHOP to filter it. You will likely need to scale or smooth the channels to get the animation results you're looking for.
  35. 2 points
    hi messipte, i guess you want to rotate it along the branch? here is a simple hip file. degtorad node let you rotate vector by an angle in degree, feel free to replace it with any random point value If you want to rotate it in other random direction, you can use any random vector per point instead of t. boby rot_vec.hipnc
  36. 2 points
    "Cubicles" Same structure as above but rendered semi-opaque in Redshift: And a detail view: Cheers, Tom
  37. 2 points
    I checked help document, it is hou.allowEnvironmentToOverwriteVariable("JOB", True) in houdini16
  38. 2 points
    I hope I did not get you wrong. But cant you name your hipfile e.g. "testfile_v001.hip" in your FileCache you type in the expression "$HIP/$HIPNAME.$F4.bgeo". Now If you save your hip File as "testfile_v002.hip" your FileCache will update to version 002. Had to smile on this one
  39. 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
  40. 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)
  41. 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
  42. 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
  43. 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.
  44. 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
  45. 2 points
    Hi I had a quick look at your scene.. I'm not really sure the setup is intended for actual peeling, it looks more like some sort of per-primitive-detachment setup. Inside the Sop Solver, a wrangle was setting the pintoanimation attribute, but it was misspelled. I also did a few tweaks to the scene because the original geometry (arm_anim) was not included in the hip file you posted. Is this close to what you were after? Houdini 16.0.731 Indie - shot_48_02_B.zip
  46. 2 points
    or was it: Once you go choppin'...there ain't no stoppin' ?
  47. 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
  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