世界样条图
世界样条图是一种方便且性能友好的方法,用于沿样条图(其顶点和边)放置指定的节点(称为源节点)。 这不是旨在创建道路的单一目的对象。它也可以用于绳索,链条,管道和任何物体,它们的形状遵循弯曲的路径。它旨在帮助艺术家根据沿空间曲线放置的典型基本元素(例如炼油厂的管道)快速构建各种复杂的结构。
样条图由一组点p0, p1, ... pn和一组连接某些或所有这些点的边或线段(三次贝塞尔曲线样条)确定。
每个分段都由起点(pSTART)和终点(pEND)以及这些点处的切线矢量坐标确定,这些点确定分段的曲率(分别为tSTART和tEND)。由两个以上段共享的 点称为交界处。
源节点(当前为Static Mesh, Skinned Mesh和Projected Decal)可以放置在样条图的点处或沿着样条图的线段放置。每个点和线段可以分配一个或一组源节点。可以为分配给段的每个单独的源节点选择以下模式之一:
- stretching-源节点沿样条线段拉伸。拉伸仅适用于静态网格源节点。
- tiling-源节点沿样条线段重复。
- adaptive(前两个的组合)-沿样条线段复制源节点,但是每个节点的长度(拉伸)由段的相应部分的曲率确定。因此,长节沿线段的笔直部分放置,而短节沿弯线部分放置,在合理的外观和性能之间提供合理的平衡。
例如,一个路段可以分配两个源节点:一个代表道路(拉伸),另一个代表道路灯(与道路平铺)。差距)。
可以将任意数量的WorldSplineGraph节点添加到场景中,因为它使用了许多优化(例如将烘焙元素分成大段等)来确保大面积的可接受性能。
UP矢量的坐标还针对该段的每个点存储。该向量用于定义沿着样条图的线段放置的节点的方向。默认情况下,此向量平行于Z轴。 UP向量不会影响样条曲线段本身的曲率。
SDK包含Road Tool Constructor附加组件,其中包含一组可立即使用的资源(路段和各种类型的交叉路口),可以用作构造元素来简化道路的创建。
- 它不能转换为Node Reference。
- Node Layers不支持它。
也可以看看#
- WorldSplineGraph类文章,学习如何通过API管理世界样条图
- SplinePoint类别文章,了解如何通过API管理样条图点
- SplineSegment类别文章,了解如何通过API管理样条图段
- WorldSplineGraph类的C ++示例,说明如何管理样条图以及沿图段生成几何: Source / samples / Api / Nodes / WorldSplineGraph
- 样本说明WorldSplineGraph的用例Samples套件中包含的节点:
- world_spline_graph/roads-在地形表面上创建的道路
- world_spline_graph/ropes-绳索,链条和电缆
创建世界样条图#
要创建一个新的World Spline Graph,请执行以下操作:
管理要点#
添加新点#
通过克隆现有点将新点添加到样条图中。要添加新点,请执行以下操作:
- 选择World Spline Graph。
- 选择要克隆的所需点(将出现“移动操纵器”)。
- 在键盘上按Ctrl + D(将创建一个新点)。
- 使用“移动”操纵器来放置新创建的点。
调整点的位置#
要调整点的位置,请执行以下操作:
- 选择World Spline Graph。
- 选择所需的点(将出现“移动操纵器”)。
- 使用移动操纵器,就像移动节点一样。
您还可以通过Parameters选项卡的Spline Points部分来调整所选点的位置:
调整点的切线#
切线控制样条线段的曲率。要调整一点的切线,请执行以下操作:
- 选择World Spline Graph。
- 选择所需的点(将出现“移动操纵器”)。
- 选择所需的切线(如果所选点被多个线段共享,则将为其显示多个切线)。选择切线时,其旁边将显示“移动”操纵器。
- 使用移动操纵器,就像移动节点一样(相应段的形式将改变)。
调整点的UP向量#
上矢量控制沿样条线段放置的节点的方向。要调整一点的切线,请执行以下操作:
- 选择World Spline Graph。
- 选择所需的点(将出现“移动操纵器”)。
- 选择所需的UP向量(如果所选点被多个线段共享,则将为其显示几个UP向量)。
- 切换到“旋转操纵器”并使用它来调整所需的角度,就像旋转节点一样(沿着相应线段放置的节点的方向会改变)。仅当将节点分配给相应的线段时,您才能看到效果。
- 使用移动操纵器,就像移动节点一样(相应段的形式将改变)。
合并点#
有时可能需要合并某些点(例如,关闭样条线)。要将两个或多个点合并为一个,请执行以下操作:
- 选择World Spline Graph。
- 按住Shift键,选择要与区域选择工具合并的点或一对一地选择点。
- 右键单击要合并所选点的点,然后选择Merge To This Point。
- 所有点将合并为合并的点所属的线段共享的一个。
删除点#
要删除样条图的点,请执行以下操作:
- 选择World Spline Graph。
- 按住Shift键,使用区域选择工具或一对一地选择要删除的点。
- 按Del键。
管理细分#
添加新细分#
要将新线段添加到样条图,请执行以下操作:
- 选择World Spline Graph。
- 选择要添加的新段的起点(将显示“移动操纵器”)。
- 按住Shift键,然后使用“移动”操纵器定位新线段的终点。
- 要创建直线段,应在起点处沿切线方向拖动操纵器。
- 新添加的细分受众群使用上一个细分受众群的所有设置(分配的节点,放置模式和参数)。
您也可以通过选择分段并按Shift键移动来对其进行克隆,或者按Ctrl + D并使用“移动”操纵器放置克隆。
删除段#
要删除样条图的线段,请执行以下操作:
- 选择World Spline Graph。
- 按住Shift键,使用区域选择工具或一一选择要删除的段。
- 按Del键。
管理源节点#
如上所述,单个或一组源节点可以分配给样条图的每个点或线段。
区隔的工作流程#
要将源节点分配给选定的段,请执行以下操作:
- 选择所需的段。
- 在Parameters选项卡中单击Add Node。
- 在打开的窗口中,选择所需的节点,然后单击OK。
对于分配给所选段的每个源节点,以下设置可通过Parameters选项卡进行调整:
Node | 包含源节点的*.node文件的路径。 |
---|---|
Forward Axis | 定义将沿样条线定向源节点的哪条轴。 |
Placement Mode | 要生成的对象的类型。以下之一:
|
Adaptive Threshold | 确定在Adaptive放置模式下可以将源节点的实例拉伸多少,以覆盖该段的整个长度。 仅适用于Adaptive放置模式。 |
UV Tiling | 启用源节点纹理的平铺. |
Gap | 为Tiling放置模式定义源节点上相邻实例之间的间隔(以单位为单位)。 仅适用于Tiling放置模式。 |
积分工作流程#
要将源节点分配给选定的点,请执行以下操作:
- 选择所需的点。
- 在Parameters选项卡中单击Add Node。
- 在打开的窗口中,选择所需的节点,然后单击OK。
对于分配给选定点的每个源节点,以下设置可通过Parameters选项卡进行调整:
Node | 包含源节点的*.node文件的路径。 |
---|---|
Variant | 有许多可能的变体交界处。使用此滑块可以选择最合适的一个。 此参数仅影响表示结点(ObjectMeshSkinned)的源节点。 |
交界处#
交界处应与所有进入的路段正确互动,以提供无缝过渡。为此,使用了ObjectMeshSkinned个源节点。
用于结点的源节点必须符合以下要求:
- UnigineEditor中接合点的关节必须使其Y轴从接合点中心到相应分支的边缘。
- 每个结点的分支的外部关节必须正好位于其外部边缘的中心,分支的外部顶点的权重必须对于外部关节最大(即,分支的外部顶点仅受外部关节影响)。
- 由于接合点和线段由单独的网格表示,因此纹理及其UV贴图必须确保无缝的接合线段和线段段过渡。
- 一个段的两个端点可能都具有连接点,因此用于该段的纹理必须对称,至少其边缘必须对称。
- 道路的特定要求:
- 路口和路段必须用一对网格(路堤和道路本身)表示。路堤网格用于与地形表面平滑融合。只需为分配给路堤的物料启用Terrain Lerp状态即可。
- 为了确保路段和路口的正确变形,道路和路堤的三角剖分必须匹配。这样可以防止在上下移动样条线时使网格相互渗透。
导出世界样条图#
World Spline Graph 作为对象放置和变形的工具效果很好,但是由于一些技术问题,很难在最终应用程序中将其用作生成的对象。因此,一旦对象排列完成,就需要将样条图导出到 .mesh 或 .fbx 文件。
要导出 World Spline Graph,请在 World Nodes 层次结构中右键单击它,选择 Export to 和一个更可取的选项:
导出操作会生成独特的几何图形,您可以像使用任何其他模型一样在项目中使用这些几何图形,而不受任何额外限制。
限制#
由于网格的性质,如果将 World Spline Graph 导出到非常大的对象(从原点到两侧大约 10,000 m),则会出现与浮点精度相关的视觉伪影。我们建议将这些大对象拆分为较小的对象。
如果 World Spline Graph 虽然不是很大,但距离原点很远(大约 10,000 m 甚至更远),也可能会出现问题。在这种情况下,我们建议在不存储枢轴的情况下将其导出到 FBX(应禁用 Save root transform 选项),或者在将其导出到 Mesh 之前将 World Spline Graph 位置重置为原点。