UDN
Search public documentation:
PhysXReferenceCH
English Translation
日本語訳
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
日本語訳
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
PhysX 参考指南
力场
所有力场的常用参数
- bForceActive - 说明此时力是否处于激活状态。
- ForceFieldChannel - 确定了应用到这个力场的排除体积 ( RB_ForceFieldExcludeVolumes )。
- bForceApplyToCloth - 启用/禁用对布料的影响。
- bForceApplyToFluid - 启用/禁用对流体粒子的影响。
- bForceApplyToRigidBodies - 启用/禁用对刚体的影响。
- bForceApplyToProjectiles - 启用/禁用对诸如火箭之类的射弹的影响。
- CollideWithChannelsIdentifies - 受到这个力场影响的物体的类型。
RB_RadialForceActor
这个力场显示为一个球体。它将会对在力场内部的对象应用一个径向力。- ForceStrength - 应用到 actor 的力的强度。正向力向外应用。
- ForceRadius - 力的影响半径。
-
SwirlStrength- 这个字段不使用。(围绕 actor 的 Z 轴,物体进行轨道运行的强度。) -
SpinTorque- 这个字段不使用。(围绕本地坐标系中的 Z 旋转地物体的强度。) - ForceFalloff - 当物体从那个位置远离时,力的衰减方式。应用的力或者是不依赖于位置的常量;或者力会被线性地插值,使得当从力场中心到半径为 ForceRadius 处变化时,力的强度从 ForceStrength 衰减为零。
- RadialForceMode - 可以指定使用的力模型的类型。
RB_CylindricalForceActor
这个力场显示作为圆柱体。它将会根据定义的参数对在圆柱体内部的物体应用一个径向的、上升的、旋转的力。如果物体的 Velocity(速度)比逃逸速度小或者当物体正在移动远离中心时才应用这个径向力。这用于阻止物体快速地离开力场。- RadialStrength - 在从圆柱体中心轴向外的方向上应用的力的强度。
- RotationalStrength - 在圆柱体中心轴周围所应用的力的旋转强度。
- LiftStrength - 在圆柱体中心轴上应用的力的强度。
- LiftFalloffHeight - 升力的衰减高度,0-1,当高于这个高度时升力将开始以线性的方式衰减。
- EscapeVelocity - 当速度高于这个速度时,将会忽略径向力。
- ForceRadius - 圆柱体底部的力的影响半径。
- ForceTopRadius - 圆柱体顶部的力的影响半径。
- ForceHeight - 力圆柱体的高度。
- HeightOffset - 从 actor 的基部到力场中心的偏移量。
场景分隔间
它允许用户把物体分隔为多个可以或不可以相互交互的分隔间。Compartment(分隔间)可以在游戏引擎正在执行其它任务的过程中模拟场景平行放置。另外,为了改善基于场景的特效的性能,可以独立地配置 Compartments(分隔间)来使得它在不同的步长或者可能的交叉存取仿真时运行。 一个 Compartments(分隔间)代表一种物理仿真类型的子实例,比如,硬件流体、硬件刚体或软件刚体。在一个场景中可能会存在几个 Compartment(分隔间)(包括同样类型的多个分隔间),它们之间的交互及将会对场景章节自动进行处理。这允许透明操作、仿真及交互,不必担心底层的具体细节。 SDK 管理 Compartment(分隔间)之间的所有连接。或者如果执行一次光线投射,那么这个查询将会返回在所有 Compartment(分隔间)中的所有分割的硬件和软件物体。 一个新建的场景、硬件或软件不包含 compartment(分隔间)。任何添加到场景中的物体都会被放到场景章节中,除非在添加到场景中的物体的描述符中指出了一个 compartment(分隔间)或者那种类型的物体不能直接地存在于场景中,否则添加的物体都将会被插入到场景章节中。 比如,这种特殊情况将会应用到软件场景中的示例流体。在这种情况下,如果没有 compartment(分隔间)存在,将会为新的物体创建一个适当的默认 compartment(分隔间)。 这里是创建具有 compartment(分隔间)物体的不同可能性以及它们支持的交互作用的全面列表。交互作用包括物理实体间的碰撞及触发器测试。
没有 PhysX 硬件
没有指定的分隔间:
项目 | 所在位置 | 影响对象 | 影响因素 |
---|---|---|---|
Rigid bodies(刚体) | Scene proper(场景章节) | 任何东西 | 彼此之间,设置为双向交互的布料(甚至在 compartment(分隔间)中)、设置为双向交互的流体(仅在 compartment(分隔间)中)。 |
Fluids(流体) | 软件中不可用 | ||
Cloth(布料) | 主要场景 | 仅那些在主要场景中设置为双向交互的刚体。 | 仅在主要场景的刚体。 |
指定的分割间:
项目 | 所在位置 | 影响对象 | 影响因素 |
---|---|---|---|
Rigid bodies(刚体) | 指定的分隔间 | 仅彼此间 | 彼此间,主要场景中的刚体。 |
Fluids(流体) | 软件中不可用 | ||
Cloth(布料) | 指定的分隔间 | 仅主要场景中的刚体(它们设置为双向交互) | 仅在主要场景中的刚体。 |
附带 PhysX 硬件
没有指定的分隔间:
项目 | 所在位置 | 运行平台 | 影响对象 | 影响因素 |
---|---|---|---|---|
Rigid bodies(刚体) | 场景章节 | 场景类型 | 任何物体 | 彼此间、设置为双向交互的布料间(即使在分隔间中)、具有双向交互的设置的流体(仅在分隔间中)。 |
Fluids(流体) | 默认的流体分隔间(如果分隔间不存在将会创建一个) | 硬件 | 仅在主要场景中的刚体(如果设置了双向影响) | 仅在主要场景中的刚体。 |
HW Cloth1 | 默认的布料分隔间(如果分隔间不存在将会创建一个) | 硬件 | 仅在主要场景中设置为双向交互的刚体 | 仅在主要场景中的刚体。 |
SW Cloth1 | 场景章节 | 软件 | 仅在主要场景中设置为双向交互的刚体 | 仅在主要场景中的刚体。 |
指定的分割间:
项目 | 所在位置: | 运行平台: | 影响对象: | 影响因素: |
---|---|---|---|---|
Rigid bodies(刚体) | 指定的分隔间 | 作为分隔间 | 仅彼此间 | 彼此间,在主要场景中的刚体2 |
Fluids(流体) | 指定的分隔间 | 硬件 | 仅在主要场景中设置为双向交互的刚体。 | 仅主要场景中的刚体。 |
Cloth(布料) | 指定的分隔间 | 作为分隔间 | 仅在主要场景中设置为双向交互的刚体。 | 仅主要场景中的刚体。 |
默认实现
目前 UE3 在 NxScene 中创建了 4 个分隔间。指向这些分隔间的指针和 NxScene 一同存储在关卡的 FRBPhysScene 中。创建的分隔间类型是:- Rigid body(刚体)
- Fluid(流体)
- Cloth(布料)
- 刚体
注意: 目前没有投入使用,但是以后会启用这项功能。
单向交互(“Dominance Group(主要组)”)
通过使用 Dominance Group(主要组),您可以在那些仅在一个方向上反应的 actor 间创建所有的约束(联系和关节)。如果您想确保车辆扶手或人物马尾辫的运动不会影响它附加到的物体并保持它们运动的自然效果时,这是有用的。 “Dominance Groups(主要组)”是 NxActor 的属性。它是一个简单的 5 位(范围 0-31)的标示符。 当一个限制(关节或联系)在两个 actor 间作用时,它们的 Dominance Group(主要组)用于决定影响要影响的 actor。影响力由用户定义的实数对矩阵决定。 当两个 NxActor 交互时,它们的 Dominance Groups(主要组)编号用于查找在矩阵中查找正确的实数组。每个实数的范围是 [0.0,1.0],并且这个值决定了每个 NxActor 从交互中接收的影响的多少。 目前,仅支持值 0.0 和 1.0。 那些中间值或许会在以后用户“部分”交互作用。 默认情况下,建立了交互矩阵,所以如果 actor 的 dominance groups(主要组)是相等的,则返回 (1.0,1.0)。 这是一种“正常的”交互行为 – 两个 actor 受到约束的影响。如果 actor 的 dominance group(主要组)是不相等的,那么默认的矩阵将会根据较大的组 ID 返回 (0.0,1.0) 或 (1.0,0.0)。这样设立后,那么较低的 dominance group(主要组)的 ID 获得 1.0 的权重,而较高的组 ID 获得 0.0 的权重。也将是,具有较低的组 ID 获胜。PhysX 设置默认的 dominance group(主要组)ID 为 0,这将使得在默认的交互矩阵下,主要组将总是获胜。 UE3 把 NxActor 的 dominance group(主要组)重置为 15(默认情况下),但是没有修改交互矩阵。 这使得很容易地便可以指定大于它或小于它的 ID。在 UE3 中,dominance group(主要组)是在 UPrimitiveComponent 的 RBDominanceGroup 文本字段中指定的。
PhysX 可见性标志
有几个 PhysX 可见性标志,可以在命令行中设置它们,通过输入 NXVIS 后面跟着以下标志之一来实现:
- Axes(坐标轴)
- WORLDAXES - 使世界坐标轴可见。
- BODYAXES - 使尸体的坐标轴可见。
- BODYAXES - 使尸体的质量坐标轴可见。
- Contacts(接触)
- CONTACTPOINT - 使接触点可见。
- CONTACTS - 使接触法线可见。
- CONTACTERROR - 使接触错误可见。
- CONTACTFORCE - 使接触力度可见。
- Joints(关节)
- JOINTLIMITS - 使关节极范围可见。
- JOINTLOCALAXES - 使本地关节坐标轴可见。
- JOINTWORLDAXES - 使关节世界坐标轴可见。
- Collision(碰撞)
- CCD - 使 CCD 骨架可见。
- CCDTESTS - 使 CCD 测试可见。
- COLLISIONAABBS - 使边界(世界空间中的 AABB)可见。
- COLLISION - 使形状可见。
- 红色 - BSP/三角形网格物体/高区域
- 橙色 - 凸面
- 白色 - 球体/长方体图元
- COLLISIONAXES - 使形状坐标轴可见。
- Cloth(布料)
- CLOTH_MESH - 使布料网格物体可见。
- CLOTH_COLLISIONS - 使布料刚体碰撞可见。
- CLOTH_ATTACHMENT - 使布料附加物可见。
- CLOTH_SLEEP_VERTEX - 使具有完整的每个顶点信息的布料休眠可见。
- CLOTH_SLEEP - 使布料休眠可见。
- 红色 - 休眠
- 白色 - 唤醒
- 蓝色 - 静态
- CLOTH_VALIDBOUNDS - 使布料有效边界可见。
- CLOTH_TEARABLE_VERTICES - 使可撕裂的布料顶点可见。
- Fluid(流体)
- FLUID_PACKETS - 使流体包可见。
- FLUID_POSITION - 使粒子位置可见。
- FLUID_MESH_PACKETS - 使现有的流体网格物体包可见。
- FLUID_PACKET_DATA - 使流体数据包可见。
- FLUID_BOUNDS - 使流体 AABB 可见。
- FLUID_VELOCITY - 使粒子速度可见。
- FLUID_KERNEL_RADIUS - 使粒子 kernel 半径可见。
- FLUID_DRAINS - 使流体排水通道形状可见。
- FLUID_EMITTERS - 使发射器可见。
- Force Fields(力场)
- FORCEFIELDS - 使力场形状可见。
- Softbody(软体)
- SOFTBODY_MESH - 使软体网格物体可见。
- SOFTBODY_ATTACHMENT - 使软体附加物可见。
- SOFTBODY_COLLISIONS - 显示与刚体发生碰撞的软体。
- SOFTBODY_SLEEP_VERTEX - 显示软体的睡眠状态及基于每个顶点的全面信息。
- SOFTBODY_SLEEP - 显示软体休眠。
- SOFTBODY_VALIDBOUNDS - 显示软体有效边界。
刚体的物体碰撞
过滤刚体碰撞
您可以使用 Component(组件)中的 RBChannel 和 RBCollidesWithChannel 选项来控制钢体和那个物体发生碰撞。- RBChannel - 这说明了碰撞所考虑的物理类型。
- RBCollidesWithChannel - 这说明了要和这个物体产生碰撞的物体的类型。