如何操作Pangu曲线

总览

Pangu中的水系(Water)、道路(Road)子系统中均使用了曲线工具,用于绘制河流、湖泊、道路等地形要素。

本文将介绍Pangu曲线的组成与编辑操作。

曲线组成

本节将以道路子系统为例,从最基础的曲线配置开始,介绍曲线的组成部分,并逐步添加可选配置项,展示场景中曲线形态的变化以及相关属性的变化。

与曲线配置相关的前置知识,请参考曲线配置编辑器

基础曲线

通过Pangu窗口中菜单栏的Tools-Spline Config Editor选项,打开曲线配置编辑器。
新建曲线类Spline_Road,将系统类型设为Road,卫星点数量设为2,其余配置项均使用默认值,然后点击Apply Config:

创建曲线

进入道路子系统,在场景中创建一条Spline_Road类曲线,并新增曲线点。

  • 创建Spline_Road类曲线:在道路编辑器的曲线实例管理面板中选中Spline_Road类,然后点击左侧工具栏的添加曲线按钮

  • 在地形表面新增曲线点:按住Ctrl同时鼠标左键单击地形表面

  • 连接曲线点以新增曲线段:选中一个曲线点,按住Ctrl同时点击另一个曲线点

组成

曲线的组成部分如图所示: 1 中心点:编辑曲线时手动添加,可自由移动

2 切线点:拖拽以调整中心点两侧的切线长度

3 卫星点:从属于中心点,添加中心点时自动添加,用于表示带有宽度的曲线,左右两侧数量相同,拖拽以调整宽度值

4 卫星线:卫星点所在的线

5 方向标识:标明曲线朝向


属性

曲线实例、曲线点和曲线段的属性各自独立,在曲线管理面板上选中任意对象后,可在编辑器的细节面板或Pangu界面右侧的细节面板中查看相关属性。

选中曲线实例,查看属性:

  • 基础属性(Basic)
    • 唯一标识符(Guid):自动生成,无需修改
    • 曲线名(Label):可重命名,与json文件对应
    • 拥有者(Owner Name):若曲线实例被锁定,则显示锁定者名称
    • 配置(Config):曲线实例所属的曲线类配置
    • 地块坐标(Tile Coords):曲线实例经过的所有地块坐标
  • Meta属性(Attribute)
    • 路径(Path)
      • Meta路径(Meta Path):Meta属性对应的Meta文件路径
    • 属性内容(General):由Meta文件生成,可自定义属性
  • 渲染(Render)
    • 颜色(Color):曲线线框的颜色
    • 粗度(Thickness):曲线线框的粗度
    • 图标缩放(Sprite Scale):曲线点图标的缩放

选中曲线点,查看属性:

  • 曲线点(Point)
    • 位置(Location)
    • 旋转(Rotation)
    • 左侧宽度值(Left-Widths):宽度值数量与单侧卫星点数量相同
    • 右侧宽度值(Right-Widths):宽度值数量与单侧卫星点数量相同
    • 衰减值(Falloff)
      • 端点衰减值(End Falloff):当曲线点为任意端点时,编辑此数值以调整使用曲线段地形形变功能时的过渡效果
        • 端点衰减值为0时:
        • 端点衰减值为1000时:
  • Meta属性(Attribute)
    • 路径(Path)
      • Meta路径(Meta Path):Meta属性对应的Meta文件路径
    • 属性内容(General):由Meta文件生成,可自定义属性

选中曲线段,查看属性:

  • 曲线段(Segment)
    • 连接(Connections):曲线段两端的连接信息

      • 切线长度(Tangent Len):曲线段各端连接处的切线长度
    • 插值类型(Interp Type):自定义曲线段的整体插值方式

      • 曲线(Curve)
      • 直线(Line)
      • 自动(Auto):根据两端曲线点的旋转差自动切换插值方式
      • 混合(Mixed):曲线与直线插值两种方式混用,插值点位置使用曲线插值,插值点处宽度使用线性插值 在两端点宽度不同的曲线段处可以看出其与曲线插值的差异,下图为曲线插值: 下图为混合插值:
    • 卫星线插值类型(Satellite Interp Type):自定义单条卫星线的插值方式,同样提供了曲线直线自动三种可选插值方式

      • 启用自定义(Enable Custom):勾选已启用自定义卫星线插
      • 左侧(Left):左侧各卫星线的插值方式
      • 右侧(Right):右侧各卫星线的插值方式 例如,将左侧两条卫星线的插值方式设为直线,右侧两条设为曲线
    • 地形形变(Landscape Deformation)

      • 地形层名(Layer Name):设置材质权重值受影响的地形层名(已废弃,在后续版本中此属性将被移除)
      • 升高地形(Raise Terrain):勾选以允许形变时升高地形
      • 降低地形(Lower Terrain):勾选以允许形变时降低地形
  • Meta属性(Attribute)
    • 路径(Path)
      • Meta路径(Meta Path):Meta属性对应的Meta文件路径
    • 属性内容(General):由Meta文件生成,可自定义属性

