Joints and Materias

来源:互联网 发布:万科降薪 知乎 编辑:程序博客网 时间:2024/05/18 03:29

Joints

没有关节或者形状,actors只能做一点事情。关节提供一个连接两个actors的一致方法。它们需要两个actors总是互相关联地移动。它们限制移动的方法是被关节的类型决定。

 

关节和接触合起来称作约束,因为他们约束物体的运动。这个SDK只支持成对的约束。换个说法,每个关节和约束是在两个actors之间。这些actors之一可能是隐含的世界actors,代表了不动的全局参考框架。为了在一个actors和世界之间指定关节,当你创建一个关节的时候传递NULL给两个actors指针之一。没有Null的那个actors一定是动态的,作为连接两个静态的actors,隐含不动的

 

关节通过调用NxScene::createJoint()方法。这个方法用某个关节描述器类型作为一个参数,包含所有创建关节需要的信息。注意:当合PPU工作时有一个65536个关节的限制,之中只能有4096能是活跃的在任何被给的时间。

 

一个关节的模拟开销是被它从系统移除的自由度决定。一个自由度是能改变的物体的一个属性。例如,一个物体有3个线性复杂度在X,Y,Z轴,加上3个角自由度为转动绕x,y,z轴,

 

这个部分描述了不同的关节类型和给自由度的数量。

 

Joint Flags

 

除了关节指定标志,这个下面的标志能被用在所有的关节通过NxJointDesc的jointFlags成员:

 

    NX_JF_COLLISION_ENABLED - 使能碰撞检测在两个贴着关节的物体之间。默认的SDK不产生接触点为这对物体被关节关联的。

   

    NX_JF_VISUALIZATION - 使能为关节调试渲染器。

Materials

 

当两个actors相撞,碰撞行为的结果取决于actors表面的材质属性。例如,表面材质决定了是否actors将或者不将弹起,是否将滑动或粘连。当前,材质只支持的特定特点是各向异性摩擦力,但是其他的效果例如移动表面和更多的摩擦力类型是被开凿的为未来的版本。

 

表面属性是被NxMaterial类的成员决定。这个SDK保持了一个材质的整体列表,是被引用用16位NxMaterialIndex索引。为了创建一个材质,它的属性一定要背指定。下面的这个例子是设置材质属性:

    NxMaterialDesc materialDesc;
    materialDesc.restitution = 0.7f;
    materialDesc.staticFriction = 0.5f;
    materialDesc.dynamicFriction = 0.5f;

 

一旦材质描述器被设置了,一个材质对象能被创建:

 

    NxMaterial *newMaterial=gScene->createMaterial(materialDesc);

 

当分配了一个材质到一个形状,它是必要的获取材质索引:

    NxActorDesc actorDesc;
NxBoxShapeDesc boxDesc;
    boxDesc.dimensions.set(4,4,5);
boxDesc.materialIndex= newMaterial->getMaterialIndex();
actorDesc.shapes.pushBack(&boxDesc);
...
    NxActor * myActor = gScene->createActor(actorDesc);

在模拟期间能获取和设置形状的材质索引用NxShape::setMaterial() and NxShape::getMaterial() methods。

 

 

 

 

 

原创粉丝点击