修改智能形状
预发布功能 — 尚未在正式版应用中推出。
更改已有的 Smart Shape。 调整大小、重新生成山丘或道路、延长端点,或更改其美术资源。可在 Object → Lifetime 中找到此行为。
控件图片是实际的深色模式屏幕截图,经过裁剪和排列以便阅读。它们展示了各项字段;示例目标并非适用于所有操作的可运行设置。示意图展示的是操作结果。
先选择目标,再选择一项操作
- 将 Shape type 设为与目标形状一致。
- 在 Object A 中选择形状,或使用 Dynamic Object A,并填入 Generate Smart Shape 输出的 Object ID。
- 选择 Action。界面只会显示该操作对应的输入项。
Shape type 用于选择形状类型,不会转换目标形状。 Box 仍然是 Box。修改新生成的形状之前,请先等待它触发 Ready 事件。
选择需要的编辑操作
Box 或 Freeform — 使用 Width 和 Height 调整大小
选择 Action → Resize。只有两个尺寸输入项:
试试看: 将 Box 从 16 × 8 m 改为 20 × 4 m,使区域变得更宽、更扁。Freeform 会调整现有轮廓的大小;Modify 没有 Freeform Variation 字段。
若只想更改美术资源而不调整大小,请选择 Graphics only。
Terrain — 重新生成山丘、延长端点或更改深度
选择一项操作:
- Regenerate hills: Hill height、Hill spacing 和 Hill variation。
- Extend left / Extend right: Extend distance 和 Extend style。选择 Add hills 会显示三个山丘输入项;选择 Continue end 则会隐藏它们。
- Change ground depth: 仅使用 Ground depth。
试试看: 向右延伸 12 m,选择 Add hills,并将高度设为 3 m、间距设为 12 m、变化设为 0%。现有地面会保留,并在端点处添加新地面。
对于生成式流式 Terrain,可执行的操作取决于目标是所有者还是当前有效的区段。Dynamic 目标会在行为运行时检查;请读取 Status 和 Error。
Finite Path — 重新生成、延伸、加宽或开合道路
Regenerate path 使用一组新的尺寸替换路线。闭合环路时,Bend spacing 会隐藏。
Extend start / Extend end 只使用 Heading 和 Extend distance:
Change path width 只显示 Path width。Close loop / Open loop 不需要数值输入。有限几何形状操作不适用于 Endless 所有者。
闭合赛道需要足够的转弯空间:Length 必须大于 Bend amount 的两倍,转弯半径必须大于 Path width 的一半,再加上任何正值的 Wall offset。即使满足这些条件,急弯或过宽的道路仍可能无法通过几何检查。
Endless Path — 调整弯道形状
选择 Reshape endless bends。若要更改整条路线,请将目标设为所有者;若只更改单个区段,请使用当前有效的 Section Object ID。
此操作会调整符合条件的当前有效区段,同时保留区段连接处、长度、宽度、朝向和碰撞策略。被占用的区段会受到保护。编辑所有者也会更新未来区段的设置。试着减小 Bend amount 或增大 Bend spacing,让弯道更平缓。
更改美术资源
选择 Graphics only,或启用 Change graphics,在编辑几何形状时同时更新美术资源。Sample path 不提供美术资源控件。
Box / Terrain 美术资源控件
每个插槽彼此独立。选择 Replace 后会显示图像选择器;请选择受支持的静态 PNG。清除唯一可见的美术资源可能会使物理形状变得不可见。生成的形状仍必须通过验证。
Freeform / Path 美术资源控件和替换选择器
Freeform 使用 Perimeter / Fill。Path 使用 Road。不想更改的插槽请设为保留现有资源。更改美术资源不会影响大小、碰撞模式、平铺大小、摩擦力或弹性。
读取 Endless 道路上的一个点
Sample path — 读取位置和方向,不更改道路
对 Endless Path 所有者或受支持的当前有效区段使用 Path → Sample path。
选择一种 Sample position 方法:
Nearest world position: 输入以场景米为单位的 World X 和 World Y,查找保留的道路中心线上距离最近的点。
Position along section: 使用 0(起点)到 1(终点)之间的数值。0.5 表示沿区段前向跨度的一半处,而不是沿弯曲道路实际行驶距离的一半处。此模式需要当前有效的 Section Object ID;仅有所有者 Object ID 不够。
成功时,Status 为 sampled。后续行为可使用 Sample X、Sample Y 和 Sample Heading。采样不会移动玩家或载具;请自行通过移动或定位行为应用这些输出。
检查结果
完成连接会在成功或失败后运行。请检查 Status:
applied— 编辑成功。sampled— Sample path 成功。failed— 读取 Error,并修正输入项或目标。
整个形状 ID、区段 ID 和目标组
所有者请使用 Object ID。对受支持的当前有效区段执行编辑时,请原样传递 Section Object ID;区段退役或重置后,此 ID 将失效。Target Reference 会保留目标范围,而 Modify 的 Object ID 输出始终返回所有者。
使用 Apply Behaviour To 处理由多个匹配形状组成的组,最多支持 256 个引用。各目标会分别应用;某个目标失败不会撤销之前成功的修改。Sample path 要求目标数量恰好为一个。Dynamic 目标可能会在运行时尚未确定对象之前显示选项。如果某项操作失败,请检查 shape type、Finite/Endless 模式、目标范围和 Error。
下面的可展开参考包含准确的输入、输出和兼容性规则,无需在操作指南中列出所有可能的字段。
字段参考:按需展开
下方的详细定义按形状和用途分组。每组涵盖多种可能的选项;这些输入项不会同时显示。
在项目运行时更改现有 Smart Shape,或读取 Endless Path 上的位置。选择与 Object A 匹配的形状类型,然后选择操作。请求完成后会运行已连接的行为;使用输出前请检查 Status 和 Error。
通用设置 — 形状和目标
首先选择匹配的类型、目标和操作。操作决定以下哪些输入组适用。
Shape type
凹凸地面请选择 Terrain,方向性填充形状请选择 Box,带单一周边图像的填充轮廓请选择 Freeform,道路请选择 Path。此选项决定可用的控件,不会将 Object A 转换为其他类型。
Object A
选择当前场景中可用且已启用的 Smart Shape。其类型必须与 Shape type 匹配。请求编辑新生成的对象或区段之前,请先等待其就绪。
Dynamic Object A
在 Object A 上启用 Dynamic,以使用其他行为提供的 Object ID。对于 Terrain 或 Path,当前有效的 Section Object ID 可指定单个生成区段,而非其所有者。例如,将 Section Generated 事件连接到此行为,并使用该事件的 Section Object ID。已退役或过期的区段会导致失败;不会退回到编辑整个所有者。
Groups
使用 Apply Behaviour To 选择由多个匹配的 Smart Shape 组成的组。每个请求最多支持 256 个引用;Sample path 则要求目标数量恰好为一个。系统会分别检查并应用每个目标,因此组请求失败不会撤销对其他目标已成功执行的更改。
Action
选择要更改的内容。Terrain 提供重新生成山丘、延伸、地面深度或美术资源操作。Box 和 Freeform 提供 Resize 或 Graphics only。Path 提供道路重新生成、延伸、宽度、环路控制、美术资源、采样和无尽弯道调整。系统只会读取所选操作使用的输入项。
Units
形状尺寸和延伸距离以米为单位,在对象自身的坐标空间中输入;对象的缩放和旋转仍会影响场景中的最终结果。World X、World Y、Sample X 和 Sample Y 则使用场景世界坐标,单位为米。角度使用度。请输入有限数值;百分比控件的范围为 0–100。
Box — Resize
Resize 使用 Width 和 Height。Graphics only 在美术资源组中介绍。
Resize
对于 Box 或 Freeform,分别按照请求的 Width 和 Height 缩放现有轮廓。系统会缩放现有点和曲线控制柄,而不是生成新轮廓。横向和纵向比例不同会拉伸形状。除非启用 Change graphics,否则会保留美术资源。
Width
Box 或 Freeform 轮廓的新宽度,以米为单位,必须为正数。仅用于 Resize。这是形状尺寸,不是美术资源图块的宽度。
Height
Box 或 Freeform 轮廓的新高度,以米为单位,必须为正数。仅用于 Resize。它独立于 Width,且不是 Terrain 的 Hill height 设置。
Terrain — 山丘、延伸和深度
Regenerate hills 使用山丘输入项。延伸使用距离和样式;仅当选择 Add hills 时才会添加山丘输入项。Change ground depth 使用 Ground depth。Endless 目标支持的操作较少。
Regenerate hills
使用 Hill height、Hill spacing 和 Hill variation 替换现有 Terrain 范围内的山丘。保留现有端点的位置和坡度,以维持与相邻地面的连接。不会延长范围。每次操作都会采用新的内部随机选择;Variation 可能会使结果不同。
Extend left
在有限 Terrain 的左端之外添加地面,并使用 Extend distance 和 Extend style。保留现有地表。Left 表示对象的本地左侧方向,会随对象旋转。
Extend right
在有限 Terrain 的右端之外添加地面,并使用 Extend distance 和 Extend style。保留现有地表。Right 表示对象的本地右侧方向,会随对象旋转。
Extend distance
要添加的正值距离,以米为单位。对于 Terrain,这是所选端点之外的水平距离。对于开放的有限 Path,这是从当前端点到新端点、沿所选延伸方向的距离,而不是沿生成曲线测得的长度。
Extend style
选择 Add hills,使用山丘控件生成新的起伏 Terrain 区段;或选择 Continue end,添加平直地面。此控件仅适用于有限 Terrain 的延伸操作。
Add hills
仅在新添加的 Terrain 范围内生成山丘。Hill height、Hill spacing 和 Hill variation 用于控制新地面,同时保留与现有地表的连接。
Continue end
在现有端点的高度添加平坦的水平 Terrain 区段。它不会沿着倾斜端点继续向上或向下延伸。不会使用 Hill height、Hill spacing 和 Hill variation。
Hill height
波峰到波谷的大致高度,以米为单位;它不是在地面两侧分别增加的高度。数值越大,山丘越高;0 表示不增加山丘高度。仍会保留现有端点的高度和坡度,因此 0 不一定会使整个范围变平。
Hill spacing
相邻波峰和波谷之间的大致水平距离,以米为单位。数值越大,山丘越宽缓;数值越小,山丘越密集。间距会根据可用范围进行调整。如果点数过多或山丘过于尖锐,请增大间距或减小 Hill height。
Hill variation
山丘高度和间距的变化程度,范围为 0% 到 100%。使用 0% 可生成规则图案;增大数值则会让地面更不规则。此设置不会更改保留的端点或所请求的整体范围。
Change ground depth
更改有限 Terrain 表面下方的深度,不重新生成山丘。此操作使用 Ground depth,不会移动表面点。Endless Terrain 不支持此操作。
Ground depth
从最低表面点向下到 Terrain 底部的距离,以米为单位。请输入非负值。值为 0 会移除表面下方的深度,但不会删除 Smart Shape。现有美术资源和碰撞设置仍决定其绘制方式和物理用途。
Endless Terrain
生成器会自动延伸地面。Modify Smart Shape 支持对当前有效的所有者或区段执行 Regenerate hills 和 Graphics only,但无法手动延伸端点或更改共用地面深度。编辑区段会保留其长度和共用连接处。可能会扰动接触中或占用中的物理对象的几何更改可能会被拒绝。
Freeform — Resize
Resize 使用 Width 和 Height 缩放现有轮廓。它没有 Variation 输入项。Graphics only 使用 Perimeter 和 Fill。
Resize
对于 Box 或 Freeform,分别按照请求的 Width 和 Height 缩放现有轮廓。系统会缩放现有点和曲线控制柄,而不是生成新轮廓。横向和纵向比例不同会拉伸形状。除非启用 Change graphics,否则会保留美术资源。
Width
Box 或 Freeform 轮廓的新宽度,以米为单位,必须为正数。仅用于 Resize。这是形状尺寸,不是美术资源图块的宽度。
Height
Box 或 Freeform 轮廓的新高度,以米为单位,必须为正数。仅用于 Resize。它独立于 Width,且不是 Terrain 的 Hill height 设置。
Path — 有限道路编辑、Endless 弯道和采样
请查看所选操作对应的条目。采样会将几何形状输入项替换为 World X/Y 或 Section position。有限和 Endless 操作对目标的要求不同。
Regenerate path
使用 Length、Path width、Bend amount、Closed loop 和 Heading 替换有限 Path 的中心线;开放道路还会使用 Bend spacing。替换后的道路从旧道路的第一个点开始,并保留现有碰撞策略。此操作不适用于 Endless Path;请改用 Reshape endless bends。
Length
重新生成有限 Path 的正值前向跨度,以米为单位;它不是沿弯道或环路行驶的总距离。开放 Path 会沿 Heading 方向前进此距离。对于闭合环路,此值表示环路整体的前向跨度。
Path width
道路的正值总宽度,以米为单位,按中心线横向测量。Regenerate path 和 Change path width 会使用此值。它控制道路形状,而非源图像大小。Endless Path 区段会保留生成时选定的宽度。
Bend amount
对于开放的有限 Path,表示偏离起始方向的横向距离,以米为单位;0 表示直线。对于重新生成的 Closed loop,此值表示转弯半径。对于 Reshape endless bends,此值控制所需的横向弯曲大小;系统可能会缩小弯道,以确保道路及其墙壁有效。
Bend spacing
交替弯道之间的正值前向距离,以米为单位。数值越大,弯道越长缓。有限 Path 会将弯道模式调整至 Length 范围内;Endless 区段则会将其调整至固定连接处之间。重新生成闭合环路时不会使用此输入项。如果有限 Path 超过点数限制,请增大间距或缩短 Length。
Closed loop
重新生成有限 Path 时,启用此选项可创建胶囊形闭合道路;关闭则创建开放道路。闭合环路要求 Length 大于 Bend amount 的两倍,且 Bend amount 大于 Path width 的一半。启用此选项时不会使用 Bend spacing。若要连接现有道路而不重新生成,请使用单独的 Close loop 操作。
Heading
对于 Regenerate path,这是对象自身坐标中的绝对方向:0° 朝右,90° 朝上。对于 Extend start 或 Extend end,这是相对于相应端点朝外方向的转角:0° 表示直行,正值表示逆时针转弯,负值表示顺时针转弯。对象旋转仍会产生影响。
Extend start
在开放有限 Path 的第一个点之前添加一段路。Extend distance 用于设置新端点与旧端点之间的距离;Heading 会相对于起点朝外方向改变延伸方向。延伸闭合环路前,请先将其打开。Endless Path 会自动延伸。
Extend end
在开放有限 Path 的最后一个点之后添加一段路。Extend distance 用于设置新端点与旧端点之间的距离;Heading 会相对于终点朝外方向改变延伸方向。延伸闭合环路前,请先将其打开。Endless Path 会自动延伸。
Extend distance
要添加的正值距离,以米为单位。对于 Terrain,这是所选端点之外的水平距离。对于开放的有限 Path,这是从当前端点到新端点、沿所选延伸方向的距离,而不是沿生成曲线测得的长度。
Change path width
在保留中心线的同时更改有限道路的总宽度。形状更改只会使用 Path width。若宽度导致道路重叠或墙壁无效,操作可能会被拒绝。Endless Path 不支持此操作。
Close loop
连接现有有限 Path 的两端,同时保留现有道路。必要时可能会添加一段回接道路。如果无法在不交叉或挤压道路的情况下安全连接,则请求会失败。此操作不会使用 Length、Bend amount、Closed loop 和 Heading。
Open loop
在闭合有限 Path 上切开一个小间隙,将其变为开放道路,同时保留其余路线。此操作可能需要额外点数;若形状已达到点数限制,则可能失败。目标必须已闭合;Endless Path 始终为开放状态。
Reshape endless bends
更改当前有效 Endless Path 上的 Bend amount、Bend spacing 和 Bend variation,同时保留区段长度、宽度、朝向、碰撞策略和共用连接处。使用带有 Section Object ID 的 Dynamic Object A 时,只会更改该区段;请求目标为所有者时,也会更新未来区段的设置。被占用的区段会受到保护。较早的连接处退役后,调整保留区段中的第一个区段可能会失败;请选择更靠后的当前有效区段。有限 Path 请改用 Regenerate path。
Bend variation
对于 Reshape endless bends,输入 0–100% 来控制弯道间距、大小和方向的不规则程度。使用 0% 可生成规则模式。系统会保留当前运行的随机种子,因此对同一区段重复使用相同设置,不会请求生成新的随机道路。
Sample path
读取一条当前有效的 Endless Path 上的位置和前向朝向,不更改其形状或美术资源。不支持有限 Path。使用 Sample X、Sample Y 和 Sample Heading 将对象放置到道路上,或引导对象返回道路。采样仅搜索当前保留的区段,不包括已退役区段或未来道路。
Sample position
选择 Nearest world position,使用 World X 和 World Y 查找附近的道路点;或选择 Position along section,使用 Section position 对特定区段进行采样。这些模式仅适用于 Sample path。
Nearest world position
使用 World X 和 World Y,在保留的 Endless Path 中心线上查找附近的点。使用所有者 Object ID 可搜索整条保留的道路。如果使用 Section Object ID,而最近的结果属于其他区段,则请求会失败。
Position along section
读取一个当前有效 Endless Path 区段内的点。将 Dynamic Object A 设为其 Section Object ID,并输入 Section position。仅有所有者 Object ID 不够。
World X
Nearest world position 使用的场景世界水平坐标,以米为单位。正 X 方向朝右。这不是屏幕像素坐标,也不是相对于 Object A 的距离;它可以来自其他对象的位置输出。
World Y
Nearest world position 使用的场景世界垂直坐标,以米为单位。正 Y 方向朝上。World X 和 World Y 共同确定要搜索附近的目标位置,而不是将道路移动到新位置。
Section position
取值范围为 0 到 1:0 表示区段起点,0.5 表示前向跨度的一半处,1 表示终点。此值沿区段的主要方向表示进度百分比,而不是占弯曲道路总长度的百分比。此模式需要当前有效的 Section Object ID。
美术资源 — Change graphics 和 Graphics only
Graphics only 或启用 Change graphics 后,会显示这些操作。界面只会显示所选形状对应的插槽;只有 Replace 会显示图像选择器。Sample path 会隐藏所有美术资源控件。
Graphics only
更改所选美术资源插槽,而不更改轮廓、山丘、道路宽度或碰撞策略。四种形状类型均可使用。分别为每个受支持的插槽选择 Keep existing、Replace 或 Clear。
Change graphics
启用此选项,可在执行形状操作时一并更改美术资源插槽。对每个目标而言,形状和所请求的美术资源会一并验证和应用。关闭此选项则保留所有美术资源。Graphics only 始终会显示插槽控件,而 Sample path 从不更改美术资源。
Keep existing
保留此插槽当前指定的美术资源不变。忽略其 Replace 选择器中存储的任何美术资源。对于不想编辑的插槽,请选择此项。
Replace
将图像选择器中选定的静态 PNG 设为此插槽的美术资源。选择器可使用 Dynamic graphic 输入,但该输入必须解析为受支持的静态 PNG;不支持动画帧和动画循环。选择为空或无效时,请求会失败,而不会在不提示的情况下清除插槽。
Clear
移除此插槽的图像指定。这不会删除 Smart Shape、移除轮廓或关闭其碰撞策略。生成的配置仍必须通过验证。
Side and bottom graphics
显示 Terrain 或 Box 的 Left、Right 和 Bottom 插槽控件。这是用于展开控件的选项,不是启用或禁用这些美术资源的开关。隐藏控件不会重置之前选择的插槽操作;若要保持某个插槽不变,请使用 Keep existing。
Top
Terrain 和 Box 顶部朝向边缘所使用的美术资源。可独立于 Middle 和其他边缘插槽选择 Keep existing、Replace 或 Clear。
Middle
Terrain 和 Box 内部填充区域使用的美术资源。它与表面和边缘美术资源相互独立。替换此插槽会更改填充美术资源,但不会设置新的地面深度或轮廓大小。
Left
Terrain 和 Box 左侧朝向边缘所使用的美术资源。使用 Side and bottom graphics 展开此项。
Right
Terrain 和 Box 右侧朝向边缘所使用的美术资源。使用 Side and bottom graphics 展开此项。
Bottom
Terrain 和 Box 底部朝向边缘所使用的美术资源。使用 Side and bottom graphics 展开此项。
Perimeter
Freeform 沿外轮廓重复绘制的美术资源。与 Terrain 和 Box 使用的方向性边缘插槽不同,Freeform 只有这一个周边插槽。
Fill
Freeform 轮廓内部使用的美术资源。它可以独立于 Perimeter 保留、替换或清除。
Road
Path 沿道路绘制的美术资源。Path 只有这一个美术资源插槽;不会显示单独的填充、侧面或底部插槽。
输出、完成状态和安全性
这些是返回值和执行规则,不是额外的输入字段。Sample path 会提供 Section Index 和 Sample X/Y/Heading。
Target Reference
输出包含确切的目标所有者或区段引用。如果后续操作必须保持相同范围,请将此引用传递给 Dynamic Object A。组请求可能会返回引用数组。
Object ID
输出用于标识 Smart Shape 所有者,即使 Object A 的目标是某个区段也是如此。若要让后续编辑仍限定在区段范围内,请使用 Target Reference 或 Section Object ID。组请求可能会返回所有者 ID 数组。
Terrain Object ID
此兼容性输出包含与 Object ID 相同的所有者 ID,即使目标是 Box、Freeform 或 Path 也是如此。它不代表单独的 Terrain 对象或某个区段。
Section Object ID
输出包含采样的 Endless Path 区段,或成功的单区段编辑所指定的区段。对于常规的所有者范围编辑或多目标编辑,此输出为空。区段 ID 是临时的:当区段退役、对象重置或删除,或者场景/运行发生变化时,ID 就会失效。
Section Index
对于成功的 Sample path 请求,表示生成区段在其 Endless Path 运行中的索引,从 0 开始。此数值用于标识序列,不是 Object ID,也不是以米为单位的位置。
Sample X
对于成功的 Sample path 请求,表示采样中心线点在场景世界坐标中的 X 坐标,以米为单位。与 Sample Y 一起使用。它不是相对于摄像机或 Smart Shape 的坐标。
Sample Y
对于成功的 Sample path 请求,表示采样中心线点在场景世界坐标中的 Y 坐标,以米为单位。与 Sample X 一起使用,可将其他对象放置到道路上。
Sample Heading
对于成功的 Sample path 请求,表示采样点处的前向切线方向,以世界坐标度数表示:0° 朝右,90° 朝上。负角度有效。这表示沿道路的方向,而不是 Path 延伸所使用的相对转角 Heading 输入项。
Status
编辑进行期间显示 modifying;编辑成功时显示 applied;Sample path 成功时显示 sampled;请求被拒绝时显示 failed。完成后会运行已连接的行为,包括失败时。只有在显示 applied 或 sampled 时,才应将其他输出视为可用结果。
Error
Status 为 failed 时,提供易于理解的说明,例如类型不匹配、几何无效、区段被占用、引用已过期或 Endless 操作不受支持。成功后此字段为空。请修正输入,或获取当前有效的区段引用后重试。
Completion and safety
在此行为上下文中,请求会按顺序运行,最多允许 16 个未完成的请求;超过此容量后,后续请求会报告 failed,直到容量恢复。依赖前一项更改的请求应等待其完成后再发出。禁用、重置、场景更改或拆除可能会取消待处理的任务,而不会运行已连接的行为。成功的结果会在交付输出前再次检查,但其所有者或区段之后仍可能消失;请勿将区段 ID 作为永久对象引用保存。

