diff options
Diffstat (limited to 'examples3d')
| -rw-r--r-- | examples3d/all_examples3.rs | 5 | ||||
| -rw-r--r-- | examples3d/debug_multibody_ang_motor_pos3.rs | 31 |
2 files changed, 36 insertions, 0 deletions
diff --git a/examples3d/all_examples3.rs b/examples3d/all_examples3.rs index 851bc8a..1bc8419 100644 --- a/examples3d/all_examples3.rs +++ b/examples3d/all_examples3.rs @@ -38,6 +38,7 @@ mod debug_chain_high_mass_ratio3; mod debug_cube_high_mass_ratio3; mod debug_internal_edges3; mod debug_long_chain3; +mod debug_multibody_ang_motor_pos3; mod joint_motor_position3; mod keva3; mod locked_rotations3; @@ -149,6 +150,10 @@ pub fn main() { debug_shape_modification3::init_world, ), ("(Debug) deserialize", debug_deserialize3::init_world), + ( + "(Debug) multibody ang. motor pos.", + debug_multibody_ang_motor_pos3::init_world, + ), ]; // Lexicographic sort, with stress tests moved at the end of the list. diff --git a/examples3d/debug_multibody_ang_motor_pos3.rs b/examples3d/debug_multibody_ang_motor_pos3.rs new file mode 100644 index 0000000..60c820d --- /dev/null +++ b/examples3d/debug_multibody_ang_motor_pos3.rs @@ -0,0 +1,31 @@ +use rapier3d::prelude::*; +use rapier_testbed3d::Testbed; + +pub fn init_world(testbed: &mut Testbed) { + let mut bodies = RigidBodySet::new(); + let mut colliders = ColliderSet::new(); + let impulse_joints = ImpulseJointSet::new(); + let mut multibody_joints = MultibodyJointSet::new(); + + let ground = RigidBodyBuilder::fixed().translation(vector![0.0, 0.0, 0.0]); + let body = bodies.insert(ground); + let collider = ColliderBuilder::cuboid(1.0, 1.0, 1.0); + colliders.insert_with_parent(collider, body, &mut bodies); + + let rigid_body = RigidBodyBuilder::dynamic().position(Isometry::translation(0.0, 1.0, 0.0)); + let body_part = bodies.insert(rigid_body); + let collider = ColliderBuilder::cuboid(1.0, 1.0, 1.0).density(1.0); + colliders.insert_with_parent(collider, body_part, &mut bodies); + + let joint = SphericalJointBuilder::new() + .local_anchor1(point![0.0, 4.0, 0.0]) + .local_anchor2(point![0.0, 0.0, 0.0]) + .motor_position(JointAxis::AngX, 1.0, 1000.0, 200.0) + .motor_position(JointAxis::AngY, 0.0, 1000.0, 200.0) + .motor_position(JointAxis::AngZ, 0.0, 1000.0, 200.0); + + multibody_joints.insert(body, body_part, joint, true); + + testbed.set_world(bodies, colliders, impulse_joints, multibody_joints); + testbed.look_at(point![20.0, 0.0, 0.0], point![0.0, 0.0, 0.0]); +} |
