本文整理汇总了C++中NxScene::createJoint方法的典型用法代码示例。如果您正苦于以下问题:C++ NxScene::createJoint方法的具体用法?C++ NxScene::createJoint怎么用?C++ NxScene::createJoint使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NxScene
的用法示例。
在下文中一共展示了NxScene::createJoint方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: create
void create(NxScene& scene, const NxVec3& pos, float rad, NxActor* holder)
{
NxActorDesc actorDesc;
NxBodyDesc bodyDesc;
NxSphereShapeDesc sphereDesc;
bodyDesc.solverIterationCount = 20;
// wheel
sphereDesc.radius = rad;
sphereDesc.materialIndex = wheelMaterialIndex;
actorDesc.shapes.pushBack(&sphereDesc);
bodyDesc.mass = 400;
actorDesc.body = &bodyDesc;
actorDesc.globalPose.t = pos;
wheel = scene.createActor(actorDesc);
// roll axis
bodyDesc.mass = 50;
bodyDesc.massSpaceInertia = NxVec3(1,1,1);
actorDesc.body = &bodyDesc;
actorDesc.shapes.clear();
actorDesc.globalPose.t = pos;
rollAxis = scene.createActor(actorDesc);
// revolute joint connecting wheel with rollAxis
NxRevoluteJointDesc revJointDesc;
revJointDesc.projectionMode = NX_JPM_POINT_MINDIST;
revJointDesc.actor[0] = wheel;
revJointDesc.actor[1] = rollAxis;
revJointDesc.setGlobalAnchor(pos);
revJointDesc.setGlobalAxis(NxVec3(0,0,1));
rollJoint = (NxRevoluteJoint*)scene.createJoint(revJointDesc);
// prismatic joint connecting rollAxis with holder
NxPrismaticJointDesc prisJointDesc;
prisJointDesc.actor[0] = rollAxis;
prisJointDesc.actor[1] = holder;
prisJointDesc.setGlobalAnchor(pos);
prisJointDesc.setGlobalAxis(NxVec3(0,1,0));
scene.createJoint(prisJointDesc);
// add springs and dampers to the suspension (i.e. the related actors)
float springLength = 0.1f;
NxSpringAndDamperEffector * springNdamp = scene.createSpringAndDamperEffector(NxSpringAndDamperEffectorDesc());
springNdamp->setBodies(rollAxis, pos, holder, pos + NxVec3(0,springLength,0));
springNdamp->setLinearSpring(0, springLength, 2*springLength, 100000, 100000);
springNdamp->setLinearDamper(-1, 1, 1e5, 1e5);
// disable collision detection
scene.setActorPairFlags(*wheel, *holder, NX_IGNORE_PAIR);
}
示例2:
/**
* @brief
* Constructor
*/
JointSlider::JointSlider(PLPhysics::World &cWorld, PLPhysics::Body *pParentBody, PLPhysics::Body *pChildBody,
const Vector3 &vPivotPoint, const Vector3 &vPinDir) :
PLPhysics::JointSlider(cWorld, ((World&)cWorld).CreateJointImpl(), pParentBody, pChildBody, vPivotPoint, vPinDir)
{
// Get the PhysX physics scene
NxScene *pPhysXScene = ((World&)cWorld).GetPhysXScene();
if (pPhysXScene) {
// Create the PhysX physics joint
NxCylindricalJointDesc sJointDesc;
sJointDesc.actor[0] = pParentBody ? ((BodyImpl&)pParentBody->GetBodyImpl()).GetPhysXActor() : nullptr;
sJointDesc.actor[1] = pChildBody ? ((BodyImpl&)pChildBody ->GetBodyImpl()).GetPhysXActor() : nullptr;
sJointDesc.setGlobalAnchor(NxVec3(m_vPivotPoint.x, m_vPivotPoint.y, m_vPivotPoint.z));
sJointDesc.setGlobalAxis(NxVec3(m_vPinDir.x, m_vPinDir.y, m_vPinDir.z));
NxJoint *pPhysXJoint = pPhysXScene->createJoint(sJointDesc);
// Initialize the PhysX physics joint
((JointImpl&)GetJointImpl()).InitializePhysXJoint(*this, *pPhysXJoint);
}
}