aboutsummaryrefslogtreecommitdiff
path: root/benchmarks3d
diff options
context:
space:
mode:
authorSébastien Crozet <developer@crozet.re>2022-12-11 18:38:18 +0100
committerGitHub <noreply@github.com>2022-12-11 18:38:18 +0100
commit8fa2a61249a60d6fc6440ef29f66a83f01585e54 (patch)
tree8fed8828dcc9337a5fdc65580344f8bf12983ab4 /benchmarks3d
parentc600549aacbde1361eba862b34a23f63d806d6a9 (diff)
parenta1e255dbcdbfde270df32eeda59360493649c73f (diff)
downloadrapier-8fa2a61249a60d6fc6440ef29f66a83f01585e54.tar.gz
rapier-8fa2a61249a60d6fc6440ef29f66a83f01585e54.tar.bz2
rapier-8fa2a61249a60d6fc6440ef29f66a83f01585e54.zip
Merge pull request #427 from dimforge/disable
Add enable/disable, incremental query pipeline, and vehicle character contoller
Diffstat (limited to 'benchmarks3d')
-rw-r--r--benchmarks3d/all_benchmarks3.rs2
-rw-r--r--benchmarks3d/many_static3.rs52
2 files changed, 54 insertions, 0 deletions
diff --git a/benchmarks3d/all_benchmarks3.rs b/benchmarks3d/all_benchmarks3.rs
index 6a3f756..bca730b 100644
--- a/benchmarks3d/all_benchmarks3.rs
+++ b/benchmarks3d/all_benchmarks3.rs
@@ -20,6 +20,7 @@ mod joint_fixed3;
mod joint_prismatic3;
mod joint_revolute3;
mod keva3;
+mod many_static3;
mod pyramid3;
mod stacks3;
mod trimesh3;
@@ -54,6 +55,7 @@ pub fn main() {
("CCD", ccd3::init_world),
("Compound", compound3::init_world),
("Convex polyhedron", convex_polyhedron3::init_world),
+ ("Many static", many_static3::init_world),
("Heightfield", heightfield3::init_world),
("Stacks", stacks3::init_world),
("Pyramid", pyramid3::init_world),
diff --git a/benchmarks3d/many_static3.rs b/benchmarks3d/many_static3.rs
new file mode 100644
index 0000000..3a0dbea
--- /dev/null
+++ b/benchmarks3d/many_static3.rs
@@ -0,0 +1,52 @@
+use rapier3d::prelude::*;
+use rapier_testbed3d::Testbed;
+
+pub fn init_world(testbed: &mut Testbed) {
+ /*
+ * World
+ */
+ let mut bodies = RigidBodySet::new();
+ let mut colliders = ColliderSet::new();
+ let impulse_joints = ImpulseJointSet::new();
+ let multibody_joints = MultibodyJointSet::new();
+
+ /*
+ * Create the balls
+ */
+ let num = 50;
+ let rad = 1.0;
+
+ let shift = rad * 2.0 + 1.0;
+ let centerx = shift * (num as f32) / 2.0;
+ let centery = shift / 2.0;
+ let centerz = shift * (num as f32) / 2.0;
+
+ for i in 0..num {
+ for j in 0usize..num {
+ for k in 0..num {
+ let x = i as f32 * shift - centerx;
+ let y = j as f32 * shift + centery;
+ let z = k as f32 * shift - centerz;
+
+ let status = if j < num - 1 {
+ RigidBodyType::Fixed
+ } else {
+ RigidBodyType::Dynamic
+ };
+ let density = 0.477;
+
+ // Build the rigid body.
+ let rigid_body = RigidBodyBuilder::new(status).translation(vector![x, y, z]);
+ let handle = bodies.insert(rigid_body);
+ let collider = ColliderBuilder::ball(rad).density(density);
+ colliders.insert_with_parent(collider, handle, &mut bodies);
+ }
+ }
+ }
+
+ /*
+ * Set up the testbed.
+ */
+ testbed.set_world(bodies, colliders, impulse_joints, multibody_joints);
+ testbed.look_at(point![100.0, 100.0, 100.0], Point::origin());
+}