Jump to content


  • Content count

  • Joined

  • Last visited

Community Reputation

5 Neutral

About Dam

  • Rank

Personal Information

  • Name
  • Location

Recent Profile Visitors

380 profile views
  1. Hello Neil, Unfortunately something changes in the latest houdini versions about the inherit velocity from pack objects, a working way for inject the velocity only at the activation frame it's creating an attribute containing the previous @active value ($F-1), and add that to the "override attr from sop" inside the rbdpackedobject. That field should contain (@active and the created attribute containing the previous activation value ---> @prev_active) then with a geometry wrangle or pop wrangle it's possivle comparing the two attributes and gather the velocity to inject only if those two attribute are not the same with a point expression. I'm interested however if there are other ways for doing that, somebody have any idea? --Cheers Dam
  2. Stop geometry from deforming further after Active?

    For transfer the @active or the @deforming attribute a good way is by name: pipe in the first input of a wrangle the highRes and in the second the lowRes, the code below shoud make a correct transfer of those attributes from the low to high as long the @name it's same for both pieces sets, but for deform the highRes like your lowRes, you probably would need a skinning process, this can be done using a foreach sop a point deform and @name attribute for isolate the pieces by the for loop iterations, unless you're planning a different approach - cheers Dam int pt = findattribval(1, "point", "name", s@name); // matching by name i@active = point(1, "active", pt); i@deforming = point(1, "deforming", pt);
  3. Stop geometry from deforming further after Active?

    Hi, try something like this, in a wrangle after packing the pieces and defining the @active attribute by your roules, set (i@deforming = 1-i@active) and in the rbdpackedobject node turn on the toggle (override attributes from sop) make sure you have in the string field at least (active and deforming), that should work. Cheers - Dam
  4. Pyro Sim Failing to Collide

    Try to add velocity with a trail sop before the creation of the volume "collision and collisionvel", if you switch one the visualization on collision vel, nothing happen because there is no velocity to grab from the points for fill the collision vel. that will fix the collision. Cheers
  5. Glue Constraints not falling with gravity

    Hello, I've added a "clean sop" before to pack the pieces and it fixed the problem. I believe that issue It's caused by the boolean sop, so before packing and creating constraints needs some cleanup. Cheers Dam constraints_not_falling_FIX.hipnc
  6. For micro solvers the computation order it s from left to right, after the solver generally it depends to the merge relationship.
  7. There is a wrangle "f@mask=@density" because the gas match field creates an ampity field with same size and res of density field and name "mask", but since this field it's empty yet the wrangle fills the field with the density data, my bad I should have named the wrangle fillMask. Not sure to understand the other two, do you have a specific example or simple hip? Cheers
  8. Flip collisions with VDB

    So I took a look at your latest debug, and yes the trail sop did the magic in this case. Visualizing the velocity on the RBD chunks after the unpack looks like even they don't move at the bottom of the pool the pieces have velocity pointing up and down, I guess that's why the water it's been pushed to the bottom.. I did a quick test deleting attribute @v and it's working as well, so the water collapse at the end it's caused by the incorrect velocity coming from the Dop. Good case that deserved an investigation . Popadvect should be plugged to the second input of flipS, third input accept only volume velocity. Cheers - Dam
  9. Hi Josh, have a look a this hip example, I prepared it for this post initially, But maybe can be helpful also for your case. feel free to send your hip file too so I can have look at it. Cheers - Dam Flip_TurbulenceSopScalField.hipnc
  10. Flip

    And..have a look a this too, I found this method way faster than the previous using sopScalarField for reading the maskVolume. volumesource it's a bit slower for this purpose Flip_TurbulenceSopScalField.hipnc
  11. Flip collisions with VDB

    Mmm that's interesting, as far I tested, the trail sop doesn't change the sim in my "flip_tests_testPrtSepFIX", what I changed from the original hip was: the popadvectbyvolumes I've moved it to the second input of the flipSolver, on the VDBs I've switched off fill interior.. that slow down the sim and doesn't make much difference in this case. I've changed also a couple of parameters on collision tab of the flipSolver like the collision extrapolation and at the end matching --> vdb resoltuion = collision separation = particle separation, If a simple trail sop fixed the original issue with only matching the resolutions, would be interesting see this case, can you post the updated hip with your latest debug? Cheers
  12. Flip

    Have a look at this hip - Cheers - Dam. Flip_Turbulence.hipnc
  13. Flip

    Hi Rahul, Can you send the hip file? Cheers,
  14. This is cool For the group stuff, should be something like this: @group_pts = int(@P.y % 2); @Cd.x = @group_pts; //vizGroup int maxpts = chi("MaxPoints"); int nearpnts[] = nearpoints(0, @P, @group_pts, maxpts); int maxlines = chi('MaxLines'); int cnt = 0; foreach(int pnt; nearpnts){ if(@class != pointattrib(0, 'class', pnt, 1)){ if (cnt >= maxlines){ break; } int line = addprim(0, "polyline"); addvertex(0, line, @ptnum); addvertex(0, line, pnt); cnt += 1; } } In this way only the points in the @group_pts will serch for the nearest. In a case were every point it's searched within the radius but we ask for the @group_pts before to make connection: @group_pts = int(@P.y % 2); @Cd.x = @group_pts; //vizGroup float searchrad = chf("Searchradius"); int maxpts = chi("MaxPoints"); int nearpnts[] = nearpoints(0, @P, searchrad, maxpts); int maxlines = chi('MaxLines'); int cnt = 0; foreach(int pnt; nearpnts){ if(@class != pointattrib(0, 'class', pnt, 1)) { if (cnt >= maxlines || @group_pts == 1) { break; } int line = addprim(0, "polyline"); addvertex(0, line, @ptnum); addvertex(0, line, pnt); cnt += 1; } } Cheers - Dam group_expression_near_points.hipnc