几何体集调试绘制

对使用几何体集调试绘制和公开Chaos刚体属性的方法进行讲解。

Windows
MacOS
Linux

必须

[使用4.23源版本启用和编译](InteractiveExperiences/Physics/ChaosDestruction\ChaosDestructionOverview)
Chaos破坏工具。Chaos当前不适用于Epic Launcher的预编译版本。

使用几何体集时,显示特定几何体集(或一组几何体集)的信息十分实用。 利用**几何体集调试绘制Actor 可利用 细节** 面板或控制台命令切换如层级、群集、刚体信息等显示信息。

在编辑器中调试

关卡中有要调试的几何体集后,在 在编辑器中运行 会话期间,使用 世界大纲视图 查找并选择 GeometryCollectionDebugDrawActor

DebugDrawActor_Outliner.png

此操作将显示 调试绘制 属性面板,其控制当前关卡中几何体集内可用的不同可视化模式类型。

显示刚体ID

上手调试的最佳地点便是显示刚体ID。在Actor的 调试绘制(Debug Draw) 类别和 刚体(Rigid Body) 子类别中,启用 显示刚体ID(Show Rigid Body Id) 复选框。

DebugDrawActor_RigidBodyIDs.png

利用 选定刚体(Selected Rigid Body) 属性可查看所有刚体(-1)或输入想要显示的刚体ID。

DebugDrawActor_SelectedBody.png

在上图中的 Id 字段中输入 95,可仅显示左侧的柱体,而非场景中的两个物体。

启用场景中所有几何体集的可视化对于小测试场景十分有用,但可能会严重影响大关卡的帧率。

除在 选定刚体(Selected Rigid Body) 字段输入Id外,还可使用滴管选择场景中的对象。

DebugDrawActor_EyeDropper.png

同样可通过启用 调试绘制群集(Debug Draw Clustering) 选项,显示群集几何体集的非活跃子项来获取更多信息。

DebugDrawActor_DrawClustering.png

导航群集

选定刚体(Selected Rigid Body) 选项下,可在子项/父项间移动及在不同群集间循环。

以上视频启用了 调试绘制层级(Debug Draw Hierarchy)显示面(Show Faces),以便在循环时查看各群集的面。

可视化选项

使用 调试绘制完整集(Debug Draw Whole Collection) 属性可选择是否显示完整集。此操作将显示与选定刚体Id属于相同几何体集的所有刚体调试信息。

启用完整几何体集将会增加显示难度,并会对帧率产生负面影响,具体取决于集合大小。

也可通过下拉列表的方式显示几何体信息(几何体集的图表代表默认位于层级底部)。 如着重于探索顶部节点的几何体,调试绘制层级(Debug Draw Hierarchy) 选项将首先启用父项显示。该选项还可与 调试绘制群集(Debug Draw Clustering) 选项合并以同时显示父项和子项。

DebugDrawActor_TopDownGeo.png

由于刚体信息已在父项中显示,因此 调试绘制层级(Debug Draw Hierarchy) 选项仅影响几何体集组件属性的显示。

隐藏几何体

默认仅在显示碰撞体积时隐藏与选定刚体Id相关的几何体,但 隐藏几何体(Hide Geometry) 属性下还有部分其他选项。

选项

说明

不隐藏(Hide None)

不隐藏任何几何体。

隐藏碰撞(Hide Collision)

隐藏与刚体关联的几何体(默认选项),此类刚体被选中用于显示碰撞体积。

隐藏选中项(Hide Selected)

隐藏与选中刚体相关的几何体。

隐藏整个集(Hide Whole Collection)

隐藏与选中刚体相关的整个几何体集。

全部隐藏(Hide All)

隐藏所有几何体集。

将-1用作选中 刚体Id 时,最后四个选项相同(将隐藏所有几何体集)。

开关要显示的属性

细节 面板(或通过控制台)中可开关要显示的属性。 结合多个属性可产生不同的效果,例如下方范例中启用 显示刚体碰撞(Show Rigid Body Collision)显示刚体Id(Show Rigid Body Id) 以及选择 隐藏选中项(Hide Selected) 选项的 隐藏几何体(Hide Geometry)

