Why does MPM source need a container?
1129 5 2- LukeP
- Member
- 374 posts
- Joined: March 2009
- Offline
I’m a bit confused why we need to have container plugged into mpm solver AND referenced in the MPM Container parameter of the mpm source? That kind of breaks the pattern of what we’re used to do, no? Not to mention that t would be great (and fairly basic UX design principle) if the order of inputs remained relatively consistent between solvers, e.g. container is always on the right, collisions are always second from the right etc. Not a big deal but one of those small, unnecessarily inconsistent items.
- kodra
- Member
- 373 posts
- Joined: June 2023
- Offline
I'm not 100% sure if that's the main reason, but I believe MPM works best if all your sources have the same particle separation (size). That's why defining it once somewhere instead of on individual source is better. Making Source depends on Container makes this obvious.
Not sure why MPM Solver's input order isn't the same as FLIP Solver SOP's...
the order of inputs remained relatively consistent between solvers
Not sure why MPM Solver's input order isn't the same as FLIP Solver SOP's...
Edited by kodra - July 15, 2024 22:43:35
- AlexandreSV
- Staff
- 93 posts
- Joined: June 2023
- Offline
Hi Luke,
Thanks for your feedback.
As kodra pointed out, the sources and colliders need to be aware of the global sim resolution to defined their own resolution in an optimal manner.
That being said, there are many different ways we could have gone to get this to work. For example with FLIP and other solvers you have a stream of wires going down from the first node setting up the scene all the way to the solver. Each node takes 3 wires and you basically append more things to the scene as you go down.
This is convenient because all new nodes have access to all previous nodes' data. The downside of this approach is that your node tree look like an history stack where sources could feed into colliders, which semantically does not reflect how the data is being used.
One could argue that a direct connection between two nodes should indicate that the incoming node is required to compute the current node. Having pass-through data that are sometimes used removes a lot of meaning from the node tree itself and forces you to dive inside each node to understand what is actually happening. I agree that it is a little odd to have the mpmcontainer indirectly fed into the mpmsource and mpmcollider, but a least with this UI/UX it is very easy to visually understand how the scene is constructed by looking at the 2D structure of the node tree.
I this case, we tried a different approach to see how it would be perceived by our users. If this is better we might move other solvers toward this UI/UX. Otherwise, we might migrate MPM to be more like the other solvers. The future is in your hands
Thanks for your feedback.
As kodra pointed out, the sources and colliders need to be aware of the global sim resolution to defined their own resolution in an optimal manner.
That being said, there are many different ways we could have gone to get this to work. For example with FLIP and other solvers you have a stream of wires going down from the first node setting up the scene all the way to the solver. Each node takes 3 wires and you basically append more things to the scene as you go down.
This is convenient because all new nodes have access to all previous nodes' data. The downside of this approach is that your node tree look like an history stack where sources could feed into colliders, which semantically does not reflect how the data is being used.
One could argue that a direct connection between two nodes should indicate that the incoming node is required to compute the current node. Having pass-through data that are sometimes used removes a lot of meaning from the node tree itself and forces you to dive inside each node to understand what is actually happening. I agree that it is a little odd to have the mpmcontainer indirectly fed into the mpmsource and mpmcollider, but a least with this UI/UX it is very easy to visually understand how the scene is constructed by looking at the 2D structure of the node tree.
I this case, we tried a different approach to see how it would be perceived by our users. If this is better we might move other solvers toward this UI/UX. Otherwise, we might migrate MPM to be more like the other solvers. The future is in your hands
- LukeP
- Member
- 374 posts
- Joined: March 2009
- Offline
- BabaJ
- Member
- 2129 posts
- Joined: Sept. 2015
- Offline
AlexandreSV
I this case, we tried a different approach to see how it would be perceived by our users. If this is better we might move other solvers toward this UI/UX. Otherwise, we might migrate MPM to be more like the other solvers.
Hopefully you keep the mpm layout as is and not try to adapt to a similar layout as other solvers.
Personaly I'm finding the mpm manner of organizing ideal - Of course changes/additions to UX/functionality are always welcome - but not just to mimic other solver environments.
Edited by BabaJ - Aug. 30, 2024 17:09:28
- tamte
- Member
- 8832 posts
- Joined: July 2007
- Offline
I also prefer MPM approach compared to FLIP multi wire
Since Sources and Colliders are not technically part of the same data pair like geo and constraints in rbd or vellum so multiwire stack is more a nuissance in that case
FLIP arguably unnecessarily couples sources and colliders in a per substep basis making it very slow
I always end up sourcing FLIP colliders directly into the DOPnet to avoid this dependency especially with static and transforming colliders
So my hope is that FLIP will also inherit VDB Collider support for ease of use and optimizations in that workflow
It'd be also useful for Pyro as the current Packed colliders are tedious to set up confusing to manage and tricky to combine with other colliders
Since Sources and Colliders are not technically part of the same data pair like geo and constraints in rbd or vellum so multiwire stack is more a nuissance in that case
FLIP arguably unnecessarily couples sources and colliders in a per substep basis making it very slow
I always end up sourcing FLIP colliders directly into the DOPnet to avoid this dependency especially with static and transforming colliders
So my hope is that FLIP will also inherit VDB Collider support for ease of use and optimizations in that workflow
It'd be also useful for Pyro as the current Packed colliders are tedious to set up confusing to manage and tricky to combine with other colliders
Tomas Slancik
FX Supervisor
Method Studios, NY
FX Supervisor
Method Studios, NY
-
- Quick Links