Jump to content


Popular Content

Showing most liked content on 09/26/2017 in all areas

  1. 3 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.
  2. 3 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.
  3. 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
  4. 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.
  5. 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
  6. 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.
  7. 1 point
    @pusat That is cool! Learned quite a few new tricks from that HDA. Thank you! @probiner Interestingly, this problem can really be tricky, the wiki entry proposed some solutions of varying accurateness. Most of which goes way over my head. Anyways, thank you for the link. I used the python code from that website and added additional code to process and create the circle. Everything is now inside a single Python SOP. Here's the latest result: PRB_Bound_Sphere_v3.zip Although, it currently expects a flattened n-gon, I didn't include an automatic way to transform it flat on the XZ plane (Animatrix's MinimumCircle SOP seems to have one).
  8. 1 point
    Very nice , I can see this can come in handy
  9. 1 point
    This might help: http://www.tokeru.com/cgwiki/index.php?title=ConstraintNetworks Basically your constraint points didn't match the names of the packed objects, so no constraints were made. I tweaked your setup so that the constraints polylines are made directly from the packed geo, so everything matches up. me_glue_cns_test.hipnc
  10. 1 point
    Wow! Thanks @mestela and @Farmfield. Already a patreon of Farmfield but will become cgwiki patreon as well. Both of your resources have done so much for my first steps in houdini. Cheers
  11. 1 point
    Yep, you can just treat packed RBD as particles, all pop forces work with them. I've done a quick hack together of a packed RBD dops setup with @Farmfield's setup (sorry Farmfield), works great. spherical_force_rbd.hiplc
  12. 1 point
    nothing directly related to your cool tool, but fascinating reference... check how the branches rise in this timelapse: trees, timelapse
  13. 1 point
    a pop axis force can do this, with a pop speed limit to keep it all balanced. rbd_orbit.hip
  14. 1 point
    Hey, just finished my first project involving Houdini Crowds. I'm still working on the comp but majority of the shot is finished!
  15. 1 point
    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
  16. 1 point
    not entirely sure if it is the only way, but I think you'll have to multiply the value by 100, round it to the nearest integer and multiply it by 0.01 afterwards. when printing the value in vex using printf() you can use "%d" instead of "%f" for less or more numbers after the decimal point.
  17. 1 point
    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.
  18. 1 point
    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
  19. 1 point
    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
  20. 1 point
    primitive = node.geometry().createPacked('PackedDisk') primitive.setIntrinsicValue('viewportlod', 'box') primitive.setIntrinsicValue('unexpandedfilename', 'default.bgeo')
  21. 1 point
    Actual geometry has offset of P attribute. You can add Transform SOP, move geometry to origin and then move back to it's previous place on object-level by hand. If you need to turn offset into exact object-level transform values, use Extract Transform node. Let's assume the original object is called orig1: Copy-paste orig1 and call it copy1. Place Transform SOP inside orig1. Set translate to -$CEX, -$CEY + 0.5 * $SIZEY, -$CEZ to center geometry at origin. Go up to scene level and create Extract Transform OBJ. Set orig1 as Source and copy1 as Destination. Make Extract Transform parent of the orig1. Enable Keep Position When Parenting checkbox on the orig1. Unparent orig1 from Extract Transform to get transform values. Disable checkbox from step 7. Delete copy1 and Extract Transform nodes. Now you have orig1 matching it's previous offset with obj-level transform.
  22. 1 point
  23. 1 point
  24. 1 point
    Thank you @MrScienceOfficer ! Here's one I did today
  25. 1 point
    Thanks @atom! btw learnt a lot from you! Right now having a blast with @petz file, gotta learn vex!
  26. 1 point
    And some non-houdini stuff, dont know if its allowed, if not please delete (cinema 4d, zbrush, MoI3D)
  27. 1 point
    Hi, I'm not sure if this would work on your scene. The setup basically made use of extra fields to hold the two different sources. Hopefully you would find the notes I've scattered inside to be helpful. Houdini Indie 15.5.632 split_volumes.zip
  28. 1 point
    Hi 1. Just like that. 2. You don't have to compile these files. Vfl-files will be compiled at runtime so if your function is huge it can be a good solution to compile them first. To compile vfl-files you use "C:\Program Files\Side Effects Software\Houdini 15.5.535\bin\vcc.exe" More info int the doc's 3. The files has to be placed in the "HOUDINI_VEX_PATH". So either set up a custom path to store your files or make a "vex" folder with an "include" folder inside in your preference folder, and place your files there. 4. Yes. -b
  29. 1 point
    1. Sure. 3x3 matrices do rotate, skew and scale only. Object will stay on it's place. There is two ways, actually. First, and probably most useful, is to set P in point wrangle after setting transform in primitive wrangle, as you did. Second is to use primitive wrangle only and set pivot intrinsic, not sure about drawbacks of this method: // Primitive wrangle. matrix t = primintrinsic(1, "packedfulltransform", @primnum); matrix3 r = (matrix3) t; setprimintrinsic(0, "transform", @primnum, r); vector p = primintrinsic(0, "pivot", 0); p -= cracktransform(0, 0, 0, 0, p, t); setprimintrinsic(0, "pivot", @primnum, p); Note that using both @ptnum and @primnum is good only for vertex wrangles over normal geometry. @primnum in point wrangles will always be 0, and @ptnum is equal to 0 in primitive wrangles. Normally, you should split your snippet on two different wrangles. It did work, however, because there is single volume primitive, with only point #0 and primitive #0 exist. 2. I cannot reproduce my own snippet working now, so, never mind. Probably, you shouldn't bother with multiplying, but here is how to cleanly set VDB transform: // Primitive wrangle. matrix pft = primintrinsic(1, "packedfulltransform", @primnum); vector scale = primintrinsic(0, "voxelsize", @primnum); matrix3 r = (matrix3) pft; scale(r, scale); vector translate = cracktransform(0, 0, 0, 0, pft); matrix t = (matrix) r; translate(t, translate); setprimintrinsic(0, "transform", @primnum, t); 3. Updating transform using intrinsic:pivot from animated input may help to get rid of jitter. 4. There is various problems with dealing with VDBs using intrinsics on my build. First is incorrect viewport updating. Caching geometry after wrangle node helps. intrinsic_transforms.hipnc
  30. 1 point
    Hi Curve, Contrary to the labeling, using a Quaternian is the easist way to do this. 1) Lay down the Quaternion VOP 2) Plug in the axis and angle parms (I can't remember if the angle is degrees, or radians) 3) Convert the Quaternian to a Matrix3, you can use a 4, but not needed for rotations... 4) Muliply your Vector by the Matrix3, make sure your Vector is the first input, and Matrix is the second. 5) BAM!! Rotating Vectors! I am sure there is a great math explination out there for how this works. If you know what it is fill me in! cheers, -j