4种数据结构:
NxVec3
NxQuat
NxMat33
NxMat34
7种基本物理模型:
NxBounds3 轴对称边界盒
NxBox 对象边界盒
NxCapsule 交囊
NxPlane 任意的面
NxRay 无限射线/直线
NxSegment 有限射线/线段
NxSphere 球
(事实上还有多边形,不过它应该不能称为简单)
NxCreatePhysicsSDK: 创建接口指针。
参数一:接口版本
参数二:内存管理类实体
参数三:用于输出的流
要点一:SDK版本要和驱动版本匹配
要点二:可以多次调用NxCreatePhysicsSDK,但是都将得到同一个实体,就象单件模式一样。但是存在引用计数,因此需要严格匹配 call 和 release 的次数。
要点三:多次调用的时候,后设置的内存管理类将被忽略,但是输出流对象则会被覆盖。
创建实例:
1、声明描述符
2、调用PhysX接口创建该实例
释放:
父对象的释放会引起子对象的自动释放。
转换:
NxShape / NxSphereShape / NxMoxsSs
向下转换
Shape->isSphere() shape->isBox()
失败返回NULL。
虽然不是必须的,但是PhysX提供了内存管理接口。(继承NxUserAllocator)
重载了 malloc / realloc / free。
一旦被设置,就不能更改。
该类提供的内存管理函数必须保证是“线程安全的”。
不能使对象之间的间距可视化
Debug Information通过 gScene->getDebugRenderable() 返回的 NxDebugRenderable得到。
PhysX不是图象库,使用者需要自己绘制这些信息。
可以给对象(Actor)关联数据。
如 myShape->userData = ***;
8个需要用户自己实现的类:
NxUserAllocator 内存管理 NxUserOutputStream 错误信息 NxUserContactReport 反射(接触)通知 NxUserNotify 事件通知 NxUserRaycastReport 射线查询回调 NxUserTriggerReport 触发器回调 NxUserEntityReport 实体回调?? NxStream 串行化(用于数据IO)
使用NxUserOutputStream
所有通过描述符创建的对象都有2个方法:saveToDesc() 和 loadFromDesc()
可以用于保存对象当前的状态,这个特性可以应用于保存游戏,或者其他目的。
PhysX有一套集中管理的全局变量,85个定义,其中变量83个,哑元1个,记录数量1个)
使用者可以通过 setParameters() / getParameters() 来修改他们。
大多数变量的默认值是不需要更改的。
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
发表评论
最新评论
|
评论