添加轮廓点

调整曲线类配置,将左右侧轮廓点数量均设为1,并将默认轮廓线宽度设为300

轮廓点区别于卫星点,支持自由移动,可以用于绘制曲线两侧的不规则轮廓,例如赛道两侧的护栏。

组成

应用新配置后的曲线如图所示: 1 轮廓点:从属于中心点,添加中心控制点时自动添加,但与卫星点不同,可以自由移动位置,用于表示曲线两侧的外围轮廓

2 轮廓段:相邻轮廓点连接的线段

添加轮廓点后,可以在曲线实例管理面板的树状结构中确认轮廓点和轮廓段的与其中心的对应关系(Label中命名含有Center的对象为中心,命名含有Outline的对象为轮廓点/段):

添加衰减线

调整曲线类配置,勾选使用衰减线选项:

衰减线在场景中表现为虚线,可以用于绘制曲线两侧的过渡区域。例如河流两侧与地形的过渡。

组成

应用新配置后的曲线如图所示:

  1. 衰减点:拖拽以调整衰减值
  2. 衰减线:相邻衰减点连接的线段

属性

选中曲线点,查看属性:

  • 左侧衰减值(Left Falloff)
  • 右侧衰减值(Right Falloff)

添加高度线

调整曲线类配置,勾选使用高度线选项:

高度线在场景中表现为虚线,可以用于绘制曲线在Z轴上的变化,例如河道的深浅。

组成

应用新配置后的曲线如图所示:

  1. 高度点:拖拽以调整高度值
  2. 高度线:相邻高度点连接的线段

属性

选中曲线点,查看属性:

  • 高度值(Height)

编辑操作

本节将继续使用上一节中创建的曲线类Spline_Road来展示曲线相关的编辑操作。

基础的选中和删除等操作此处不再赘述,曲线编辑操作的相关快捷键可参考快捷键设置

模式

在关卡编辑器视口右上角的工具栏中,可以切换曲线的编辑模式:

  1. 选择模式:仅可选中曲线点或段
  2. 位移模式:选中曲线点后可以调整其位移
  3. 旋转模式:选中曲线点后可以调整其旋转
  4. 形变模式:选中曲线点后可以调整其宽度值、切线长度、高度值、衰减值
  5. 坐标空间:分为局部空间和世界空间,在位移和旋转模式中可以切换使用

多选

  • 选中任意个点或段:按住Shift同时点选目标
  • 选中所有相连中心点或段:双击任意中心点或段,或选中任意中心点或段后按下Ctrl+A
  • 选中两个中心点间的相连中心点:选中任意两个中心点后按下Shift+A
  • 选中两个中心段间的相连中心段:选中任意两个中心段后按下Shift+A

调整

  • 曲线实例整体移动:在位移模式下,选中一个中心点,按住A同时移动中心点
  • 通过切线旋转中心点:在形变模式下,选中一个中心点,按住Shift同时拖拽切线以调整旋转Yaw值;按住Alt同时拖拽切线以调整旋转Pitch值
  • 同时调整双侧宽度值:在形变模式下,选中一个中心点,按住Alt同时拖拽卫星点
  • 同时调整双侧衰减值:在形变模式下,选中一个中心点,按住Alt同时拖拽衰减点

进阶特性

曲线文件管理

为了实现与Houdini的数据交互,Pangu曲线将以每个曲线实例为单位,导出为json文件,并根据其所属的地图、子系统导出至对应的路径: [Kaitian文件夹] / PcgMaps / [项目名] / [地图名] / [地图版本号] / LevelConfig / [所属子系统名]sys / PanguCurves / p2k / [曲线类].[曲线Label].spline.json

json文件中包含这个曲线实例的所有数据,包括曲线实例自身、各个曲线点和各个曲线段的所有属性,在Houdini中通过特定节点可以读取此json文件并重建曲线。

在编辑器内执行曲线实例的导入/导出时,会读取/写入对应的json文件。

Meta属性

Meta属性的基础用法可以参考Meta编辑器

Pangu曲线的实例、点和段均支持自定义Meta属性,相互独立且以曲线类为单位。其对应的Meta文件路径规则如下:

  • 曲线实例:[Meta文件夹] / Spline / Attribute / [曲线类名].Global.meta.json
  • 曲线点:[Meta文件夹] / Spline / Attribute / [曲线类名].ControlPoint.meta.json
  • 曲线段:[Meta文件夹] / Spline / Attribute / [曲线类名].Segment.meta.json

其中,Meta文件夹的路径规则可以参考Meta存储位置

例如,Spline_Road曲线类的曲线实例Meta属性文件路径为: [Meta文件夹] / Spline / Attribute / Spline_Road.Global.meta.json

为曲线类新增Meta属性配置可以参考配置一种新的曲线

修改曲线类的Meta属性配置可以参考修改已有的Meta

如果在曲线类的Meta属性中添加了预设,可以在曲线设置面板上快速切换并应用预设。

例如,为Spline_Road类曲线的曲线实例应用Meta属性预设City 1 切换至Spline_Road

2 选中曲线实例

3 选中属性预设City

4 点击Apply应用预设

地形形变

曲线的地形形变功能可以升高或降低地形高度,使其贴合曲线段表面。 在场景中选中任意曲线段,按下Enter即可触发:

限制选择

在编辑曲线时,将默认启用限制选择模式,关卡编辑器视口左上角会显示Restrict Selection的提示:

在限制选择模式下,鼠标的选中操作只能选中曲线点或段。通过按下快捷键Shift+R可以切换限制选择模式的激活状态。关闭限制选择模式后,可以如常选中曲线和场景中的其他物体。

中心点跟随

在绘制较为复杂的曲线时,可能需要将多个分段曲线汇聚于某个曲线点,例如道路子系统的交叉路口或水系子系统的河流支流等。在这种情况下,可以使用曲线中心点的跟随功能。

在位移编辑模式下,选中任意中心点,按住快捷键V并拖拽移动使其接近另一个目标中心点,当目标中心点变红时,松开快捷键V,即可实现跟随:

在跟随状态下,曲线点的图标将与正常状态不同,点击图标时将同时选中所有跟随点: 1 正常状态下的曲线中心点图标

2 跟随状态下的曲线中心点图标

需要解除跟随状态时,可以选中跟随点,按下快捷键B

在曲线操作面板中,可以调整跟随选项,自定义跟随效果:

  • 对齐旋转(Align Rotation):勾选此项后,将自动对齐跟随点的旋转值
  • 对齐宽度(Align Width):勾选此项后,将自动对齐跟随点的宽度值
  • 自动跟随距离(Auto Follow Distance):调整自动跟随功能的距离阈值 调整合适的距离阈值后,选中曲线实例,在右键菜单中选择自动跟随点(Auto Follow Points)即可执行自动跟随的操作: 效果如下图,间距小于距离阈值的曲线中心点将自动跟随:

跨子系统显示

在默认情况下,进入各子系统后,不属于当前子系统的曲线将被隐藏。例如,在进入道路子系统后,水系子系统的曲线将被隐藏。

如果需要在当前子系统中显示其他子系统的曲线,可以通过小地图右上角工具栏的菜单进行切换:

如上图所示,在道路子系统中,勾选水系子系统选项后,可以在场景中显示水系子系统的曲线:

在场景中,按下快捷键Tab后,当鼠标悬浮于曲线上时,将弹出曲线信息面板,显示其名称、所属子系统等。使用跨子系统显示时,可以通过此功能来区分属于不同子系统的曲线。

此外,需要注意的是,跨子系统显示的曲线无法选中和编辑,仅作预览使用。

自动平滑

曲线配置编辑器中,可以开启曲线的自动平滑功能:

开启自动平滑功能后,当移动曲线点时,与其相邻的两个曲线点会自动调整其旋转值:

此外,在形变模式下调整曲线中心点的切线长度时,两侧的切线长度将保持一致:

选中曲线中心点,可以在细节面板中观察到,新增了自动旋转(Auto Rotate)属性:

开启自动平滑功能后,所有曲线中心点的自动旋转属性都将默认勾选。当此属性被勾选时,曲线点自身将受到相邻中心点移动的影响,自动调整旋转值。取消勾选后可以解除,不再受其影响。当手动调整中心点的旋转时,也会自动取消勾选此属性。

