Houdini for product design risk assessment
1797 8 2- amstel_1998
- Member
- 5 posts
- Joined: 6月 2024
- Offline
Hello all -first post!
I’m considering investing in Houdini (both $$ and a lot of time!) but have a particular need and wasn’t sure if Houdini has the capability or not.
I’m a product designer and I’m working on a particular product that could occasionally get dropped while in use. I’m trying to learn how likely it is that one component of this design could make contact with other objects when it’s dropped. I’m NOT looking to understand the severity of the drop (I’ll use ANSYS or Abaqus for that) but just the frequency of contact. The idea is to use Houdini to randomize starting rotational & translational components and have the simulation (rigid body) run thousands of times, each time slightly unique and some how get a report on how many times that surface contacted another surface. Is something like this possible? I guess you could pretend the object was a camera and it was the lens you wanted to learn about hitting things when it was dropped as an example. Thanks in advance!
I’m considering investing in Houdini (both $$ and a lot of time!) but have a particular need and wasn’t sure if Houdini has the capability or not.
I’m a product designer and I’m working on a particular product that could occasionally get dropped while in use. I’m trying to learn how likely it is that one component of this design could make contact with other objects when it’s dropped. I’m NOT looking to understand the severity of the drop (I’ll use ANSYS or Abaqus for that) but just the frequency of contact. The idea is to use Houdini to randomize starting rotational & translational components and have the simulation (rigid body) run thousands of times, each time slightly unique and some how get a report on how many times that surface contacted another surface. Is something like this possible? I guess you could pretend the object was a camera and it was the lens you wanted to learn about hitting things when it was dropped as an example. Thanks in advance!
- BabaJ
- Member
- 2129 posts
- Joined: 9月 2015
- Offline
Short Answer: Yes this is possible.
Potential Caveats: For RBD collisions, the more 'refined' and 'accurate' the object collisions are, the more time intensive the simulation will take. So if your needing to refine your product in terms of the model dimensions, based on your RBD results, this may be an extremely long process.(depends on the complexity of your product model).
However, you could do RBD sims not so detailed which can give you many more general 'results' - just to get you in the ballpark after which you could do shorter segment sims that target 'hits' more specifically, with a RBD solver, or even your own set up determining interactions using TOPs.
Also, you could first test the waters with an apprentice version so you don't have to pay, except for your time in looking at how to set up what you intend to do.
Potential Caveats: For RBD collisions, the more 'refined' and 'accurate' the object collisions are, the more time intensive the simulation will take. So if your needing to refine your product in terms of the model dimensions, based on your RBD results, this may be an extremely long process.(depends on the complexity of your product model).
However, you could do RBD sims not so detailed which can give you many more general 'results' - just to get you in the ballpark after which you could do shorter segment sims that target 'hits' more specifically, with a RBD solver, or even your own set up determining interactions using TOPs.
Also, you could first test the waters with an apprentice version so you don't have to pay, except for your time in looking at how to set up what you intend to do.
Edited by BabaJ - 2024年6月4日 12:46:51
- amstel_1998
- Member
- 5 posts
- Joined: 6月 2024
- Offline
- animatrix_
- Member
- 4726 posts
- Joined: 2月 2012
- Offline
You can definitely do it.
Not exactly identical problem but I used Houdini when I was at Lyft to find optimal sensor placement configurations for self driving before. It does help reduce the trial and error the engineers used to do before.
Not exactly identical problem but I used Houdini when I was at Lyft to find optimal sensor placement configurations for self driving before. It does help reduce the trial and error the engineers used to do before.
Senior FX TD @ Industrial Light & Magic
Get to the NEXT level in Houdini & VEX with Pragmatic VEX! [www.pragmatic-vfx.com]
youtube.com/@pragmaticvfx | patreon.com/animatrix | pragmaticvfx.gumroad.com
Get to the NEXT level in Houdini & VEX with Pragmatic VEX! [www.pragmatic-vfx.com]
youtube.com/@pragmaticvfx | patreon.com/animatrix | pragmaticvfx.gumroad.com
- amstel_1998
- Member
- 5 posts
- Joined: 6月 2024
- Offline
Update & question.
I’ve spent the last couple months learning the basics of Houdini so I could better ask my questions and hopefully understand the answers. It’s been almost like learning a new language that had a different alphabet to learn first but I’m getting there.
The Tops suggestion was spot on and I’ve learned a lot about RBD sims (still lots to learn). I have a sim that can randomize the starting conditions & have tops manage the iterations. I also have the object colliding and behaving as I would expect when it is virtually dropped.
The two outages I still have:
1. How do I detect when the particular face of the object I’m dropping contacts something (see original post for the camera analogy -it’s the “lens” I care about).
2. If the sim is going to run several thousand iterations, how can it report back the results? Ideally it would let me know the fragile surface in question hit other objects X number of times out of 1000 drops.
Thanks in advance!
-Rob
I’ve spent the last couple months learning the basics of Houdini so I could better ask my questions and hopefully understand the answers. It’s been almost like learning a new language that had a different alphabet to learn first but I’m getting there.
The Tops suggestion was spot on and I’ve learned a lot about RBD sims (still lots to learn). I have a sim that can randomize the starting conditions & have tops manage the iterations. I also have the object colliding and behaving as I would expect when it is virtually dropped.
The two outages I still have:
1. How do I detect when the particular face of the object I’m dropping contacts something (see original post for the camera analogy -it’s the “lens” I care about).
2. If the sim is going to run several thousand iterations, how can it report back the results? Ideally it would let me know the fragile surface in question hit other objects X number of times out of 1000 drops.
Thanks in advance!
-Rob
- npetit
- スタッフ
- 413 posts
- Joined: 2月 2008
- Offline
For 1), on the RBD Bullet Solver node, in the output tab, enable Impact Data. Press the "Fetch Impacts" button - this will create a object merge pointing to the impact points from the sim.
With these points, impactobject and parentobject attributes tell you which objects are involved in the impact event.
Ground, when ground or heightfield collisions are enabled, is always 0
Collision Geometry (plugged into the 4th input) is 1 when ground collisions are enabled else 0
RBD Geometry is 2 when collisions and ground collisions are enabled, 1 when only collisions or ground collisions are enabled, or 0 when neither collisions nor ground collisions are enabled.
The impactprimnum and parentprimnum tell you which prims from their respective ground/collision/rbds objects are involved in the impact.
So, say you have 3 RBD pieces (object 1), a box (primnum 0), a sphere (primnum 1) and a lense (primnum 2), falling on top of one another and a ground collision (object 0), if you want to find all impacts that involve the lense, you'll have to find all impact points that have
(@impactobject==1 and @impactprimnum==2) or (@parentobject==1 and @parentprimnum==2)
With these points, impactobject and parentobject attributes tell you which objects are involved in the impact event.
Ground, when ground or heightfield collisions are enabled, is always 0
Collision Geometry (plugged into the 4th input) is 1 when ground collisions are enabled else 0
RBD Geometry is 2 when collisions and ground collisions are enabled, 1 when only collisions or ground collisions are enabled, or 0 when neither collisions nor ground collisions are enabled.
The impactprimnum and parentprimnum tell you which prims from their respective ground/collision/rbds objects are involved in the impact.
So, say you have 3 RBD pieces (object 1), a box (primnum 0), a sphere (primnum 1) and a lense (primnum 2), falling on top of one another and a ground collision (object 0), if you want to find all impacts that involve the lense, you'll have to find all impact points that have
(@impactobject==1 and @impactprimnum==2) or (@parentobject==1 and @parentprimnum==2)
- amstel_1998
- Member
- 5 posts
- Joined: 6月 2024
- Offline
I've made some progress based on the above responses but I'm stuck again on a TOPS issue.
To keep things simple for now I'm just dropping a ball onto a grid. I have a wedge in tops that moves the ball to the side a little bit but still over the grid for 2 of the 3 wedges. The third wedge is intentionally positioning the sphere so it will miss the grid when dropped as a means of debugging this whole setup.
The collision detection works (thank you @npetit) in the attribute spreadsheet (my attribute I've named hit_event sets to 1 via attribute wrangle if there is a non zero value to impacttime).
Where I'm stuck is having TOPS run the drop simulation and having the hit_event get set to 1 when it impacts the grid as it will for wedges 1 and 2. I just get zeros. The .hip file I've attached doesn't have a ropgeometry import node right now but I've tried for hours to get that in there and work but just not sure how to do it.
Any help would be greatly appreciated!!
Thanks in advance!
Couple images:
To keep things simple for now I'm just dropping a ball onto a grid. I have a wedge in tops that moves the ball to the side a little bit but still over the grid for 2 of the 3 wedges. The third wedge is intentionally positioning the sphere so it will miss the grid when dropped as a means of debugging this whole setup.
The collision detection works (thank you @npetit) in the attribute spreadsheet (my attribute I've named hit_event sets to 1 via attribute wrangle if there is a non zero value to impacttime).
Where I'm stuck is having TOPS run the drop simulation and having the hit_event get set to 1 when it impacts the grid as it will for wedges 1 and 2. I just get zeros. The .hip file I've attached doesn't have a ropgeometry import node right now but I've tried for hours to get that in there and work but just not sure how to do it.
Any help would be greatly appreciated!!
Thanks in advance!
Couple images:
Edited by amstel_1998 - 2024年12月9日 18:50:05
- amstel_1998
- Member
- 5 posts
- Joined: 6月 2024
- Offline
- yolandac
- スタッフ
- 4 posts
- Joined: 4月 2021
- Offline
Howdy,
I have added a transform to the sphere so there is a transformation that is driven by a wedge value. I gave it a range.
Then I made the RBD solver editable and I added the IMPACT POINTS NULL to a merge so it would come out through the 4th output (simulation points). The obj merge node should work but somehow it does not. A bug will be submitted for that but in the meantime this works.
I then used the same attribute wrangled VEX code you had and after, deleted everything but hit_event.
I used an attribute promote to now promote it to detail level since I will need that on tops.
And I used a ROP geometry node to drive the file caching of different simulations driven by the wedges in TOPs.
Everything else I think is self explanatory but let me know if you have any more questions.
Yolanda.
I have added a transform to the sphere so there is a transformation that is driven by a wedge value. I gave it a range.
Then I made the RBD solver editable and I added the IMPACT POINTS NULL to a merge so it would come out through the 4th output (simulation points). The obj merge node should work but somehow it does not. A bug will be submitted for that but in the meantime this works.
I then used the same attribute wrangled VEX code you had and after, deleted everything but hit_event.
I used an attribute promote to now promote it to detail level since I will need that on tops.
And I used a ROP geometry node to drive the file caching of different simulations driven by the wedges in TOPs.
Everything else I think is self explanatory but let me know if you have any more questions.
Yolanda.
Image Not Found
Edited by yolandac - 2024年12月10日 16:44:01
-
- Quick Links