Skip to main content

刚体编辑器

本文档中的刚体层级如下图所示:

image-20230210174001821

概述

刚体编辑器(Rigidbody Editor)用于生产模型的刚体资源,编辑及调试模型刚体的物理效果。

image-20230815161856397

编号说明
1顶部工具栏(Top Toolbar)提供了删除、保存、模拟刚体、导入物理碰撞、重置相机位置的功能。
2树形视图(Tree View)面板用于显示刚体和刚体包含的碰撞体节点;提供新增和删除碰撞体的菜单功能。
3场景(Scene)面板用于显示模型,观察刚体模拟效果;提供对碰撞体位置、旋转、缩放等编辑功能。
4刚体信息(RigidBody Detail)面板提供刚体属性编辑功能。

可进行刚体编辑的文件类型

后缀名说明
.xmod模型资源文件

编辑器保存的刚体文件类型

保存刚体编辑后,编辑器会输出以下两种格式的刚体资源。

后缀名说明
.cobjINI格式的刚体配置文件。保存刚体引用的物理材质文件路径、碰撞预设等信息。
.nxxXML格式的刚体配置文件。保存刚体碰撞及模拟相关的所有属性。

快捷键

快捷键说明
1拖动编辑坐标轴,修改选中碰撞体的位置。
2拖动编辑坐标轴,修改选中碰撞体的旋转。
3拖动编辑坐标轴,修改选中碰撞体的缩放。
4切换本地/世界空间编辑。
5选中场景空白位置拖动,改变模型高度。
6选中场景空白位置拖动,改变模型旋转。
Shift拖动编辑坐标轴操作过程中按下Shift,可对碰撞体的位置改变做更精细的调整。
Ctrl + S保存当前编辑的刚体。
Delete删除当前选中的碰撞体。
F向鼠标指向位置发射一个动态刚体小球。

打开刚体编辑器

方法一

资源预览(Resource Preview )窗口中找到模型文件或者刚体文件。

刚体编辑器

双击模型文件 刚体编辑器 打开模型编辑器(Model Editor)

image-20230207162845223

模型编辑器(Model Editor)中点击 刚体编辑器 按钮切换到刚体编辑。

image-20230208114648391

刚体编辑器(Rigidbody Editor)

image-20230815161933377

方法二

资源预览(Resource Preview)窗口中,双击任意类型的刚体文件(.cobj/.nxx/.nxb),打开刚体编辑器(Rigidbody Editor)

image-20230208133819944

新建刚体

场景(Scene)面板中点击空白处,在刚体信息(RigidBody Detail)面板中找到重建刚体(Rebuild Rigid)选项。

image-20230815155552375

属性说明
刚体类型(Rigid Type)新建刚体的类型。
  • 动态刚体(Dynamic Rigid):适用于位置受物理模拟控制的物体。如球、易拉罐等。
  • 运动学刚体(Kinematic Rigid):适用于位置受外部设置控制的物体。如电梯、移动平台等。
  • 静态刚体(Static Rigid):适用于位置不会发生改变的物体。如墙壁、岩石等。
碰撞体类型(Collider Type)新建刚体的碰撞体类型。
  • 胶囊几何体(Capsule Geometry):包含半径和半高属性的胶囊形状碰撞体。
  • 球形几何体(Sphere Geometry):包含半径属性的球形碰撞体。
  • 盒子几何体(Box Geometry):包含长宽高属性的长方体碰撞体。
  • 凸包网格体几何体(Convex Mesh Geometry):包裹模型的凸多面体碰撞体。
  • 三角形网格体几何体(Triangle Mesh Geometry):与模型网格体匹配的三角形网格体。注:三角形网络体被附加到动态刚体上时,不会参与物理模拟。
网格体LOD(Mesh LOD)选择生成的碰撞体参照的顶点数据的LOD。
逐模型节点创建碰撞体(Create Collider Per Model Node)开启后,根据模型中每一个模型节点的网格体顶点单独生成一个碰撞体;反之则根据总体网格体顶点生成一个碰撞体。
触发器(Trigger)新建为触发器刚体。
重新创建(Rebuild)重新创建刚体。

重建刚体(Rebuild Rigid)选项下选择合适的刚体类型(Rigid Type)碰撞体类型(Collider Type),然后点击重新创建(Rebuild)按钮。

