H14: where is hitimpulse?

   4571   6   0
User Avatar
Member
1694 posts
Joined: March 2020
Offline
Hi,


I can't seem to get any hitimpulse attribute from POP collisions. I attached a very simple example scene to illustrate. My question is – am I being silly and missing something very simple, or should this report it as an issue? (I enabled all collision-related POP toggles I found)

cheers
Imre Tuske
FX Supervisor | Senior FXTD @ Weta FX

qLib -- Houdini asset library
http://qlab.github.io/qLib/ [qlab.github.io]
https://www.facebook.com/qLibHoudini [www.facebook.com]
User Avatar
Staff
6160 posts
Joined: July 2005
Offline
A lot of confusion was caused by the POP Solver and the POP Collision Detect using different approaches to collision detection. To unify these, and make sliding on static objects more robust, we changed the pop solver to use pop collision detect rather than impacts.

hitimpulse is only created if you have impact data (which is off by default now to save memory/gain speed)

So, to get hitmpluse back:
1) Turn on Add Impact Data on POP Solver
2) Add a Gas Impact to Attribute solver to copy the values into particles.
User Avatar
Member
1694 posts
Joined: March 2020
Offline
Thanks Jeff for the rapid answer.

Do you think it's reasonable to ask an RFE for a convenience switch (e.g. “Add Hit Impulse Attribute”) for this on the POP Solver? This change effectively makes us remember another “workaround” (not mentioning it break backwards compatibility for some popnets).

Besides, the attribute help page ( http://www.sidefx.com/docs/houdini14.0/dopparticles/attributes [sidefx.com] ) doesn't say anything – might be a good idea to mention how this attribute can be accessed.

(Although I'd rather prefer the switch on the solver, or something similar.)
Imre Tuske
FX Supervisor | Senior FXTD @ Weta FX

qLib -- Houdini asset library
http://qlab.github.io/qLib/ [qlab.github.io]
https://www.facebook.com/qLibHoudini [www.facebook.com]
User Avatar
Staff
6160 posts
Joined: July 2005
Offline
I've added a note in the docs there.

A worry about add hitimpulse is that care must be taken not to overwrite the other attributes created. Please do submit an RFE, however.
User Avatar
Member
1694 posts
Joined: March 2020
Offline
Okay.

Btw, today I happened to do something related (particle sims with/without impact data), and particle-geometry collision feels way faster in H14 than before (I had a heavy collision geo and quite some substepping, and the difference was noticeable). Which is great news, and really appreciated
Imre Tuske
FX Supervisor | Senior FXTD @ Weta FX

qLib -- Houdini asset library
http://qlab.github.io/qLib/ [qlab.github.io]
https://www.facebook.com/qLibHoudini [www.facebook.com]
User Avatar
Staff
809 posts
Joined: July 2006
Offline
riviera
Btw, today I happened to do something related (particle sims with/without impact data), and particle-geometry collision feels way faster in H14 than before (I had a heavy collision geo and quite some substepping, and the difference was noticeable). Which is great news, and really appreciated

Yes, we did some significant optimization of particle / SDF collisions. Glad to hear you're seeing an improvement! I've included my post from the Beta forum describing some of the changes and including a file that shows the difference pretty starkly:

From the beta forum:
———————————————

Tomorrow's build(14.0.184) has the following change:

Houdini journal
Houdini 14.0.184: Mon Dec 15 15:06:54 CST 2014
Particle / SDF collisions have been optimized, improving collision
performance and decreasing DOP cache memory for the POP, POP Grains,
Whitewater and FLIP Solvers:
- Particle / SDF collision impulse calculation has been optimized and
multithreaded.
- The GasIntegrator, POP Solver, and POP Grains DOPs have a new
Add Impacts Data parameter that controls whether the particle object
receives Impact data, defaulting to off.
- Particle collisions now only create Feedback data on actively solved
collider objects, not static ones, similar to the RBD solver.
- Collision velocity lookup in the GasCollisionDetect DOP has been optimized.

Basically we've optimized particle/SDF collision response and changed some default behavior to decrease DOPnet cache memory use in typical particle scenarios. If you have the chance, please test tomorrow's build with some typical particle collision workflows to look for any strangeness.

Generally you should just see much better performance for setups involving lots of collisions, but there are two other slightly controversial changes that we'd like to hear opinions on as soon as possible.

1) By default we no longer create Impacts data on particle objects. This was required in H13 to get hit attributes via GasImpactsToAttributes, but in H14 the attributes are created by GasCollisionDetect, so Impacts data is usually just taking up time and space. There is a new option to enable Impact creation.

2) We no longer create Feedback data on static objects. Before this change, every particle impact with something like a static groundplane created a Feedback record, which was fairly wasteful as it could never have an effect. Now we only create Feedback on actively solved objects, similar to the RBD solver.

As an example, the attached file emits particles onto a groundplane and RBD box with feedback. In 14.0.182, advancing to frame 100 takes 190 seconds and 2038 MB DOPnet cache memory. In 14.0.184 with this change, it takes 21 seconds and 770 MB cache memory.

POP Grains particularly benefit, since we can take a very fast path with them when all Impact creation is off. For typical big sand sims the collision processing should be down below 5% now, even with a fast GPU solving the constraints.

Attachments:
test_colfeedback.hip (393.0 KB)

User Avatar
Member
1694 posts
Joined: March 2020
Offline
Bah, in the meantime I realized that I even read this on the beta forum. I just completely forgot about it in the meantime. (Especially the hitimpulse part).

What I use this for is to “jitter” bounces (apply some random rotation to particle velocity around the hit normal), basically simulating bumpy terrain/particle interaction. I use hitimpulse to separate particles that are practically rolling (small bounces) so they won't get randomized.

https://www.facebook.com/video.php?v=925742647459520&set=vb.145692112131248 [facebook.com]

(I nicked the idea from a 3dsmax particle system, heh heh and it often comes very handy. So I'm planning to take another look of which other convenience features to “borrow” )

Anyway, I was thinking of trying to replace the hitimpulse with a simple velocity magnitude checking, and see how that works out.
Imre Tuske
FX Supervisor | Senior FXTD @ Weta FX

qLib -- Houdini asset library
http://qlab.github.io/qLib/ [qlab.github.io]
https://www.facebook.com/qLibHoudini [www.facebook.com]
  • Quick Links