Adding a new rigid body to the world
In cram/cram_3d_world/cram_bullet_reasoning/src/objects.lisp:
(defmethod add-object ((world bt-world) (type (eql :liquid-minor)) name pose &key (mass 0.00001) (radius 0.01) color) (make-item world name (list type) (list (make-instance 'rigid-body :name 'waterdrop :mass mass :pose (ensure-pose pose) :collision-shape (make-instance 'colored-sphere-shape :radius radius :color color)) )))
The type of this rigid body should be associated with liquid-minor, change this to your liking. The name should also be different in this example it is waterdrop. The collision shape is important for the whole shape of the new body. You can choose between the following:
(defclass colored-cylinder-shape (cylinder-shape colored-shape-mixin) ()) (defclass colored-static-plane-shape (static-plane-shape colored-shape-mixin) ()) (defclass colored-sphere-shape (sphere-shape colored-shape-mixin) ()) (defclass colored-cone-shape (cone-shape colored-shape-mixin) ()) (defclass colored-compound-shape (compound-shape colored-shape-mixin) ()) (defclass colored-convex-hull-shape (convex-hull-shape colored-shape-mixin) ())
Now you can spawn the rigid body as a new object in the bullet world via:
(btr::add-object btr:*current-bullet-world* :liquid-minor name pose :color '(0 1 0 0.5))