image-20230814145022526

将上述碰撞体类型(Collider Type)按照性能或者碰撞精确度从大到小排序:

排序方式
按性能排序球形几何体 > 胶囊几何体 > 盒子几何体 > 凸包网格体几何体 > 三角形网格体几何体
按碰撞精度排序三角形网格体结合体 > 凸包网格体几何体 > 球形几何体 =胶囊几何体 = 盒子几何体

新建完毕后,在左侧的树形视图(Tree View)面板中可以看到两个不同颜色的树节点。

刚体编辑器

节点说明
蓝色的 box 刚体节点
黄色的 box 碰撞体节点

添加碰撞体

可为刚体添加多个不同的碰撞体。

树形视图(Tree View)面板中选中刚体节点,鼠标右击 ,选择添加碰撞体(Add Collider)

image-20230209174303623

在弹出的窗口中进行参数设置后点击确定(OK)按钮完成添加。从指定模型节点创建碰撞(Create From Model Nodes)列表中显示的是当前模型的模型节点,每一个模型节点都包含一组模型顶点数据,可以选择任意一个模型节点来创建刚体碰撞体。

image-20230815102915542

添加完成后即可在树形视图(Tree View)面板和场景(Scene)面板中观察到新附加的碰撞体。

image-20230815155820391

删除碰撞体

删除刚体中不需要的碰撞体。

方法一

树形视图(Tree View)面板选中需要删除的碰撞体节点,鼠标右击,选择删除碰撞体(Delete Collider),然后在弹出的窗口中点击确定(OK)按钮,即可删除选中的碰撞体。

image-20230209174828712

方法二

场景(Scene)面板中选择需要删除的碰撞体,按快捷键Delete,然后在弹出的窗口中点击确定(OK)按钮,即可删除选中的碰撞体。

delete

编辑碰撞体

通过编辑碰撞体,可调整碰撞体的位置、旋转、缩放,以及模型的位置及旋转。

切换坐标轴编辑模式

场景(Scene)面板中选择碰撞体,显示编辑坐标轴。

刚体编辑器

点击场景(Scene)面板中按钮可切换坐标轴的编辑模式。

image-20230208095137432

也可以通过按下相对应的快捷键(1/2/3/4)来切换坐标轴的编辑模式。

快捷键说明
1拖动坐标轴改变碰撞体位置。
2拖动坐标轴改变碰撞体旋转。
3拖动坐标轴改变碰撞体缩放。
4切换世界空间坐标系和本地空间坐标系。
Shift按住Shift拖动可以更精确的修改碰撞体位置/旋转/缩放。

调整模型的位置和旋转

当光标放置于场景(Scene)面板中的空白位置处,在平移模式下,鼠标点击并上下拖动,可以上下移动模型;在旋转模式下,鼠标点击并左右拖动,可以左右旋转模型。

点击场景(Scene)面板中按钮可切换模型的编辑模式。

image-20230208100039590

也可以通过按下相应的快捷键(5/6),来切换模型的平移或旋转模式。

快捷键说明
5上下平移模型位置
6左右旋转模型角度

modeledit

编辑刚体属性

通过编辑不同的刚体属性,在物理模拟时可得到不同的物理效果。

树形视图(Tree View)面板中,选中要进行编辑的刚体。右侧的刚体信息(RigidBody Detail)面板中,会显示刚体属性的设置项。

image-20230815162026179

编辑设置

image-20230815110326136

属性说明
显示模型(Show Model)可以用于隐藏模型来观察刚体碰撞。
显示参与模拟的碰撞体(Show Simulate Collider)用于开关显示参与物理模拟的几何体信息。
显示参与场景查询的碰撞体(Show Scene Query Collider)用于开关显示参与场景碰撞查询的几何体信息。
显示无效的碰撞体(Show Invalid Collider)用于开关显示不参与模拟且不参与碰撞检测的几何体信息。
播放模型动画(Play Model Anim)用于播放/停止模型动画。

通用刚体属性

image-20230815112401071

