首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PhysX 3.2:简单的盒子动态不会移动

PhysX 3.2:简单的盒子动态不会移动
EN

Stack Overflow用户
提问于 2012-03-19 18:05:44
回答 1查看 1.6K关注 0票数 0

我已经升级到了PhysX 3.2,几天来一直在努力让我的测试箱通过重力移动,但它就是不能做到。

我遵循了PhysX文档,但以我的方式实现了它。这几乎是一个默认设置:

代码语言:javascript
复制
        physx::PxSceneDesc sceneDesc = physx::PxSceneDesc((physx::PxTolerancesScale()));
        sceneDesc.gravity = physx::PxVec3(0.0f, -9.8f, 0.0f);
        if(!sceneDesc.cpuDispatcher)
        {
            physx::PxDefaultCpuDispatcher* mCpuDispatcher = physx::PxDefaultCpuDispatcherCreate(4);
            if(!mCpuDispatcher)
                LOG("PxDefaultCpuDispatcherCreate failed!");
            sceneDesc.cpuDispatcher    = mCpuDispatcher;
        }
        if(!sceneDesc.filterShader)
            sceneDesc.filterShader    = &physx::PxDefaultSimulationFilterShader;


        physxScene = physMgr->getSDK()->createScene(sceneDesc);

创建动态执行元:

代码语言:javascript
复制
                PxRigidDynamic* body = mPxSDK->createRigidDynamic(Convert::toPxTransform(transform));
                PxRigidBodyExt::updateMassAndInertia(*body, 1.0f);
                mPxScene->addActor(*body);

添加长方体形状:

代码语言:javascript
复制
            PxBoxGeometry geometry = PxBoxGeometry(Convert::toPxVector3(size));
            if(geometry.isValid())
            {
                PxMaterial* material = api->createMaterial(0.5f, 0.5f, 0.1f);
                PxShape* shape = createShape(actor, geometry, material);
                                    PxRigidBodyExt::updateMassAndInertia(*body, 33.0f);
            }

将场景模拟为:

代码语言:javascript
复制
    float elapsedTime = float((float)mTime.getElapsedTime() / 1000.0f);
    mAccumulator += elapsedTime;
    if(mAccumulator < mStepSize)
    {
        return;
    }
    else
    {
        mAccumulator -= mStepSize;
        mPxScene->simulate(mStepSize);
        mDynamicBodySys->updateGameObjectPositions();
        mPxScene->fetchResults(true);
        mTime.restart();

    }

当我查看Visual Debugger时,我可以看到框和帧计数在增加。但它不动了。演员的形状和盒子的形状似乎有正确的属性。LinearVelocity在负Y轴上增加,它的质量是33等,但姿态仍然是零/单位。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-20 17:44:14

解决了。错误存在于我自己的逻辑中。有一个同步逻辑问题,PhysX试图更新我的图形,同时我的定位逻辑告诉PhysX用它以前的位置更新。所以它被卡住了,看起来从来没有被模拟过。

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

https://stackoverflow.com/questions/9768234

复制
相关文章

相似问题

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