1 / 12

Implementing Physical Representation of Game Characters in Physics Engines

This guide demonstrates how to create a physical representation of a game character using Bullet Physics. You'll learn to set up a dynamic capsule shape as a bounding object, disable rotation, add movement forces, and adjust parameters for natural movement. The steps include extracting files, running the character control solution, and compiling the code. By manipulating player character dynamics and integrating physics, this resource helps implement realistic motion in your game development projects.

satya
Download Presentation

Implementing Physical Representation of Game Characters in Physics Engines

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PhysicsCharacter Controller Physical representation of a game character

  2. Basics • http://cg.iit.bme.hu/gamedev/KIC/05_PhysicsEngine/ • 05_02_Bullet_CharacterControl_Base.zip • Extract • Run: CharacterControl.sln • Set includeandlibrarypaths (if not correct) • Set workingdirectory(if not $(SolutionDir)/bin) • Compile • Run

  3. Run

  4. Exercise • Give the character a physical representation • Use a capsule shape as a bounding object • Make the capsule dynamic • Disable rotation • Add forces to move it in the scene • The physical representation of the scene is already loaded (static boxes)(examine the source code!!) • Play with the parameters until the movement feels natural • (Next slides show one solution)

  5. PlayerCharacter.h #include "btBulletDynamicsCommon.h" classPlayerCharacter { public: PlayerCharacter(Ogre::SceneManager* sm,btDiscreteDynamicsWorld* phyW); protected: btRigidBody* mPhysicsController;

  6. PlayerCharacter.cpp PlayerCharacter::PlayerCharacter(Ogre::SceneManager* sm, btDiscreteDynamicsWorld* phyW) { … btCollisionShape* physicsShape = newbtCapsuleShape(2.0,5.0); btDefaultMotionState* physicsMotionState = newbtDefaultMotionState(btTransform(btQuaternion(0,0,0,1), btVector3(0,5,0))); btScalarmass = 1; btVector3 inertia(0,0,0); physicsShape->calculateLocalInertia(mass,inertia); btRigidBody::btRigidBodyConstructionInforigidBodyCI(mass, physicsMotionState, physicsShape, inertia); mPhysicsController = newbtRigidBody(rigidBodyCI); mPhysicsController->setAngularFactor(0); //disable rotation //mPhysicsController->setDamping(0.3,0); phyW->addRigidBody(mPhysicsController); }

  7. PlayerCharacter.cpp void PlayerCharacter::update(float t, float dt) { … btTransformworldTrans; mPhysicsController->getMotionState()->getWorldTransform(worldTrans); //we don’t need rotation as it is fixed //btQuaternionrot = worldTrans.getRotation(); //node->setOrientation(rot.w(), rot.x(), rot.y(), rot.z()); node->setPosition(worldTrans.getOrigin().x(), worldTrans.getOrigin().y()-5, worldTrans.getOrigin().z()); mPhysicsController->setLinearVelocity(btVector3(0,0,0)); }

  8. PlayerCharacter.cpp void PlayerCharacter::move(float amount) { if(inAction()) return; Ogre::Vector3 m = amount * getDirection() * 150; Ogre::LogManager::getSingleton().logMessage("Applying force: " + Ogre::StringConverter::toString(m)); mPhysicsController->activate(true); mPhysicsController->applyImpulse(btVector3(m.x,m.y,m.z), btVector3(0,-0.5,0)); if(hasWeapon) action = PA_WEAPON_HOLD; else action = PA_NONE; pose = PP_RUN; }

  9. OgreCharacter.cpp playerCharacter = new PlayerCharacter(sceneManager, physxHandler->getScene());

  10. Test

  11. More physics • Constraints/joints • Ray casting (bullets, terrain, vehicle) • Complex geometries • Convex • Concave • Height field • Collision filtering • Soft bodies • Particles, fluids

  12. The End

More Related