属性说明
刚体类型(Rigid Type)刚体类型
名称(Name)刚体名称
启用模拟(Enable Simulate)指定该刚体是否参与物理模拟。
如果启用模拟(Enable Simulate)== false,刚体不会参与物理模拟。具体表现为与其他参与模拟物体无碰撞,模型位置也不会受到物理的控制。
该设置项并不影响刚体受场景碰撞查询检测。
启用控制约束(Enable Control Constraint)创建一个关节来约束刚体的运动。(仅支持布娃娃编辑)

刚体属性

刚体编辑器

属性说明
质量(Mass)刚体质量。单位为Kg,该值设置的过小或者为0时,模拟会出现抖动或者穿透等现象。
无重力(No Gravity)无重力(No Gravity) == true时,刚体不再受场景重力影响。
CCD连续碰撞检测。当刚体运动速度过快,发生类似“隧道效应”穿透其他刚体时,才需要开启该选项。
最小位置迭代次数(Minimum Position Iterations)该属性定义了刚体受约束控制时的解析精度。
如果刚体受约束控制,发生抖动等不正常表现时,可适当增加位置迭代次数,使刚体变现的更加稳定。
最小速度迭代次数(Minimum Velocity Iterations)该属性定义了刚体发生碰撞时的解析精度。
如果两个碰撞物体的反弹表现的过于剧烈,可适当增加速度迭代次数,这会使两个物体的分离速度趋近于材质弹性系数定义的结果。
质心位置X/Y/Z(只读)(Center Of Mass X/Y/Z (Read Only))这是一个只读属性,用于显示质心在刚体本地空间中的位置。
质心偏移X/Y/Z(Center Of Mass Offset X/Y/Z)用于偏移刚体质心坐标。
惯性张量缩放(Inertia Tensor Scale X/Y/Z)刚体原本的惯性系数与刚体质量和重心位置相关。该系数在刚体原有惯性系数基础上进行缩放。
惯性越大,运动状态就越不容易发生改变。
支配组(Dominance Group)当前定义了0到10号支配组。1到10号支配组之间存在支配关系,数字越大支配等级越高。0号组与其他所有组的支配等级相同。
支配等级高的刚体,相对于等级低的刚体,质量是无限大的。

动态属性

133368003151042828

属性说明
运动学刚体(Kinematic)如果运动学刚体(Kinematic) == true,当前刚体类型切换为运动学刚体。
如果运动学刚体(Kinematic)== false,当前刚体类型切换为动态刚体。
焊接到(Weld To)将布娃娃的骨骼焊接到另一个骨骼上,用于代替固定关节的功能(该属性用于布娃娃编辑)。
最大角速度(Max Angular Speed)刚体的最大角速度不会大于该值。
线性阻尼(Linear Damping)影响刚体线性速度的衰减速率。线性阻尼越大,刚体会越快的停止线性运动。
角阻尼(Angular Damping)影响刚体角速度的衰减速率。角阻尼越大,刚体会越快的停止旋转。
睡眠阈值(Sleep Threshold)这是一个刚体动能阈值,当刚体动能低于该值时,刚体进入睡眠计时,计时结束刚体进入睡眠状态。
稳定阈值(Stable Threshold)当刚体的质量归一化动能(mass-normalized kinetic energy)低于该阈值时,物体将趋于稳定。这里的稳定指的是场景中大量物体间相互作用的稳定性。

编辑碰撞体属性

场景(Scene)面板或者树形视图(Tree View)面板中,选中要进行编辑的碰撞体。右侧的刚体信息(RigidBody Detail)面板中,会显示相应的属性设置项。

image-20230228105458455

属性说明
碰撞体名称(Collider Name)碰撞体名称
碰撞体索引(Collider Index)碰撞体索引
设为触发器(禁用模拟)(Trigger (Disable Simulate))当设为触发器(禁用模拟)(Trigger (Disable Simulate)) == true时,碰撞体会被转换为触发器碰撞体,当有其他碰撞体进入触发器碰撞体内部时,会产生触发器事件。
参与模拟(禁用触发器)(Simulate (Disable Trigger))碰撞体参与物理模拟
参与场景查询(Scene Query)碰撞体参与场景碰撞查询
双面网格体(Double-Sided)仅当碰撞体类型为三角形网格体几何体(Triangle Mesh Geometry )时才有效。
双面网格体可以在Mesh内部做场景碰撞查询时,检测到背面三角形的面法线。
接触偏移(Contact Offset)当两个两个碰撞体距离小于接触偏移(Contact Offset)时,两个物体会产生碰撞。
接触偏移(Contact Offset)必须大于静止偏移(Rest Offset)。
静止偏移(Rest Offset)两个碰撞体的静止距离,等于它们静止偏移(Rest Offset)属性之和。
静止偏移(Rest Offset)等于0时,两个物体会刚好贴合在一起。
静止偏移(Rest Offset)大于0有利于两个物体相互平滑的滑动,因为这样可以将不规则表面对滑动的影响减到最小。

