c++ - Physx:为什么这些刚体永远不会静止?
问题描述
我正在使用 Physx-4.1,一切正常,除了我偶尔会遇到一个问题,即我的刚体在放置在表面上时基本上会抖动/摆动。我不确定如何标记这个问题,如何处理它,或者它来自哪里。大多数情况下这不会发生,我可以在一个场景中有三个立方体,也许只有一个会这样做。
世界坐标中的这个立方体将在每个坐标中来回摇晃约 0.02 或 0.03。地形是静态动态actor,立方体是动态actor。我从顶点数据中烹制了两者,这是迄今为止我遇到的唯一问题。
这是我用来创建场景/物理的代码。
void Physics::initPhysics()
{
m_foundation = PxCreateFoundation(PX_PHYSICS_VERSION, m_allocator, m_error_callback);
m_pvd = physx::PxCreatePvd(*m_foundation);
physx::PxPvdTransport* transport = physx::PxDefaultPvdSocketTransportCreate(PVD_HOST, 5425, 10);
m_pvd->connect(*transport, physx::PxPvdInstrumentationFlag::eALL);
m_scale.length = 1; // typical length of an object
m_scale.speed = 10; // typical speed of an object
m_physics = PxCreatePhysics(PX_PHYSICS_VERSION, *m_foundation, m_scale, true, m_pvd);
PxInitExtensions(*m_physics, m_pvd);
m_material = m_physics->createMaterial(0.5f, 0.5f, 0.5f);
m_dispatcher = physx::PxDefaultCpuDispatcherCreate(2);
m_cooking = PxCreateCooking(PX_PHYSICS_VERSION, *m_foundation, physx::PxCookingParams(m_scale));
m_serialization_registry = physx::PxSerialization::createSerializationRegistry(*m_physics);
}
void Physics::addScene(const std::string& name)
{
physx::PxSceneDesc scene_desc(m_scale);
scene_desc.gravity = physx::PxVec3(0.0f, 0.0f, -9.81f);
scene_desc.cpuDispatcher = m_dispatcher;
scene_desc.filterShader = physx::PxDefaultSimulationFilterShader;
m_scenes[name] = m_physics->createScene(scene_desc);
}
我试过玩弄m_material
,尤其是恢复系数。它可能会解决问题,但如果我改变立方体的初始方向,它最终会再次弹出。我还尝试在子步骤中模拟物理,看看是否增加了稳定性而没有变化。
解决方案
推荐阅读
- flutter - Flutter - 底部溢出 XX 个像素
- java - 从字符串 1 中删除字符的字符串
- laravel - 显示从数据库中选中的复选框
- python - 循环项目时 Python 3 中的 KeyError
- javascript - d3js enter 不是函数问题
- vb.net - 所有复选框的 CheckBox CheckedChanged 事件?
- json - 如何使用 jq 编写批处理文件来查找具有特定属性的 json 文件并将其复制到新位置
- python - Discord py - 对带有冷却时间的消息做出反应(on_message)
- reactjs - 为什么styled-components中的Color模块会报错
- angular - Web3 和 Angular 11 损坏的依赖项