What kind of interaction do you want between the two objects? Different approaches will likely lead to different results. Also keep in mind that you're going to need a very high iteration number and small time step for the solver to be able to always keep the objects glued.
I suggest you build a single, heterogeneous, soft body by using different masses for the nodes and stiffness values for the links.
const btVector3 c[] =
{
btVector3(+1,-1,-1),
btVector3(+1,+1,-1),
btVector3(+1,-1,+1),
btVector3(+1,+1,+1),
btVector3(-1,-1,-1),
btVector3(-1,-1,+1),
btVector3(-1,+1,+1),
btVector3(-1,+1,-1),
btVector3(+2,-1,-1), // "Other" cube starts here
btVector3(+2,+1,-1),
btVector3(+2,-1,+1),
btVector3(+2,+1,+1)
};
// Masses, should be tuned depending on gravity/timestep
const btScalar m[] =
{
0.1f,
0.1f,
0.1f,
0.1f,
0.1f,
0.1f,
0.1f,
0.1f,
0.1f,
0.1f,
0.1f,
0.1f
};
btSoftBody* psb = new btSoftBody(pdemo->m_softBodyWorldInfo,12,c,m);
// VERY stiff material
btSoftBody::Material aMat;
aMat.m_kLST = 1; // Linear stiffness coefficient [0,1]
aMat.m_kAST = 0; // Area/Angular stiffness coefficient [0,1]
aMat.m_kVST = 1; // Volume stiffness coefficient [0,1]
// Softer material
btSoftBody::Material bMat;
bMat.m_kLST = 0.5f; // Linear stiffness coefficient [0,1]
bMat.m_kAST = 0; // Area/Angular stiffness coefficient [0,1]
bMat.m_kVST = 0.5f; // Volume stiffness coefficient [0,1]
for(int i=0; i < 12; ++i)
{
for(int j = i + 1; j < 12; ++j)
{
// If either node has x==+2, use softer material
psb->appendLink(i,j, (i > 7 || j > 7) ? &bMat : &aMat, false);
}
}
This should get you started. Good luck!