DebugDrawActor_MultipleOptions.png

显示关卡集类型碰撞体积时,一次只能显示一个体积,即使启用 调试绘制整个集(Debug Draw Whole Collection) 选项也同样如此。

可将多个不同类别分组到多个类别:刚体刚体群集几何体集组件。 这些类别适用于选中刚体或包含选中刚体的整个几何体集。

GeometryCollectionDebugDraw_Properties.png

多数属性为自解释类型,例如 显示顶点(Show Vertices) 切换显示刚体顶点,或者 显示边界框(Show Bounding Box) 切换显示刚体边界框。 以下为部分例外。

  • 显示刚体速度(Show Rigid Body Velocity) - 此属性显示线性(箭头长度)和角速度(圆半径)。 GeometryCollectionDebugDraw_Velocity.png

  • 显示刚体力(Show Rigid Body Force) - 显示力(箭头)和扭矩(圆)。

  • 显示刚体信息(Show Rigid Body Infos) - 显示选中刚体完整的屏幕文本调试信息。 DebugDrawActor_ShowInfo.png

  • 显示连接边缘(Show Connectivity Edges) - 显示仍为群集的兄弟刚体的各逻辑连接。 DebugDrawActor_ClusterConnectivity.png

    由于 调试绘制群集(Debug Draw Clustering) 选项显示子节点信息,因此需进行使用。

  • 显示单个面(Show Single Face)单个面索引(Single Face Index) - 显示选中面以协助调试几何体。

    该可视化仅在选中特定几何体集时可用(选中刚体 不可为-1)。

可视化设置

可在 设置(Settings) 类别下切换调试可视化设置。

GeometryCollectionDebugDraw_Settings.png

在此可进行如更改绘制颜色或变换缩放属性等自定义。因颜色背景造成可视化不清时,该功能将十分有用。 多数属性为自解释类型,并会影响基本调试绘制元素的绘制。 此外,启用 使用活跃可视化(Use Active Visualization) 后可视化将随几何体集的各群集级别而变,调试行和文本将变暗,同时变形轴将随群集级别增大而变小。

DebugDrawActor_ActiveVisualization.png

使用控制台调试

还可在控制台中更改所有 几何体集调试绘制Actor 属性,具体步骤如下。

列出调试绘制命令

所有几何体集调试绘制命令均位于 p.gc 前缀下:

GeometryCollectionDebugDraw_ConsoleCommandList.png

在命令结尾处添加问号 ? ,可访问各命令的描述:

GeometryCollectionDebugDraw_ConsoleCommandInfo.png

由于所有命令均与调试绘制Actor的属性匹配,因此请同时参见