预览Mesh

曲线配置编辑器中,可以开启曲线的预览Mesh功能(当前版本仅支持曲线段的预览Mesh):

开启预览Mesh功能后,选中曲线中心段,可以在细节面板中观察到,新增了预览Mesh的相关属性:

  • 预览Mesh(Preview Mesh)
    • Mesh资产(Mesh)
    • 覆写材质(Material Overrides)
    • 水平中心对齐(Center Horizontally):勾选以使Mesh的中心自动对齐
    • 中心调整(Center Adjust):中心对齐的偏移值
    • 缩放跟随宽度(Scale to Width):勾选以使Mesh的缩放跟随曲线宽度自动调整
    • 缩放值(Scale):若勾选了缩放跟随宽度,将在其基础上继续调整
    • 前方向(Forward Axis)
    • 上方向(Up Axis)

其中,前方向和上方向的可选值均为X Y Z三个选项,前方向和上方向不能使用相同的值,否则将无法正确显示Mesh。

为曲线中心段设置预览Mesh后,可以如常继续绘制曲线,新的中心段将自动应用相同的Mesh:

此外,需要注意的是,启用了预览Mesh功能后,曲线中心点左右两侧的宽度值将自动同步,始终保持预览Mesh的水平中心对齐。

贴合优先级

曲线点的贴合功能可以调整其Z轴坐标,使其贴合目标对象的表面。在场景中选中曲线点,然后按下快捷键End即可:

在默认情况下,曲线点优先贴合地形表面。在曲线配置编辑器中,可以通过调整Snap Priorities属性来改变曲线点的贴合优先级:

  • Type:贴合对象类型
    • Landscape:地形(默认值)
    • StaticMesh:静态模型
    • BSP:几何体笔刷模型
    • Foliage:植被模型
  • Tag Filter:贴合对象筛选标签
  • Offset:贴合偏移值

StaticMesh类型为例,在曲线配置中设置如下: 类型设为StaticMesh,添加筛选标签Pangu,设置偏移值为(0, 0, 300)。

在场景中创建一条曲线,并在其下方放置一个模型,使用贴合功能:

可以观察到曲线点并未贴合到模型表面,这是因为设置了筛选标签,因此,需要现在模型的Actor上添加标签Pangu

再次使用贴合功能: 可以观察到曲线点正确贴合,并且由于设置了偏移值,与模型保持了一定间距。

其他类型对象的用法与此相同,不再赘述。

以上说明的都是设置了单个优先级的情况,同时也支持设置多个优先级,优先程度从上至下递减。

贴地预览

曲线的贴地预览功能可以使曲线点和曲线段自动贴合地形。 此功能需要调整曲线段属性来开启,在场景或曲线实例管理面板中选中曲线中心段,可以在细节面板中看到Fit Landscape属性:

勾选后,曲线段将自动贴合地形,并在绘制过程中始终保持贴合状态。此外,曲线段两端的曲线点旋转的Z轴朝向将始终与地形表面的法线朝向保持同步。

Spline_Road类曲线为例,未开启贴地预览:

开启贴地预览:

在绘制过程中,移动曲线点后,将自动保持贴合状态:

形状锁定

曲线的形状锁定功能可以通过限制中心点的移动轴向并自适应调整宽度来实现曲线整体形状的锁定。

开启形状锁定前,移动中心点和调整两侧宽度都会导致曲线整体形状发生变化:

在曲线工具面板左侧工具栏中,点击Toggle Lock Shape按钮可以打开/关闭形状锁定:

开启形状锁定后,中心点的移动方向将被限制在中心点自身的Y轴向,最外侧的宽度将不允许调整,移动中心点或调整中心点两侧宽度时会自适应调节相邻的宽度,保持整体形状不变:

曲线Actor蓝图类

Pangu曲线支持使用继承于PanguSplineActor类的蓝图Actor类来创建曲线Actor,便于在编辑器中拓展曲线功能。

下面将演示如何创建一个道路系统的曲线类,并为其配置蓝图Actor类,生成蓝图Actor。

首先,创建一个继承于PanguSplineActor类的蓝图Actor类,命名为BP_Road

然后,在曲线配置编辑器中新增曲线类,勾选Use Override BP Actor选项,并填写蓝图路径Override BP Actor Path

最后,在道路工具中新增BP_Road类曲线: 可以在世界大纲中找到生成的蓝图曲线Actor,并通过修改蓝图来拓展曲线功能。