Maximalist

Maximalist

About Me

Connect

LOCATION
Not Specified
WEBSITE

Houdini Skills

Availability

Not Specified

Recent Forum Posts

Cloth - rigid body collision detection in C++ April 2, 2012, 5:43 p.m.

Michiel,

Thank you for your helpful reply. The cloth solver that I am implementing is based on a paper that does not explain the collision resolution step (the algorithm is meant to be used together with other existing components), so my goal was to try to use Houdini's built in collision algorithms somehow (for example classes such as RBD_ColliderSDF), together with some additional custom logic, rather than creating collision handlers from scratch. I don't know if this is even possible (I can't quite figure it out from the HDK documentation).

I think perhaps as an alternative I might try to plug in an existing collision detection library such as Bullet.

Cloth - rigid body collision detection in C++ April 2, 2012, 7:47 a.m.

I have investigated the API components I mentioned in my previous message, but still don't understand enough to make use of them. Here are some further comments and questions:

1. I believe I understand how to make use of SIM_Solver::getDefaultColliderSubclass, SIM_Solver::getDefaultColliderSubclass, and SIM_ColliderLabel for assigning which colliders the solver should use. However, I still don't understand how to actually make use of built-in collider classes (e.g. what sub-data does each object need, etc.).

2. It seems that SIM_ColliderBFA is used for cloth-cloth collision (or thin-plate rigid body collision), but not for volume-cloth. Furthermore, it can't be instantiated via SIM_DATA_CREATE as it isn't “registered” (it doesn't appear to have a data factory). I have managed to create instances of some other colliders.

3. How is volume-cloth collision done? Is it with one of the available SIM_Collider subclasses, and if so, which one? How can I set up my own objects to make use of this collider?

4. Which solver is responsible for the various collisions when multiple solvers are involved? For example, if I set up a collision relation between a static rigid body and an active one, what are the collision resolution responsibilities of the static solver and what are the responsibilities of the active solver?

Cloth - rigid body collision detection in C++ March 24, 2012, 2:53 p.m.

Slight update: I just found out about the SIM_ColliderInfo class, along with SIM_ColliderLabel and the SIM_Object::getCollider function. It appears that these (in particular SIM_ColliderInfo) are the key entry points of the collision detection functionality. I will explore these and post the results of my investigation.

I also forgot to mention in my first post that I'm using Houdini 11 at the moment.