[在编辑器中调试](InteractiveExperiences/Physics/ChaosDestruction\GeometryCollectionDebug#debugfromtheeditor)
部分,了解属性效果的额外说明。

显示刚体Id

使用命令:

p.gc.ShowRigidBodyIds 1

选择用于调试绘制的刚体

使用命令:

p.gc.SelectedRigidBodyId X

在以上命令中,将X替换为需要显示其信息的刚体Id。

启用/禁用整个集的可视化。

使用命令:

p.gc.DebugDrawWholeCollection 1

此操作将显示与选定刚体Id同属相同几何体集的所有刚体调试信息。

隐藏几何体

默认仅在显示碰撞体积时隐藏与选定刚体Id相关的几何体,使用以下命令可选择另一选项:

p.gc.HideGeometry [0|1|2|3|4|]
0 不隐藏,不隐藏任何几何体。
1 隐藏碰撞,隐藏与选中碰撞体积可视化刚体相关的几何体(默认)。
2 隐藏选中项,隐藏与选中刚体相关的几何体。
3 隐藏整个集,隐藏与选中刚体相关的整个几何体集。
4 全部隐藏,隐藏所有几何体集。

将-1用作选中 刚体Id 时,最后四个选项相同(将隐藏所有几何体集)。

启用/禁用/查询调试绘制属性

还可通过命令台使用以下命令:

命令

说明

p.gc.DebugDrawHierarchy [0|1]

从选中刚体ID开始(如未选择则从根开始),显示层级顶部的可视化调试,而非叶节点。默认值 = 0。

p.gc.DebugDrawClustering [0|1]

显示当前选中刚体ID的群集子项可视化调试。默认值 = 0。

p.gc.ShowRigidBodyCollision [0|1]

显示选中刚体的碰撞体积。默认值 = 1。

p.gc.CollisionAtOrigin [0|1]

显示局部空间中原点处的碰撞体积。默认值 = 0。

p.gc.ShowRigidBodyTransform [0|1]

显示选中刚体的变形。默认值 = 1。

p.gc.ShowRigidBodyVelocity [0|1]

显示选中刚体的线性和角速度。默认值 = 0。

p.gc.ShowRigidBodyForce [0|1]

显示选中刚体的应用力和扭矩。默认值 = 0。

p.gc.ShowRigidBodyInfo [0|1]

显示选中刚体的信息。默认值 = 0。

p.gc.ShowConnectivityEdges [0|1]

显示选中刚体的群集连接边缘。默认值 = 0。

p.gc.ShowTransformIndex [0|1]

显示与选中刚体匹配的几何体集变形索引。默认值 = 0。

p.gc.ShowLevel [0|1]

显示与选中刚体匹配的几何体集层级。默认值 = 0。

p.gc.ShowTransform [0|1]

显示与选中刚体匹配的几何体集变形。默认值 = 0。

p.gc.ShowBoundingBox [0|1]

显示与选中刚体匹配的几何体集边界框。默认值 = 0。

p.gc.ShowFace [0|1]

显示与选中刚体匹配的几何体集面。默认值 = 0。

p.gc.ShowFaceIndex [0|1]

显示与选中刚体匹配的几何体集面索引。默认值 = 0。

p.gc.ShowFaceNormal [0|1]

显示与选中刚体匹配的几何体集面法线。默认值 = 0。

p.gc.ShowVertex [0|1]

显示与选中刚体匹配的几何体集顶点。默认值 = 0。

p.gc.ShowVertexIndex [0|1]

显示与选中刚体匹配的几何体集顶点索引。默认值 = 0。

p.gc.ShowVertexNormal [0|1]

显示与选中刚体匹配的几何体集顶点法线。默认值 = 0。

刚体碰撞

以下命令可用于显示刚体碰撞:

启用:

p.gc.ShowRigidBodyCollision 1

禁用:

p.gc.ShowRigidBodyCollision 0

查询:

p.gc.ShowRigidBodyCollision

更改可视化设置

以下命令也可用于自定义绘制信息的方式:

命令

说明

p.gc.PointThickness [float]

点厚度。默认值 = 6。

p.gc.LineThickness [float]

线厚度。默认值 = 1。

p.gc.TextShadow [0|1]

指数文本下的阴影,提高可读性。默认值 = 1。

p.gc.TextScale [float]

文本缩放。默认值 = 1。

p.gc.NormalScale [float]

法线大小。默认值 = 10。

p.gc.TransformScale [float]

变形大小。默认值 = 20。

p.gc.ArrowScale [float]

法线的箭头大小。默认值 = 2.5。

后期处理效果

若发现调试绘制线上有瑕疵,可能是由于后期处理影响了调试绘制线条的渲染方式。

关闭线的后期处理

使用控制台命令可关闭后期处理:

ShowFlag.PostProcessing 0

之前,开启后期处理:

GeometryCollectionDebugDraw_PostprocessingOn.png

之后,关闭后期处理:

GeometryCollectionDebugDraw_PostprocessingOff.png

关闭后期处理将阻止渲染LevelSet碰撞体积(参见下一章)。

打开LevelSet渲染的后期处理

使用调试绘制显示LevelSet前务必开启后期处理,否则将不会渲染光线行进材质。

ShowFlag.PostProcessing 2

之前,关闭后期处理,未渲染LevelSet:

GeometryCollectionDebugDraw_LevelSetPostprocessingOff.png

之后,开启后期处理,照常绘制LevelSet:

GeometryCollectionDebugDraw_LevelSetPostprocessingOn.png

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback