Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


StepbyStepVFX last won the day on April 21

StepbyStepVFX had the most liked content!

Community Reputation

31 Excellent


About StepbyStepVFX

  • Rank

Contact Methods

  • Website URL

Personal Information

  • Name
  • Location
  • Interests
    VFX, Computer Graphics, AI, Deep Learning, Cinema and many more...
  1. Houdini Pyro render issues

    Hard to tell without more info, but usually : you can solve the « stairs » problem by increasing the substeps of your simulation. With small substeps, those stairs effect appear where the speed is high. I don’t what source you have used, but if it’s from particles or object, you can also increase the substeps, to smooth the emission and then avoid having those artifacts. The « boiling » : well, I think you’re talking about the smoke taking the form of a big smooth mushroom while getting high in the air ? You can limit this either by lowering the temperature of your your smoke, and/or decreasing the buoyancy of your pyro sim. The force that is applied to the smoke is buoyancy * (delta Temperature). A bit like an Archimede force but with difference of T between the fluid and its surrounding. By decreasing that, you limit the mushroom effect. Hope that helps
  2. Moana Island Scene [Dataset]

    Hey Atom, what are your render times for such scenes ? Particularly the ones with so much instances ? (and what machine ?). This is just for me to know what I should expect...
  3. Pop Grain issue! Please help!

    CHOPS are slow and sometimes complicated (not too many tutorials over there), but once you dive inside, it really opens new possibilities ! I really love chops !
  4. Pop Grain issue! Please help!

    In this case, that’s simple : - create a NULL after your sim, this where you will fetch the translation data of each point - create a CHOP network - inside the CHOP network, create a Geometry CHOP node, set it to fetch the animated tx, ty and tz and make it point to the NULL sop node you added inside your network. I let you look at the tutorial below to look at how to set it up correctly (you need to adjust some parameters like the frequency at which you sample the channels etc.) - add a filter node, that will « blur » your channels. You can adjust the width of your smooth filter. - back to your sop network, add a Channel node after the null, to fetch back the translation channels of each points. Basically, what is does, is that it takes the translation (position) of each points and consider it like a « signal » / curve. Then you can do signal processing on those curves, in that case you can smooth it. Then you re-export that and it will override the initial position of each point. Bear in mind that smoothing will kill the popping/flickering of your particles, but it will affect all other particles as well, so you need to apply that only to your popping particles. And be carefull when deleting particles : make sure you identify the particles consistently over the frames of your animation : to build the curves, the chopnet needs consistent id values over the range of sampling. Otherwise, you will mix positions of different particles and/or re-apply smoothed channels to the wrong particles and it will mess everything. Selecting the right particles to smooth the movement maybe probably the trickiest part :-)
  5. Pop Grain issue! Please help!

    Maybe you can try a POP Wrangle to « clamp » the speed of particles ? Another thing you can try is to simulate like you do as a first pass, then use CHOPS to clamp or filter/smooth the channels of positions. I use that with RBD sometimes, but with lots of points, it may be heavy...
  6. tree destruction - getting that "bendyness" into it ?

    Hi, Maybe an idea is to do it in two times : - a first where the tree isn’t broken into pieces / splinters, and maybe even just a proxy geo that you simulate with FEM, with the roots attached on the ground and your collision object to give the deformation. - then a second that starts during the first sim, at a point in time where you like the « bendyness » of your FEM tree, but using a fractured version of your tree at this step of the first simulation, using classic RBD with maybe some spring constraints to keep some « bendyness » and fluidity in the fracture... Hope this helps, although I did not opened the file (running out of time...)
  7. Small tablet or laptop for Houdini

    Hey, look at what MSI is doing on laptop workstations, with nvidia cards. I have one since 2015 and it is working like a charm. Hope this helps.
  8. VEX: get attribute values into an array

    If one wants to run it in Detail mode, one should indeed use the npoints(0) function that returns the number of points of the first stream of geo incoming in the Wrangle node. That being said, I don't see the point of running that code on Points, as it basically process the same thing npoints times :-)
  9. Packing circles of different radius

    I tried an algorithm that plays with the radius of circles given some fixed points, but it is not optimally packed. Moving the points on top of that would bring better results.... I share the file although that's not quite a good solution. To get a better solution I think it would require an algo that would be using an iterative process with both the radius and positions. packedCircles.hip
  10. Packing circles of different radius

    Interesting challenge again :-) Maybe use a point wrangle, and use nearpoints to return, for each point, the closest point surrounding it. Then store an attribute with half of the distance between the 2 points. Call it firstRadius for this example. Then in a second pass (another point wrangle) we can see if there is room to increase the firstRadius of each point, depending on the firstRadius of surrounding points. Store a list/array of, say, the 10 closest points of each points. And for each points of this list compare the distance between your current point (ptnum) and the point of the list you are iterating in, and the sum of their firstRadius attributes. Take the point for which this difference is minimal, and increase the firstRadius accordingly. Then instance a sphere or a circle with the radius stored in FirstRadius. Not sure if my explanations are clear... I haven’t tested, but I am curious to see if this works. Maybe tonight :-)
  11. UV boundaries to edges

    The way you would do your own VEX "Connectivity SOP" with "Use UV Connectivity" and therefore determine a border of your UV is by returning the list of all vertex associated with a point, and check if the UV attribute is the same for each one. If one vertex relative to a point has different UV attrobute, then the primitive it belongs to is on another island. So to compute the "class" of each island, a non optimal algorithm could be : take a primitive, assign it a "class" number attribute, list its prim neighbours (take its points, and use pointprims function to retrieve the prims containing this point); then for each points of this prim, list the vertices that refer to it; for each vertices, retrieve the prim to which it belong, and assign the same "class" number to neighbour prims only if the vertices refering to the same point have the same UV attribute. If not, skip the primitve. Iterate over all neighbours prims, and for all those prims that has the same "class", list their neighbours that hasn't been assigned a "class" (to avoid infinite loops over the same island), and apply the algorithm until there are no neighbours that (i) hasn't been assigned a class attribute or (ii) that hasn't been skiped in that loop. Then iterate on the "remaining" primitives (the ones that has not yet been assigned a class or that has been previously skipped because belonging to another island). I am pretty sure this can be run more efficiently to avoid some prims to be visited several times before being assigned a class, but this should work...
  12. UV boundaries to edges

    I think you can also use the Connectivity SOP node, with the UV function. It creates an attribute that you can later use to define groups.
  13. Extra small particle effects - flour, powdered chalk, etc

    I would definitely use a POP network to drive the biggest chunks of chalk. I would then create a particles trail to those chunks and use that as a source for a fluid/smoke sim...
  14. Break constraints problem setting attributes at sop level

    Strange it doesn’t work... maybe it is breaking and deleting the primitive correctly, but reimporting it from sop afterward ? To avoid that, check if your constraint network in SOP context (outside DOP, where the Geometry Source of you Constraint Network is pointing to) is « animated » or considered time dependent. In this case, you have to manually set Overwrite with SOP to 0 on the Constraint Network DOP node, and delete the default expression inside this parameter. In short, it will import your network once at the start, and then relationship will live only inside DOP without being updated from SOP. And check that your display flags are set correctly to your last node in SOP Solver, sometimes i make this simple mistake :-)
  15. opinput question

    The color goes to the center of the grid because the @myP is set to zero, which indicates the @opinput_P returns 0, for most of the points : don’t forget that it returns the position P of the corresponding point in your opinput1, and there is only 1 point (with id 0). As the wrangle run the code over each point, the @myP is OK for point 0, but as soon as it iterates over the points that have a number higher than zero, it can find the opinput1_P of the corresponding points in this input, because there are not. That’s why I used the point(1, « P »,0) = it stands for (input1, Position P, point number 0) Not sure if I am clear :-) The @opinput1_attribute is OK when you look for « bijective » streams of geometry in terms of topology (or at least when what you seek to do doesn’t need to reference any particular points, as in this example)