首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用Ogre3D和BulletPhysics优化刚体碰撞

如何利用Ogre3D和BulletPhysics优化刚体碰撞
EN

Stack Overflow用户
提问于 2015-01-22 09:01:38
回答 1查看 258关注 0票数 0

我正在和我的朋友们一起开发一些游戏,使用Ogre3D和子弹物理学。我设法让我们的游戏角色移动(只是简单的运行和转弯)。

我想我可以在这节课上实现“跳跃”:

代码语言:javascript
复制
btCollisionWorld::ClosestRayResultCallback res(btFrom, btTo);.

然而,我最大的问题是碰撞优化。

我试过:

  1. 添加100~500个刚体对象(在游戏中将这些更改为映射对象后)
  2. 一个静止平面碰撞物体(地面)
  3. 一个字符刚体对象

仅在平面上运动的FPS为60~80 = ok。但是当我的角色与任何其他刚体物体发生碰撞时,FPS会下降到7。

我不知道怎么解决这个问题。我不使用DynamicCharacterControllerKineticCharacterController。字符由setLinearVelocity()rigidbody->getWorldTransform().setRotation(quat)函数控制。

更多信息:

代码语言:javascript
复制
PhysicsManager::GetInstance()->getDynamicsWorld()->stepSimulation(evt.timeSinceLastFrame,8);
EN

回答 1

Stack Overflow用户

发布于 2015-04-01 16:01:21

我以前也有过这个问题,我不知道这是不是你的情况,但我们正在实施该死的(游戏),当我们模拟厨房时,我们使用炉子的网格作为碰撞物体(btDbvtTriangleMeshShape),每次角色靠近炉子时,FPS就会下降……

解决方案是对每个炉子使用一个简单的碰撞形状(比如带有几个盒子的btCompound ),然后FPS问题就消失了:

希望您的问题与此类似,这样您就可以通过减少所使用的碰撞形状的复杂性来解决它。

如果不是这样的话,请向我展示在处理您的角色时运行的代码(同时,强烈推荐使用KinematicCharacterController,并且更推荐从PhysX转到more ;D)。

最好的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28084697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档