几何体

只有在几何体类型(Geometry Type)胶囊几何体(Capsule Geometry)球形几何体(Sphere Geometry)盒子几何体(Box Geometry)时才会显示此设置项,并且根据几何体类型的不同,几何体(Geometry )显示的属性也会不同。

胶囊几何体

image-20230228105706380

属性说明
胶囊体半径(Capsule Radius)胶囊体半径
胶囊体半高(Capsule Half Height)胶囊体半高

球形几何体

image-20230228105751889

属性说明
球体半径(Sphere Radius)球半径

盒子几何体

image-20230228105848559

属性名说明
盒子长(X)(Box Length (X))盒子长
盒子宽(Y)(Box Width (Y))盒子宽
盒子高(Z)(Box Height (Z))盒子高

坐标

image-20230228112103038

属性说明
本地空间位置(Local Position)碰撞体在刚体本地空间内的位置
本地空间角度(Local Angle)碰撞体在刚体本地空间内的角度

材质

image-20230208105245168

属性说明
材质文件(Material File)物理材质文件路径。
碰撞体会应用物理材质文件中指定的材质属性。
如果未指定物理材质文件,碰撞体才会应用下列材质属性。
动态摩擦(Dynamic Friction)动摩擦力系数
静态摩擦(Static Friction)静摩擦力系数
摩擦力组合模式(Friction Combine Mode)摩擦力组合模式
恢复力(Restitution)弹性系数
恢复力组合模式(Restitution Combine Mode)弹性系数组合模式

摩擦力/恢复力组合模式

两个不同材质物体碰撞后,两个物体之间生效的组合模式为序号大的混合模式。

finalCombineMode = maximum(material0.combineMode, material1.combineMode)

序号名称说明
1取平均值(Average)(a + b) / 2
2取最小值(Min Value)minimum(a,b)
3相乘(Multiply)a * b
4取最大值(Max Value)maximum(a,b)

事件回调

image-20230208110115573

属性说明
接触事件(Notify Contact Event)当刚体与其他物体碰撞时,是否触发碰撞事件。
穿透事件(Notify Overlap Event)当刚体穿透其他物体时,是否触发穿透事件。
两物体之间的碰撞响应结果必须都为重叠(Overlap),才能成功触发穿透事件。
睡眠事件(Notify Sleep Event)当刚体陷入睡眠或者被唤醒时,是否触发睡眠事件。

碰撞过滤

image-20230208110309836

属性说明
碰撞预设(Collision Preset)碰撞预设名称。
碰撞通道(Collision Channel)碰撞通道。
碰撞响应(Collision Response)对其他碰撞通道类型的碰撞响应。

保存/删除/模拟刚体

顶部工具栏提供了相应的按钮功能。

刚体编辑器

按钮名称说明
删除(Delete)清空已编辑的刚体,并删除资源文件。
另存为(Save As)另存为当前编辑的刚体。
保存(Save)保存当前编辑的刚体。
模拟(Simulate)模拟当前编辑的刚体。

凸包分解

点击场景(Scene)面板空白处,可在刚体信息(RigidBody Detail)面板中看到凸包分解(Convex Decomposition)的相关属性。凸包数过多,分解精度过高,都会严重影响碰撞生成的速度。

image-20230815174709145

属性说明
最大凸包数量(Max Hulls)模型中每一个网格体可生成的最大凸包数量。
凸包最大顶点数(Max Hull Verts)分解出的每一个凸包可生成的最大顶点数量。
凸包精确度(Hull Precision)生成凸包顶点的精确度,数值越大,生成的凸包越精确。
重新创建(Rebuild)根据当前设置生成碰撞。
默认(Default)恢复默认设置。