private List <Joint> create_joints(int N) { List <Joint> joints = new List <Joint>(); for (int i = 0; i < N; i++) { HingeJoint joint = new HingeJoint(); joint.Name = String.Format("j{0}", i); joint.Motor__enable = true; joint.Motor__targetVelocity = 1F; joint.Motor__maxImpulse = 1024F; joint.AngularLimit__softness = 0.1F; joint.AngularLimit__bias = 0.99F; joint.AngularLimit__relaxation = 0.1F; joint.Params__bias = 0.99F; MeshInstance joint_ind = generate_joint_mesh(String.Format("{0}_indicator", joint.Name)); joint.AddChild(joint_ind); joints.Add(joint); } return(joints); }
private static List <Joint> generate_joints() { List <Joint> joints = new List <Joint>(); DEBUG_PRINT("Generating joints..."); for (int i = 0; i < joint_count; i++) { HingeJoint joint = new HingeJoint(); joint.Name = String.Format("j{0}", i); joint.Motor__enable = true; joint.Motor__targetVelocity = 1F; joint.Motor__maxImpulse = 1024F; joint.AngularLimit__bias = 0.99F; joint.AngularLimit__softness = 0.1F; joint.AngularLimit__relaxation = 0.1F; joint.Params__bias = 0.99F; MeshInstance joint_indicator = generate_joint_mesh( String.Format("{0}_indicator", joint.Name) ); joint.AddChild(joint_indicator); joints.Add(joint); } DEBUG_PRINT("Finished joint generation."); return(joints); }
private void Generate2DoFArmHelper() { GD.Print("Creating arm with code..."); StaticBody base_node = generate_static("Arm"); MeshInstance base_mesh_node = new MeshInstance(); base_mesh_node.Name = "base_mesh"; CubeMesh base_mesh = new CubeMesh(); Vector3 base_sizes = new Vector3(.7F, .2F, .7F); base_mesh.Size = base_sizes; base_mesh_node.Mesh = base_mesh; HingeJoint j0 = new HingeJoint(); j0.Name = "j0"; j0.AngularLimit__enable = false; j0.Motor__enable = true; j0.Motor__targetVelocity = 1F; j0.Motor__maxImpulse = 300F; j0.AngularLimit__bias = .99F; j0.AngularLimit__softness = 0.01F; j0.AddChild(generate_joint_mesh(j0.Name)); RigidBody l0 = new RigidBody(); l0.Name = "l0"; l0.Mass = 2.0f; l0.Weight = (l0.Mass * 9.8F); l0.PhysicsMaterialOverride = new PhysicsMaterial(); l0.ContinuousCd = true; l0.CanSleep = false; MeshInstance l0_mesh_node = new MeshInstance(); l0_mesh_node.Name = "l0_mesh"; CubeMesh l0_mesh = new CubeMesh(); Vector3 l0_size = new Vector3(.2F, .8F, .1F); l0_mesh.Size = l0_size; l0_mesh_node.Mesh = l0_mesh; base_node.AddChild(j0); base_node.AddChild(base_mesh_node); RootView.GetNode("main/env").AddChild(base_node); // Translate links/joints Transform j0_og = j0.Transform; j0_og = j0_og.Translated(new Vector3(0F, .1F, 0F)); // j0_og = j0_og.Rotated(new Vector3(1F, 0F, 0F), Mathf.Pi / 2F); j0.Transform = j0_og; j0.AddChild(l0); l0.AddChild(l0_mesh_node); j0.Nodes__nodeA = base_node.GetPath(); j0.Nodes__nodeB = l0.GetPath(); Transform l0_og = l0.Transform; l0.Transform = l0_og.Translated(new Vector3(0F, .4F, 0F)); }