PhysX官方手册翻译(二)

Basics:

Math Classes

4种数据结构:

NxVec3

NxQuat

NxMat33

NxMat34

Simple Shapes

7种基本物理模型:

NxBounds3 轴对称边界盒

NxBox 对象边界盒

NxCapsule 交囊

NxPlane 任意的面

NxRay 无限射线/直线

NxSegment 有限射线/线段

NxSphere

(事实上还有多边形,不过它应该不能称为简单)

SDK Initialization

NxCreatePhysicsSDK: 创建接口指针。

参数一:接口版本

参数二:内存管理类实体

参数三:用于输出的流

要点一:SDK版本要和驱动版本匹配

要点二:可以多次调用NxCreatePhysicsSDK,但是都将得到同一个实体,就象单件模式一样。但是存在引用计数,因此需要严格匹配 call release 的次数。

要点三:多次调用的时候,后设置的内存管理类将被忽略,但是输出流对象则会被覆盖。

Casting and Instancing

创建实例:

1、声明描述符

2、调用PhysX接口创建该实例

释放:

父对象的释放会引起子对象的自动释放。

转换:

NxShape / NxSphereShape / NxMoxsSs

向下转换

Shape->isSphere() shape->isBox()

失败返回NULL

Memory Management

虽然不是必须的,但是PhysX提供了内存管理接口。(继承NxUserAllocator

重载了 malloc / realloc / free

一旦被设置,就不能更改。

该类提供的内存管理函数必须保证是“线程安全的”。

Debug Rendering

不能使对象之间的间距可视化

Debug Information通过 gScene->getDebugRenderable() 返回的 NxDebugRenderable得到。

PhysX不是图象库,使用者需要自己绘制这些信息。

User Data

可以给对象(Actor)关联数据。

myShape->userData = ***;

User Defined Classes

8个需要用户自己实现的类:

NxUserAllocator 内存管理 NxUserOutputStream 错误信息 NxUserContactReport 反射(接触)通知 NxUserNotify 事件通知 NxUserRaycastReport 射线查询回调 NxUserTriggerReport 触发器回调 NxUserEntityReport 实体回调?? NxStream 串行化(用于数据IO

Error Reporting

使用NxUserOutputStream

Saving the <place w:st="on"><placename w:st="on">Simulation</placename><placetype w:st="on">State</placetype></place>

所有通过描述符创建的对象都有2个方法:saveToDesc() loadFromDesc()

可以用于保存对象当前的状态,这个特性可以应用于保存游戏,或者其他目的。

SDK Parameters

PhysX有一套集中管理的全局变量,85个定义,其中变量83个,哑元1个,记录数量1)

使用者可以通过 setParameters() / getParameters() 来修改他们。

大多数变量的默认值是不需要更改的。

Parameter Summary

Parameter

Default Value

Description

NX_PENALTY_FORCE

DEPRECATED

NX_SKIN_WIDTH

0.025

皮肤厚度 (range: [0, inf) Unit: distance.

NX_DEFAULT_SLEEP_LIN_VEL_SQUARED

(0.15*0.15)

The default linear velocity, squared, below which objects start going to sleep. (range: [0, inf))

NX_DEFAULT_SLEEP_ANG_VEL_SQUARED

(0.14*0.14)

The default angular velocity, squared, below which objects start going to sleep. (range: [0, inf))

NX_BOUNCE_TRESHOLD

-2

A contact with a relative velocity below this will not bounce. (range: (-inf, 0])

NX_DYN_FRICT_SCALING

1

This lets the user scale the magnitude of the dynamic friction applied to all objects. (range: [0, inf))

NX_STA_FRICT_SCALING

1

This lets the user scale the magnitude of the static friction applied to all objects. (range: [0, inf))

NX_MAX_ANGULAR_VELOCITY

7

See API Reference for NxBody::setMaxAngularVelocity() for details.

NX_CONTINUOUS_CD

0

Enable/disable continuous collision detection (<chmetcnv w:st="on" unitname="F" sourcevalue="0" hasspace="False" negative="False" numbertype="1" tcsc="0">0.0f</chmetcnv> to disable)

NX_VISUALIZATION_SCALE

0

This overall visualization scale gets multiplied with the individual scales. Setting to zero turns off debug visualizations.

NX_VISUALIZE_WORLD_AXES

0

Visualize the world axes.

NX_VISUALIZE_BODY_AXES

0

Visualize a body's axes.

NX_VISUALIZE_BODY_MASS_AXES

0

Visualize a body's mass axes.

NX_VISUALIZE_BODY_LIN_VELOCITY

0

Visualize the bodies' linear velocity.

NX_VISUALIZE_BODY_ANG_VELOCITY

0

Visualize the bodies' angular velocity.

NX_VISUALIZE_BODY_JOINT_GROUPS

0

Visualize joint groups.

NX_VISUALIZE_JOINT_LOCAL_AXES

0

Visualize local joint axes.

NX_VISUALIZE_JOINT_WORLD_AXES

0

Visualize joint world axes.

NX_VISUALIZE_JOINT_LIMITS

0

Visualize joint limits.

NX_VISUALIZE_CONTACT_POINT

0

Visualize contact points.

NX_VISUALIZE_CONTACT_NORMAL

0

Visualize contact normals.

NX_VISUALIZE_CONTACT_ERROR

0

Visualize contact errors.

NX_VISUALIZE_CONTACT_FORCE

0

Visualize contact forces.

NX_VISUALIZE_ACTOR_AXES

0

Visualize actor axes.

NX_VISUALIZE_COLLISION_AABBS

0

border-right: #ece9d
分享到:
评论
javababy1
  • 浏览: 365214 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

你可能感兴趣的:(数据结构,游戏,F#,velocity)