Soft Body collision

When I make multiple tri-mesh soft body nodes in the scene, they don’t react with one another. Unlike rigid bodies, the soft body nodes don’t collide with each other. With a bit of searching up, there isn’t any examples of solutions. I do know in blender you have to combine the meshes for the soft body parts to collide. How would I do this in panda3d but still have the ability to control each soft body node independently while also combining the mesh so the bodies interact?

My brief test shows that this is the case.

from direct.showbase.ShowBase import ShowBase

from panda3d.core import NodePath
from panda3d.bullet import BulletWorld, BulletPlaneShape, BulletRigidBodyNode, BulletSoftBodyNode

class Game(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)

        self.world = BulletWorld()
        self.world.set_gravity((0, 0, -9.81))

        bullet_node_ground = BulletRigidBodyNode('ground')
        bullet_node_ground.add_shape(BulletPlaneShape((0, 0, 1), 0))
        self.world.attach_rigid_body(bullet_node_ground)

        model = loader.load_model('smiley.egg')
        model1 = loader.load_model('smiley.egg')

        geom = model.get_child(0).node().modify_geom(0)
        bullet_soft = BulletSoftBodyNode.make_tri_mesh(self.world.get_world_info(), geom)
        bullet_soft.link_geom(geom)
        bullet_soft.generate_bending_constraints(3)
        bullet_soft.get_cfg().set_positions_solver_iterations(2)
        bullet_soft.randomize_constraints()
        bullet_soft.set_total_mass(50, True)
        self.world.attach_soft_body(bullet_soft)

        model_soft = NodePath(bullet_soft)
        model_soft.set_pos((0, 10, 5))
        model_soft.reparent_to(render)
        model.reparent_to(model_soft)


        geom1 = model1.get_child(0).node().modify_geom(0)
        bullet_soft1 = BulletSoftBodyNode.make_tri_mesh(self.world.get_world_info(), geom1)
        bullet_soft1.link_geom(geom1)
        bullet_soft1.generate_bending_constraints(3)
        bullet_soft1.get_cfg().set_positions_solver_iterations(2)
        bullet_soft1.randomize_constraints()
        bullet_soft1.set_total_mass(50, True)
        self.world.attach_soft_body(bullet_soft1)

        model_soft_1 = NodePath(bullet_soft1)
        model_soft_1.set_pos((0, 10, 1))
        model_soft_1.reparent_to(render)
        model_soft_1.set_color((0, 1, 0, 1))
        model1.reparent_to(model_soft_1)

        taskMgr.add(self.update, 'updateWorld')

    def update(self, task):
        self.world.do_physics(base.clock.get_dt(), 10, 0.008)
        return task.cont

game = Game()
game.run()

Manual
Warning: Bullet soft body support within Panda3D is at an early stage. Use it with care. It is also highly recommended to keep the original Bullet documentation close at hand, in order to find the right values e. g. for cluster or collision configuration.

I think this may explain this phenomenon.