class BulletSoftBodyNode

Bases: BulletBodyNode

Inheritance diagram

Inheritance diagram of BulletSoftBodyNode

void add_force(LVector3 const &force)
void add_force(LVector3 const &force, int node)


void add_velocity(LVector3 const &velocity)
void add_velocity(LVector3 const &velocity, int node)
void append_anchor(int node, BulletRigidBodyNode *body, bool disable = false)
void append_anchor(int node, BulletRigidBodyNode *body, LVector3 const &pivot, bool disable = false)


void append_angular_joint(BulletBodyNode *body, LVector3 const &axis, PN_stdfloat erp = 1.0, PN_stdfloat cfm = 1.0, PN_stdfloat split = 1.0, BulletSoftBodyControl *control = nullptr)
void append_linear_joint(BulletBodyNode *body, int cluster, PN_stdfloat erp = 1.0, PN_stdfloat cfm = 1.0, PN_stdfloat split = 1.0)
void append_linear_joint(BulletBodyNode *body, LPoint3 const &pos, PN_stdfloat erp = 1.0, PN_stdfloat cfm = 1.0, PN_stdfloat split = 1.0)


BulletSoftBodyMaterial append_material(void)
LVecBase3 cluster_com(int cluster) const
void generate_bending_constraints(int distance, BulletSoftBodyMaterial *material = nullptr)
void generate_clusters(int k, int maxiterations = 8192)


BoundingBox get_aabb(void) const
BulletSoftBodyConfig get_cfg(void)
static TypeHandle get_class_type(void)
int get_closest_node_index(LVecBase3 point, bool local)

Returns the index of the node which is closest to the given point. The distance between each node and the given point is computed in world space if local=false, and in local space if local=true.

PN_stdfloat get_mass(int node) const
BulletSoftBodyMaterial get_material(int idx) const
BulletSoftBodyNodeElement get_node(int idx) const
int get_num_clusters(void) const
int get_num_materials(void) const




int get_num_nodes(void) const




PN_stdfloat get_total_mass(void) const
PN_stdfloat get_volume(void) const
LVector3 get_wind_velocity(void) const
BulletSoftBodyWorldInfo get_world_info(void)


static PointerTo<BulletSoftBodyNode> make_ellipsoid(BulletSoftBodyWorldInfo &info, LPoint3 const &center, LVecBase3 const &radius, int res)
static PointerTo<BulletSoftBodyNode> make_patch(BulletSoftBodyWorldInfo &info, LPoint3 const &corner00, LPoint3 const &corner10, LPoint3 const &corner01, LPoint3 const &corner11, int resx, int resy, int fixeds, bool gendiags)
static PointerTo<BulletSoftBodyNode> make_rope(BulletSoftBodyWorldInfo &info, LPoint3 const &from, LPoint3 const &to, int res, int fixeds)


static PointerTo<BulletSoftBodyNode> make_tet_mesh(BulletSoftBodyWorldInfo &info, PTA_LVecBase3 points, PTA_int indices, bool tetralinks = true)
static PointerTo<BulletSoftBodyNode> make_tet_mesh(BulletSoftBodyWorldInfo &info, char const *ele, char const *face, char const *node)
static PointerTo<BulletSoftBodyNode> make_tri_mesh(BulletSoftBodyWorldInfo &info, Geom const *geom, bool randomizeConstraints = true)
static PointerTo<BulletSoftBodyNode> make_tri_mesh(BulletSoftBodyWorldInfo &info, PTA_LVecBase3 points, PTA_int indices, bool randomizeConstraints = true)
void randomize_constraints(void)
void release_cluster(int index)
void release_clusters(void)
void set_mass(int node, PN_stdfloat mass)
void set_pose(bool bvolume, bool bframe)
void set_total_density(PN_stdfloat density)
void set_total_mass(PN_stdfloat mass, bool fromfaces = false)
void set_velocity(LVector3 const &velocity)
void set_volume_density(PN_stdfloat density)
void set_volume_mass(PN_stdfloat mass)

Mass, volume, density

void set_wind_velocity(LVector3 const &velocity)