几何体脚本库(Geometry Scripting Library)包含非常广泛的功能,从低级别的网格体构造和查询(例如逐三角形构建网格体或计算其顶点数量),到高级别运算,如网格体布尔运算和相交测试,不一而足。
如需详细了解如何使用几何体脚本库,请参阅几何体脚本用户指南。
大部分函数在编辑器中以及在运行时可用。 但是,一些函数仅在编辑器中可用,下面的表中已注明。
资产和组件读写
这些函数用于读写动态网格体实例,例如读写现有或新的资产或组件。
| 节点名称 | 描述 |
|---|---|
| 从静态网格体复制网格体(Copy Mesh From Static Mesh) | 从静态网格体资产提取动态网格体资产。 |
| 将网格体复制到静态网格体(Copy Mesh To Static Mesh) | 使用从动态网格体资产转换的新几何体更新静态网格体资产。 |
| 从组件复制网格体(Copy Mesh From Component) | 从世界或本地空间中受支持的组件类型提取动态网格体Actor。 |
| 从网格体创建新的体积(Create New Volume From Mesh) | 从动态网格体Actor创建新的体积Actor,例如阻挡体积。 此节点仅适用于编辑器。 |
| 从网格体创建新的静态网格体资产(Create New Static Mesh Asset From Mesh) | 从动态网格体Actor创建新的静态网格体资产。 此节点仅适用于编辑器。 |
| 从网格体设置静态网格体碰撞(Set Static Mesh Collision From Mesh) | 基于输入网格体为静态网格体资产生成简单碰撞形状。 |
| 从网格体设置动态网格体碰撞(Set Dynamic Mesh Collision From Mesh) | 基于输入网格体为动态网格体组件生成简单碰撞形状。 |
| 从对象复制碰撞网格体(Copy Collision Meshes From Object) | 从源对象提取碰撞几何体,并随目标动态网格体中存储的网格体一起复制它。
|
| 重置动态网格体碰撞(Reset Dynamic Mesh Collision) | 从动态网格体组件清除简单碰撞。 |
| 从骨骼网格体复制网格体(Copy Mesh From Skeletal Mesh) | 将骨骼网格体复制到目标动态网格体。 |
| 将网格体复制到骨骼网格体(Copy Mesh To Skeletal Mesh) | 将给定动态网格体复制到骨骼网格体。 |
| 从网格体创建新的骨骼网格体资产(Create New Skeletal Mesh Asset From Mesh) | 从目标网格体创建新的骨骼网格体资产。 此节点仅适用于编辑器。 |
图元生成
这些函数用于生成图元网格体并附加到输入动态网格体
| 节点名称 | 描述 |
|---|---|
| 附加盒体(Append Box) | 将3D盒体附加到指定的动态网格体。 |
| 附加球体纬度经度(Append Sphere Lat Long) | 将使用纬度/经度拓扑进行三角剖分的3D球体附加到动态网格体。 |
| 附加球体盒体(Append Sphere Box) | 将使用盒体拓扑进行三角剖分的3D球体附加到动态网格体。 |
| 附加胶囊体(Append Capsule) | 将3D胶囊体附加到动态网格体。 |
| 附加圆柱体(Append Cylinder) | 将3D圆柱体(带可选的端盖)附加到动态网格体。 |
| 附加锥体(Append Cone) | 将3D椎体附加到动态网格体。 |
| 附加圆环面(Append Torus) | 将3D圆环面或部分圆环面附加到动态网格体。 |
| 附加矩形XY(Append Rectangle XY) | 将平面矩形附加到动态网格体。 |
| 附加圆角矩形XY(Append Round Rectangle XY) | 将带圆角的平面矩形(RoundRect)附加到动态网格体。 |
| 附加圆盘形(Append Disc) | 将平面圆盘形附加到动态网格体。 |
| 附加三角剖分的多边形(Append Triangulated Polygon) | 将平面2D多边形的德洛内三角剖分附加到动态网格体。 |
| 附加旋转多边形(Append Revolve Polygon) | 将2D多边形的旋转表面(完全旋转或可选限制的部分旋转)附加到动态网格体。 |
| 附加螺旋旋转多边形(Append Spiral Revolve Polygon) | 沿螺旋路径旋转2D多边形,就像用于创建垂直螺旋的那种路径。 |
| 附加旋转路径(Append Revolve Path) | 旋转开放式2D路径,带可选的顶部和底部端盖。 |
| 附加简单挤压多边形(Append Simple Extrude Polygon) | 使用所选动态网格体沿垂直路径挤压2D多边形。 |
| 附加简单扫描多边形(Append Simple Swept Polygon) | 使用所选动态网格体沿任意3D路径扫描2D多边形。 |
| 附加线性楼梯(Append Linear Stairs) | 使用所选动态网格体附加线性楼梯。 |
| 附加弧形楼梯(Append Curved Stairs) | 使用所选动态网格体附加环形楼梯。 |
| 附加变换网格体(Append Mesh Transformed) | 将每次变换应用于附加网格体,然后将其几何体添加到目标网格体。 |
| 附加扫描多边形(Append Sweep Polygon) | 沿扫描路径扫描并旋转2D多边形,创建附加到提供的网格体的3D网格体。 |
| 附加Voronoi图2D(Append Voronoi Diagram 2D) | 从提供的Voronoi站点生成三角剖分的Voronoi单元格,识别带有多边形组的每一项,并附加到提供的网格体。 |
| 附加扫描多线段(Append Sweep Polyline) | 沿指定为一组FTransform的扫描路径扫描给定的2D多线段顶点。 如果2D顶点为(U,V),则在FTransform的坐标空间中,X指向路径方向,Y向右(U),Z向上(V)。 |
变换和变形
这些函数用于操控动态网格体的 顶点位置(Vertex Positions) 。 它们不会改变网格体拓扑或连接。
| 节点名称 | 描述 |
|---|---|
| 平移网格体(Translate Mesh) | 将平移应用于网格体的顶点。 |
| 缩放网格体(Scale Mesh) | 将缩放变换应用于网格体的顶点。 |
| 变换网格体 | 将任意FTransform应用于网格体的顶点。 |
| 将弯曲扭曲应用于网格体(Apply Bend Warp To Mesh) | 围绕变换定义的轴应用弯曲扭曲。 |
| 将扭转扭曲应用于网格体(Apply Twist Warp To Mesh) | 围绕变换定义的轴应用扭转扭曲。 |
| 将迸发扭曲应用于网格体(Apply Flare Warp To Mesh) | 应用迸发/膨胀扭曲。 |
| 将数学扭曲应用于网格体(Apply Math Warp To Mesh) | 应用各种基于简单数学函数的扭曲,目前为带有任意方向的1D或2D正弦波。 |
| 将Perlin噪点应用于网格体(Apply Perlin Noise To Mesh) | 将3D Perlin噪点置换应用于整个网格体或可选的选择所定义的网格体区域。 |
| 将迭代平滑应用于网格体(Apply Iterative Smoothing To Mesh) | 将多次网格体平滑迭代应用于整个网格体或可选的选择所定义的子集 |
| 从纹理贴图应用置换(Apply Displace From Texture Map) | 基于Texture2D和UV信道将置换应用于动态网格体。 |
| 旋转网格体(Rotate Mesh) | 相对于指定原点旋转网格体。 |
| 将枢轴点平移到位置(Translate Pivot To Location) | 设置网格体的枢轴点位置。 由于网格体对象的枢轴点始终是位于(0,0,0)的点,因此该函数只是将网格体平移-PivotLocation。 |
| 从Z轴创建变换(Make Transform From Z Axis) | 根据bTangentIsX参数在给定位置创建一个变换,以ZAxis向量作为变换的Z轴,且X轴或Y轴面向切线向量。 |
| 从轴创建变换(Make Transform From Axes) | 根据 bTangentISX 参数在给定位置创建一个变换,以ZAxis向量作为变换的Z轴,且X轴或Y轴面向切线向量。 |
| 获取变换轴向量(Get Transform Axis Vector) | 获取变换的X、Y和Z轴方向的向量。 |
| 获取变换轴光线(Get Transform Axis Ray) | 获取变换位置处与变换的X、Y和Z轴方向对齐的光线。 |
| 获取变换轴平面(Get Transform Axis Plane) | 获取变换位置处的平面;该平面的法线与变换的X、Y和Z轴方向对齐。 |
复合 / 分解
这些函数用于将网格体组合在一起或分割开。
| 节点名称 | 描述 | |
|---|---|---|
| 将网格体复制到网格体(Copy Mesh To Mesh) | 在不同动态网格体之间复制网格体。 | |
| 从网格体获取子网格体(Get Sub Mesh From Mesh) | 在不同动态网格体之间复制三角形列表。 | |
| 按组件拆分网格体(Split Mesh By Components) | 将网格体分成多个部分,每个连接的组件对应一个部分,从动态网格体池绘制。 | |
| 按材质ID拆分网格体(Split Mesh By Material IDs) | 将网格体分成多个部分,每个材质ID对应一个部分,从动态网格体池绘制。 | |
| 附加网格体(Append Mesh) | 将几何体从一个网格体附加到另一个网格体,带可选的变换。 | |
| 重复附加网格体(Append Mesh Repeated) | 基于应重复的次数将几何体从一个网格体附加到另一个网格体,每次累积变换。 该运算很适合用于创建图案。 |
网格体建模
这些函数提供标准高级别建模运算,但通常会调用建模模式中类似名称的工具会调用的低级别网格体处理代码。
| 节点名称 | 描述 | |
|---|---|---|
| 应用网格体布尔值(Apply Mesh Boolean) | 基于第二个网格体将布尔值运算(例如,并集、交集和差集)应用于动态网格体。 | |
| 应用网格体平面切割(Apply Mesh Plane Cut) | 将平面切割应用于网格体,可选择填充创建的所有孔洞。 | |
| 应用网格体平面切片(Apply Mesh Plane Slice) | 将网格体切成两半,带可选的孔洞填充。 | |
| 应用网格体镜像(Apply Mesh Mirror) | 在整个平面中镜像网格体,带可选的三角形切割和结合。 | |
| 应用网格体偏移(Apply Mesh Offset) | 将网格体的顶点移至偏移表面。 | |
| 应用网格体外壳(Apply Mesh Shell) | 将网格体的三角形副本移至偏移表面,并将其拼接到原始三角形。 例如,用于创建加厚外壳。 | |
| 应用网格体挤压(Apply Mesh Extrude) | 沿恒定方向挤压网格体的三角形。 例如,从开放式三角剖分的多边形创建固体。 | |
| 应用网格体固化(Apply Mesh Solidify) | 将网格体替换为体素化、网格化的近似对象(VoxWrap运算)。 | |
| 应用网格体形态(Apply Mesh Morphology) | 将网格体替换为基于SDF的偏移网格体近似对象。 | |
| 应用网格体自联合(Apply Mesh Self Union) | 对象对自身执行布尔并集运算,计算修复自相交和删除浮动几何体等操作。 | |
| 应用网格体多边形组斜边(Apply Mesh PolyGroup Bevel) | 将网格体斜边运算应用于所有多边形组边缘。 |
网格体选择
这些函数将向不同的工具识别网格体的区域,以便它们可以在局部操作。 多个函数可以在整个网格体或选择所定义的子集上工作。 选择类型包括:三角形、顶点和多边形组。
| 节点名称 | 描述 |
|---|---|
| 反转网格体选择(Invert Mesh Selection) | 反转目标网格体上的选择。 |
| 创建全选网格体选择(Create Select All Mesh Selection) | 创建给定选择类型的选择,其中包含目标网格体的所有元素。 |
| 转换网格体选择(Convert Mesh Selection) | 将网格体选择转换为另一种类型。 默认情况下,顶点映射到单环附近区域中的三角形,并且三角形映射到所有包含的顶点。 |
| 合并网格体选择(Combine Mesh Selections) | 将两个网格体选择合并为一个新的网格体选择。 选择A和选择B,这两个输入必须为相同的类型。 |
| 将索引数组转换为网格体选择(Convert Index Array To Mesh Selection) | 从索引数组创建网格体选择。 |
| 将索引集转换为网格体选择(Convert Index Set To Mesh Selection) | 从索引集创建网格体选择。 |
| 将网格体选择转换为索引数组(Convert Mesh Selection To Index Array) | 将网格体选择转换为索引数组。 |
| 将索引列表转换为网格体选择(Convert Index List To Mesh Selection) | 从索引列表创建网格体选择。 对于索引列表类型不匹配选择类型的情况,将使用 bAllowPartialInclusion=true 的"转换网格体选择(Convert Mesh Selection)"进行转换。 |
| 将网格体选择转换为索引列表(Convert Mesh Selection To Index List) | 将网格体选择转换为索引列表。 |
| 选择盒体中的网格体元素(Select Mesh Elements In Box) | 通过查找盒体中包含的所有元素,为目标网格体创建选择类型的新网格体选择。 |
| 选择球体中的网格体元素(Select Mesh Elements In Sphere) | 通过查找球体中包含的所有元素,为目标网格体创建选择类型的新网格体选择。 |
| 使用平面选择网格体元素(Select Mesh Elements With Plane) | 通过查找平面一侧的所有元素,尤其是平面的表面法线指向的一侧,为目标网格体创建选择类型的新网格体选择。 |
| 按法线角度选择网格体元素(Select Mesh Elements By Normal Angle) | 若法线向量与给定法线之间的距离在角偏差阈值之内,则通过查找所有此等法线向量的所有元素,为目标网格体创建选择类型的新网格体选择。 对于三角形和多边形组选择,会使用三角形面片法线;对于顶点选择,会使用逐个顶点的平均法线。 |
| 选择网格体内的网格体元素(Select Mesh Elements Inside Mesh) | 通过查找第二个选择网格体中的所有元素,为目标网格体创建选择类型的新网格体选择。 |
| 将网格体选择扩展到连接的区域(Expand Mesh Selection To Connected) | 将目标网格体上的选择扩展到连接的区域,并返回新选择。 |
| 获取网格体选择边界框(Get Mesh Selection Bounding Box) | 获取网格体选择的3D边界框。 |
| 获取网格体选择边界循环(Get Mesh Selection Boundary Loops) | 计算网格体选择边界的顶点循环集。 针对每个循环都会返回3D多线段和顶点索引列表。 对于顶点选择,此函数将返回顶点选择的单环附近区域的边界循环。 |
| 获取网格体选择信息(Get Mesh Selection Info) | 查询有关网格体选择的信息。 |
| 调试打印网格体选择(Debug Print Mesh Selection) | 将有关网格体选择的信息打印到输出日志。 |
按选择修改网格体
用于从给定选择编辑几何体的函数。
变换网格体
| 节点名称 | 描述 |
|---|---|
| 变换网格体选择(Transform Mesh Selection) | 将给定变换应用于网格体的所选部分。 |
| 平移网格体选择(Translate Mesh Selection) | 将给定平移应用于网格体的所选部分。 |
| 旋转网格体选择(Rotate Mesh Selection) | 相对于指定原点旋转网格体的所选部分。 |
| 缩放网格体选择(Scale Mesh Selection) | 将给定缩放应用于网格体的所选部分。 |
材质和多边形组
| 节点名称 | 描述 |
|---|---|
| 设置网格体选择的材质ID(Set Material ID For Mesh Selection) | 在给定选择的所有三角形上设置新的材质ID。 |
| 设置网格体选择的多边形组(Set PolyGroup For Mesh Selection) | 对于给定的组层,在给定选择的所有三角形上设置新的多边形组。 |
网格体建模
| 节点名称 | 描述 |
|---|---|
| 应用网格体断开连接面(Apply Mesh Disconnect Faces) | 选择识别目标网格体后,将目标网格体的三角形断开连接。 |
| 应用网格体复制面(Apply Mesh Duplicate Faces) | 选择输入识别目标网格体后,复制目标网格体的三角形。 |
| 应用网格体线性挤压面(Apply Mesh Linear Extrude Faces) | 选择识别目标网格体后,将线性挤压应用于目标网格体的三角形。 |
| 应用网格体偏移面(Apply Mesh Offset Faces) | 选择识别的目标网格体后,将偏移应用于目标网格体的面,如果选择为空,则应用于所有面。 |
| 应用网格体内嵌外嵌面(Apply Mesh Inset Outset Faces) | 选择识别目标网格体后,将内嵌或外嵌应用于目标网格体的面,如果选择为空,则应用于所有面。 |
| 应用网格体斜边选择(Apply Mesh Bevel Selection) | 将网格体斜边运算应用于目标网格体中使用斜边选项设置的部分。 |
细分
这些函数将各种网格体细分策略应用于动态网格体资产。
| 节点名称 | 描述 |
|---|---|
| 应用多边形组Catmull Clark细分(Apply PolyGroup Catmull Clark SubD) | 将Catmull Clark细分应用于网格体的多边形组拓扑(丢弃输入三角剖分)。 此节点仅适用于编辑器。 |
| 应用三角形循环细分(Apply Triangle Loop SubD) | 将循环细分应用于输入网格体。 此节点仅适用于编辑器。 |
| 应用选择性曲面细分(Apply Selective Tessellation) | 使用指示的模式类型,对指定网格体选择进行曲面细分。 |
| 应用PN曲面细分(Apply PN Tessellation) | 将点-法线曲面细分应用于输入网格体。 |
| 应用均匀曲面细分(Apply Uniform Tessellation) | 将均匀曲面细分应用于输入网格体。 |
简化
这些函数使用各种策略来简化网格体。
| 节点名称 | 描述 |
|---|---|
| 将简化应用于三角形计数(Apply Simplify To Triangle Count) | 简化网格体,直至达到目标三角形计数。 |
| 将简化应用于顶点计数(Apply Simplify To Vertex Count) | 简化网格体,直至达到目标顶点计数。 |
| 将简化应用于公差(Apply Simplify To Tolerance) | 将网格体简化至目标几何公差。 例如,进一步的简化会导致与输入网格体的偏差大于公差。 |
| 将简化应用于平面(Apply Simplify To Planar) | 简化网格体中三角形超过必要数量的平面区域。 这不会改变网格体的3D形状。 |
| 将简化应用于多边形组拓扑(Apply Simplify To PolyGroup Topology) | 将网格体简化至多边形组拓扑。 例如,网格体多边形组的高级别面。 另一个例子是在默认盒体球体上,简化至多边形组拓扑会生成盒体。 |
盒体
这些辅助函数用于计算盒体对象的基本数学函数。
| 节点 | 描述 |
|---|---|
| 从中心尺寸创建盒体(Make Box From Center Size) | 从中心点以及X、Y和Z尺寸创建盒体。 |
| 从中心范围创建盒体(Make Box From Center Extents) | 从中心点以及X、Y和Z范围创建盒体。 范围是半尺寸。 |
| 获取盒体中心尺寸(Get Box Center Size) | 获取盒体的中心点以及X、Y和Z尺寸。 |
| 获取盒体角(Get Box Corner) | 获取盒体某个角的位置。 角的索引编号从0到7,使用某种排序,其中:
|
| 获取盒体面中心(Get Box Face Center) | 获取盒体某个面的中心位置。 面的索引编号从0到5,使用某种排序,其中:
|
| 获取盒体体积面积(Get Box Volume Area) | 获取盒体的体积和表面积。 |
| 获取扩展的盒体(Get Expanded Box) | 通过将"扩展依据(Expand By)"参数添加到"最小值(Min)"和"最大值(Max)"来扩展输入盒体。如果任何"扩展依据(Expand By)"参数大于盒体尺寸的一半,则会将尺寸限制到中心点。 |
| 获取变换的盒体(Get Transformed Box) | 将输入变换应用于输入盒体的角,并返回包含这些点的新盒体。 |
| 测试盒体与盒体相交(Test Box Box Intersection) | 测试盒体1和盒体2是否相交。 |
| 查找盒体与盒体相交(Find Box Box Intersection) | 查找由盒体1和盒体2相交形成的盒体。 |
| 获取盒体与盒体距离(Get Box Box Distance) | 计算盒体1和盒体2之间的最短距离。 |
| 测试盒体内的点(Test Point Inside Box) | 测试一个点是否在盒体内;如果是,则返回true,否则返回false。 |
| 查找盒体上的最近点(Find Closest Point On Box) | 查找盒体面上最接近输入点的点。 如果该点在盒体内,则返回该点。 |
| 获取盒体与点距离(Get Box Point Distance) | 计算盒体和点之间的最短距离。 |
| 测试盒体与球体相交(Test Box Sphere Intersection) | 检查盒体是否与由"球体中心(Sphere Center)"和"球体半径(Sphere Radius)"定义的球体相交。 |
法线
这些函数重新计算网格体的法线。
| 节点名称 | 描述 | ||
|---|---|---|---|
| 翻转法线(Flip Normals) | 反转每个面的方向来翻转网格体法线。 | ||
| 设置每个顶点的法线(Set Per Vertex Normals) | 将网格体法线设置为每个顶点的法线。 例如,所有顶点都没有分割法线。 | ||
| 设置每个面的法线(Set Per Face Normals) | 将网格体法线设置为每个面/三角形的法线。 例如,沿网格体每个边缘的分割法线。 | ||
| 计算分割法线(Compute Split Normals) | 基于角度公差和/或诸如多边形组拓扑之类的其他因素,计算网格体的分割法线。 | ||
| 重新计算法线(Recompute Normals) | 重新计算现有网格体法线。 保留现有分割法线。 例如,在网格体变形之后使用。 | ||
| 计算切线(Compute Tangents) | Compute Tangents | 重新计算网格体的切线(各种方法)。 | |
| 设置网格体每个顶点的法线(Set Mesh Per Vertex Normals) | 将目标网格体法线覆层中的所有法线设置为指定的每个顶点法线。 | ||
| 获取网格体是否有切线(Get Mesh Has Tangents) | 检查目标网格体是否启用了"切线属性层(Tangents Attribute Layer)"。 | ||
| 丢弃切线(Discard Tangents) | 从目标网格体删除任何现有的切线属性层。 | ||
| 计算切线(Compute Tangents) | 使用指定的方法重新计算目标网格体的切线。 | ||
| 设置网格体每个顶点的切线(Set Mesh Per Vertex Tangents) | 将目标网格体切线覆层中的所有切线设置为指定的每个顶点切线。 | ||
| 获取网格体每个顶点的切线(Get Mesh Per Vertex Tangents) | 计算插值的位置 A * Vertex1 + B * Vertex2 + C * Vertex3,其中(A,B,C) = 重心坐标,顶点位置取自目标网格体的指定TriangleID。 |
||
| 更新顶点法线(Update Vertex Normal) | 更新目标网格体VertexD处的法线和切线。 |
清理和修复
这些函数用于修复网格体中的问题,或应用其他标准修复。
| 节点名称 | 描述 |
|---|---|
| 压缩网格体(Compact Mesh) | 压缩网格体的顶点和三角形,以删除顶点ID或三角形ID列表中的所有"孔洞"(请参阅"低级别网格体查询"小节中的讨论)。 |
| 丢弃网格体属性(Discard Mesh Attributes) | 从动态网格体删除属性集,例如所有UV、法线、材质ID、顶点颜色和扩展多边形组层。 请注意,这可能会导致许多函数无法正常运行。 |
| 自动修复法线(Auto Repair Normals) | 该函数尝试自动调整网格体法线的方向,使其保持一致,例如修复翻转的法线。 |
| 结合网格体边缘(Weld Mesh Edges) | 在可能的情况下,将网格体的所有开放式边界边缘结合在一起,以便删除"裂缝"。 |
| 填充所有网格体孔洞(Fill All Mesh Holes) | 尝试填充网格体的所有开放式边界循环(例如几何体表面中的孔洞)。 |
| 删除小组件(Remove Small Components) | 删除网格体中体积、面积或三角形计数低于阈值的连接组件。 |
| 删除隐藏的三角形(Remove Hidden Triangles) | 删除网格体中按照"可见"和"外部"的各种定义从外部视图不可见的所有三角形。 |
| 解决网格体T形连接(Resolve Mesh TJunctions) | 尝试解决目标网格体中的T形连接。 |
| 拆分网格体领结(Split Mesh Bowties) | 拆分目标网格体中的顶点,否则这些顶点会生成领结,其中仅单个顶点连接网格体的各个区域。 |
| 修复网格体退化几何体(Repair Mesh Degenerate Geometry) | 删除小三角形或合并三角形,直到所有边缘大于指定最小长度为止,从而修改目标网格体。 |
低级别网格体查询
这些函数提供有关网格体元素的低级别信息。 在此上下文中,VertexID 和 TriangleID 是整数。
在动态网格体中,删除顶点/三角形之后,VertexID或TriangleID范围中可能存在空缺,一些运算(如简化)可能返回存在空缺的网格体。 ID范围中的空缺是使用 Compact Mesh 函数清理的。
| 节点名称 | 描述 |
|---|---|
| 获取顶点计数(Get Vertex Count) | 获取网格体中的顶点数量。 |
| 获取顶点ID数量(Get Num Vertex IDs) | 获取网格体中的顶点ID数量,如果网格体不密集,这可能大于顶点计数。 例如,在删除顶点之后。 |
| 是有效顶点ID(Is Valid Vertex ID) | 如果顶点ID引用的是有效顶点,则返回true。 |
| 获取所有顶点ID(Get All Vertex IDs) | 返回网格体中所有顶点ID的索引列表。 |
| 获取顶点位置(Get Vertex Position) | 按顶点ID获取网格体顶点的3D位置。 |
| 获取所有顶点位置(Get All Vertex Positions) | 返回所有网格体顶点位置的向量列表。 此列表可能很长。 |
| 获取三角形计数(Get Triangle Count) | 返回网格体中的三角形数量。 请注意,这是直接作用于动态网格体的函数。 |
| 获取三角形ID数量(Get Num Triangle IDs) | 获取网格体中三角形ID的数量。 如果网格体不密集,即使在删除三角形之后,这也可能大于三角形计数。 |
| 是有效三角形ID(Is Valid Triangle ID) | 如果三角形ID引用的是有效三角形,则返回true。 |
| 获取所有三角形ID(Get All Triangle IDs) | 返回网格体中所有三角形ID的索引列表。 |
| 获取三角形索引(Get Triangle Indices) | 返回三角形的三顶点索引组。 |
| 获取所有三角形索引(Get All Triangle Indices) | 返回网格体中所有三角形三索引组的三角形列表。 |
| 获取三角形位置(Get Triangle Positions) | 返回三角形的三个角位置。 |
| 获取三角形面法线(Get Triangle Face Normal) | 返回三角形的面/面片法线。 |
| 获取三角形UV(Get Triangle UVs) | 返回三角形的三个角UV。 |
| 获取三角形材质ID(Get Triangle Material ID) | 返回三角形的当前材质ID。 |
| 获取所有三角形材质ID(Get All Triangle Material IDs) | 返回所有三角形材质ID的索引列表。 |
| 获取三角形多边形组ID(Get Triangle PolyGroup ID) | 返回给定多边形组层中三角形的当前多边形组ID。 |
| 获取是否具有顶点ID空缺(Get Has Vertex ID Gaps) | 如果顶点ID列表中有空缺,则返回true。 例如,"Get Number of Vertex IDs"大于"Get Vertex Count"。 |
| 获取是否具有三角形ID空缺(Get Has Triangle ID Gaps) | 如果三角形ID列表中有空缺,使得"Get Num Triangle IDs"大于"Get Triangle Count",则返回true。 |
| 获取是否为密集网格体(Get Is Dense Mesh) | 如果网格体密集,则返回true。 例如,顶点ID或三角形ID中没有空缺。 |
| 获取网格体是否设置了属性(Get Mesh Has Attribute Set) | 如果网格体启用了属性集来存储UV、法线、材质ID和顶点颜色(通常默认启用), 则返回true。 |
| 获取插值的三角形位置(Get Interpolated Triangle Position) | 计算插值的位置 A * Vertex1 + B * Vertex2 + C * Vertex3,其中(A,B,C) = 重心坐标,顶点位置取自目标网格体的指定TriangleID。 |
| 计算三角形重心坐标(Compute Triangle Barycentric Coords) | 计算点相对于目标网格体的指定TriangleID的重心坐标(A,B,C)。 |
| 获取插值的三角形UV(Get Interpolated Triangle UV) | 计算插值的UV A * UV1 + B * UV2 + C * UV3,其中(A,B,C) = 重心坐标,UV位置取自目标网格体的指定UV通道中的指定TriangleID。 |
| 获取三角形法线(Get Triangle Normals) | 对于目标网格体的指定TriangleID,获取三角形每个顶点处的法线和切线向量。 这些法线和切线将取自法线和切线覆层。 |
| 获取插值的三角形法线(Get Interpolated Triangle Normal) | 计算插值的法线 A * Normal1 + B * Normal2 + C * Normal3,其中(A,B,C) = 重心坐标,法线取自目标网格体的法线层中的指定TriangleID。 |
| 获取三角形法线切线(Get Triangle Normal Tangents) | 对于目标网格体的指定TriangleID,获取三角形每个顶点处的法线和切线向量。 这些法线和切线将取自法线和切线覆层。 |
| 获取插值的三角形法线切线(Get Interpolated Triangle Normal Tangents) | 对于目标网格体的法线和切线属性中的指定TriangleID,计算插值的法线和切线。 |
| 获取是否具有顶点颜色(Get Has Vertex Colors) | 如果目标网格体启用了"顶点颜色(Vertex Colors)"属性,则返回true。 |
| 获取三角形顶点颜色(Get Triangle Vertex Colors) | 对于目标网格体的指定TriangleID,获取三角形每个顶点处的顶点颜色。 这些颜色将取自顶点颜色属性。 |
| 获取插值的三角形顶点颜色(Get Interpolated Triangle Vertex Color) | 计算插值的顶点颜色 A * Color1 + B * Color2 + C * Color3,其中(A,B,C) = 重心坐标,颜色取自目标网格体的顶点颜色层中的指定TriangleID。 |
低级别网格体构建
这些函数用于逐个三角形构造网格体,以及执行其他低级别网格体编辑运算。
若网格体元素有成千上万个三角形,那么在涉及到循环的情况中使用这些函数,可能会在蓝图或Python脚本编写中运行相当缓慢。
| 节点名称 | 描述 |
|---|---|
| 设置顶点位置(Set Vertex Position) | 设置网格体顶点的3D位置。 |
| 将一个顶点添加到网格体(Add Vertex To Mesh) | 将新顶点添加到网格体并返回新的顶点ID。 |
| 将一组顶点添加到网格体(Add Vertices To Mesh) | 将顶点列表添加到网格体。 |
| 从网格体删除一个顶点(Delete Vertex From Mesh) | 从网格体删除顶点。 |
| 从网格体删除一组顶点(Delete Vertices From Mesh) | 从网格体删除顶点列表。 |
| 将一个三角形添加到网格体(Add Triangle To Mesh) | 将一个三角形(3元素顶点ID元组)添加到网格体。 |
| 将一组三角形添加到网格体(Add Triangles To Mesh) | 将三角形列表添加到网格体。 |
| 从网格体删除一个三角形(Delete Triangle From Mesh) | 从网格体删除一个三角形。 |
| 从网格体删除一组三角形(Delete Triangles From Mesh) | 从网格体删除三角形列表。 |
| 删除多边形组中的三角形(Delete Triangles In PolyGroup) | 从网格体删除特定多边形组层中有特定多边形组的所有三角形。 |
| 将缓冲区附加到网格体(Append Buffers To Mesh) | 将一组顶点/三角形添加到网格体,带有法线、UV等属性。 类似于流程性网格体(Proc Mesh)组件中的创建网格体(Create Mesh)分段。 |
| 设置网格体三角形法线(Set Mesh Triangle Normals) | 设置网格体三角形的法线。 |
| 设置网格体三角形UV(Set Mesh Triangle UVs) | 设置网格体三角形的UV。 |
| 设置三角形材质ID(Set Triangle Material ID) | 设置网格体三角形的材质ID。 |
| 设置所有网格体顶点位置(Set All Mesh Vertex Positions) | 将目标网格体中的所有顶点位置设置为指定位置。 |
低级别列表管理
这些函数覆盖了以下各项的列表管理:索引列表、标量列表、向量列表、UV列表和颜色列表。
| 节点名称 | 描述 |
|---|---|
| 获取索引列表长度(Get Index List Length) | 返回索引列表中的项目数量。 |
| 获取索引列表最后一个索引(Get Index List Last Index) | 返回索引列表中最后一个项目的索引。 |
| 获取索引列表项目(Get Index List Item) | 返回索引列表中指定位置存储的项目。 |
| 设置索引列表项目(Set Index List Item) | 更新索引列表中指定位置存储的项目的值。 |
| 将索引列表转换为数组(Convert Index List To Array) | 将索引列表转换为整数数组。 |
| 将数组转换为索引列表(Convert Array To Index List) | 将整数数组转换为索引列表。 |
| 复制索引列表(Duplicate Index List) | 将索引列表的内容到复制列表中。 |
| 清空索引列表(Clear Index List) | 将索引列表中的所有项目重置为清空值。 |
| 获取标量列表长度(Get Scalar List Length) | 返回标量列表中的项目数量。 |
| 获取标量列表最后一个索引(Get Scalar List Last Index) | 返回标量列表中最后一个项目的索引。 |
| 获取标量列表项目(Get Scalar List Item) | 返回标量列表中指定位置存储的标量(double)。 |
| 设置标量列表项目(Set Scalar List Item) | 更新标量列表中指定位置存储的标量的值。 |
| 将标量列表转换为数组(Convert Scalar List To Array) | 将标量列表转换为double数组。 |
| 将数组转换为标量列表(Convert Array To Scalar List) | 将double数组转换为标量列表。 |
| 复制标量列表(Duplicate Scalar List) | 将标量列表的内容复制到复制列表中。 |
| 清空标量列表(Clear Scalar List) | 将标量列表中的所有项目重置为清空值。 |
| 获取向量列表长度(Get Vector List Length) | 返回向量列表中的项目数量。 |
| 获取向量列表最后一个索引(Get Vector List Last Index) | 返回向量列表中最后一个项目的索引。 |
| 获取向量列表项目(Get Vector List Item) | 返回向量列表中指定位置存储的FVector。 |
| 设置向量列表项目(Set Vector List Item) | 更新向量列表中指定位置存储的FVector的值。 |
| 将向量列表转换为数组(Convert Vector List To Array) | 将向量列表转换为FVector数组。 |
| 将数组转换为向量列表(Convert Array To Vector List) | 将FVector数组转换为向量列表。 |
| 复制向量列表(Duplicate Vector List) | 将向量列表的内容复制到复制向量列表中。 |
| 清空向量列表(Clear Vector List) | 将向量列表中的所有项目重置为清空值。 |
| 获取UV列表长度(Get UV List Length) | 返回UV列表中的项目数量。 |
| 获取UV列表最后一个索引(Get UV List Last Index) | 返回UV列表中最后一个项目的索引。 |
| 获取UV列表项目(Get UV List Item) | 返回UV列表中指定位置存储的FVector2D。 |
| 设置UV列表项目(Set UV List Item) | 更新UV列表中指定位置存储的FVector2D的值。 |
| 将UV列表转换为数组(Convert UV List To Array) | 将UV列表转换为FVector2D数组。 |
| 将数组转换为UV列表(Convert Array To UV List) | 将FVector2D数组转换为UV列表。 |
| 复制UV列表(Duplicate UV List) | 将UV列表的内容复制到复制列表中。 |
| 获取颜色列表长度(Get Color List Length) | 返回颜色列表中的项目数量。 |
| 获取颜色列表最后一个索引(Get Color List Last Index) | 返回颜色列表中最后一个项目的索引。 |
| 获取颜色列表项目(Get Color List Item) | 返回颜色列表中指定位置存储的FLinearColor。 |
| 设置颜色列表项目(Set Color List Item) | 更新颜色列表中指定位置存储的FLinearColor的值。 |
| 将颜色列表转换为数组(Convert Color List To Array) | 将颜色列表转换为FLinearColor数组。 |
| 将数组转换为颜色列表(Convert Array To Color List) | 将FLinearColor数组转换为颜色列表。 |
| 提取一个颜色列表通道(Extract Color List Channel) | 创建对应于颜色列表的0、1或2通道的标量列表。 |
| 提取一组颜色列表通道(Extract Color List Channels) | 通过颜色列表创建向量列表。 颜色列表的通道通过X通道索引、Y通道索引和Z通道索引映射到向量组件。 |
低级别数学运算
以组件方式对向量列表和标量列表进行运算的函数。 采用向量点等多个列表的函数需要这些列表包含相同数量的元素。
| 节点名称 | 描述 |
|---|---|
| 向量长度(Vector Length) | 计算向量列表A中每个向量的长度,并在标量列表中返回值。 |
| 向量点积(Vector Dot) | 计算向量列表A和向量列表B中每对向量之间的点积,并在新标量列表中返回值。 |
| 向量交叉积(Vector Cross) | 计算向量列表A和向量列表B中每对向量之间的交叉积,并在新向量列表中返回值。 |
| 向量就地规格化(Vector Normalize In Place) | 规格化向量列表中的每个向量,并将值存储在向量列表中。 如果某个向量是退化的,请将法线设置为Set On Failure向量。 |
| 向量混合(Vector Blend) | 为向量列表A和向量列表B中每对向量计算 ConstantA * A + ConstantB * B,并在新向量列表中返回值。 默认情况下,此(constants = 1)会添加两个向量。 设置 你还可以设置 |
| 向量就地混合(Vector Blend In Place) | 为向量列表A和向量列表B中每对向量计算 ConstantA * A + ConstantB * B,并将值存储在向量列表B中。默认情况下,此(constants = 1)会添加两个向量。 设置 你还可以设置 |
| 标量向量相乘(Scalar Vector Multiply) | 为两个输入列表中的每个标量/向量对计算 Scalar Multiplier * Scalar * Vector,并在新向量列表中返回值。 |
| 标量向量就地相乘(Scalar Vector Multiply In Place) | 为两个输入列表中的每个标量/向量对计算 Scalar Multiplier * Scalar * Vector,并将值存储在输入向量列表中。 |
| 常量向量相乘(Constant Vector Multiply) | 为向量列表中的每个元素计算 Constant * Vector,并在新列表中返回值。 |
| 常量向量就地相乘(Constant Vector Multiply In Place) | 为向量列表中的每个元素计算 Constant * Vector,并将值存储在向量列表中。 |
| 向量到标量(Vector To Scalar) | 计算 ConstantX * Vector.X + ConstantY * Vector.Y + ConstantZ * Vector.Z,将向量列表中的每个向量转换为标量,并在新标量列表中返回值。 你可以使用它从向量提取X、Y和Z值,或执行其他组件方式的数学运算。 |
| 标量反转(Scalar Invert) | 为标量列表中的每个元素计算 Numerator / Scalar ,并在新标量列表中返回值。 如果Abs(Scalar) < Epsilon,设置为Set On Failure值。 |
| 标量就地反转(Scalar Invert In Place) | 为标量列表中的每个元素计算 Numerator / Scalar ,并将值存储在输入标量列表中。 如果Abs(Scalar) < Epsilon,设置为Set On Failure值。 |
| 标量混合(Scalar Blend) | 为标量列表A和标量列表B中每对值计算 ConstantA * A + ConstantB * B,并在新标量列表中返回值。 默认情况下,此(constants = 1)仅添加两个值。 设置 你还可以设置 |
| 标量就地混合(Scalar Blend In Place) | 为标量列表A和标量列表B中每对值计算 ConstantA * A + ConstantB * B,并在标量列表B中返回。 默认情况下,此(constants = 1)仅添加两个值。 设置 还可以设置 |
| 标量相乘(Scalar Multiply) | 为标量列表A和标量列表B中每对值计算 Scalar Multiplier * A * B,并在新标量列表中返回值。 |
| 标量就地相乘(Scalar Multiply In Place) | 为标量列表A和标量列表B中每对值计算 Scalar Multiplier * A * B,并在标量列表B中返回值。 |
| 常量标量相乘(Constant Scalar Multiply) | 为标量列表中的每个值计算 Constant * Scalar,并在新标量列表中返回值。 |
| 常量标量就地相乘(Constant Scalar Multiply In Place) | 为标量列表A和标量列表B中每对值计算 Scalar Multiplier A * B,并在当前标量列表中返回值。 |
网格体取样
这些函数计算点并沿网格体表面放置点。
| 节点 | 描述 |
|---|---|
| 计算点取样(Compute Point Sampling) | 根据提供的取样选项计算位于目标网格体表面上的一组样本点。 样本大致均匀分布,并且相对于提供的选项不重叠。 |
| 计算非均匀点取样(Compute NonUniform Point Sampling) | 根据提供的取样选项和非均匀选项计算位于目标网格体表面上的一组样本点。 |
| 计算顶点加权点取样(Compute Vertex Weighted Point Sampling) | 根据提供的取样选项和非均匀选项计算位于目标网格体表面上的一组样本点。 |
光线
这些辅助函数用于创建和查询光线。 光线是一条可用于确定对象相交的线。 这些对于在蓝图中构建交互式用户界面特别有用。
| 节点 | 描述 |
|---|---|
| 从点创建光线(Make Ray From Points) | 从两个点创建一条光线,将原点置于A处,方向设置为规格化(B-A)。 |
| 从点方向创建光线(Make Ray From Point Direction) | 从原点和方向创建光线,可选择使用非规格化方向。 |
| 获取变换的光线(Get Transformed Ray) | 将给定变换应用于给定光线,或选择性地反转变换(Transform Inverse),并返回变换的新光线。 |
| 获取光线点(Get Ray Point) | 在沿光线的给定距离处获取一个点(Origin + Distance * Direction)。 |
| 获取光线开始结束(Get Ray Start End) | 沿光线获取两个点。 |
| 获取光线参数(Get Ray Parameter) | 将给定点投影到沿光线的最近点上,并返回该点的光线参数和距离。 |
| 获取光线点距离(Get Ray Point Distance) | 获取从给定点到光线上最近点的距离。 |
| 获取光线最近点(Get Ray Closest Point) | 获取光线上离给定点最近的点。 |
| 获取光线球体相交(Get Ray Sphere Intersection) | 检查光线是否与由"球体中心(Sphere Center)"和"球体半径(Sphere Radius)"定义的球体相交。 此函数返回两个相交距离(光线参数)。 如果光线掠过球体,则两个距离将相同。 如果未命中,这两个距离将是MAX_FLOAT。 使用"获取光线点(Get Ray Point)"函数将距离转换为光线和球体上的点。 |
| 获取光线盒体相交(Get Ray Box Intersection) | 检查光线是否与由"球体中心(Sphere Center)"和"球体半径(Sphere Radius)"定义的球体相交。 |
| 获取光线平面相交(Get Ray Plane Intersection) | 查找光线与平面相交。 |
| 获取光线和线最近点(Get Ray Line Closest Point) | 计算3D光线和线上的一对最近点。 这条线由原点和方向定义,但在两个方向上无限延伸。 |
| 获取光线和线段最近点(Get Ray Segment Closest Point) | 计算3D光线和线段上的一对最近点。 线段由其两个端点定义。 |
材质ID
这些函数用于操控网格体的材质ID。 材质ID是每个三角形的整数,并不直接关联到特定材质。 在与静态网格体之间转换时,每个材质ID与一个 网格体分段(Mesh Section) 相关联。
| 节点名称 | 描述 |
|---|---|
| 获取是否具有材质ID(Get Has Material IDs) | 如果网格体提供/启用了材质ID,则返回true。 |
| 启用材质ID(Enable Material IDs) | 启用网格体上的材质ID,初始化为0。 |
| 清除材质ID(Clear Material IDs) | 将网格体上的所有材质ID重置为0。 |
| 获取最大材质ID(Get Max Material ID) | 返回网格体上当前设置的最大材质ID。 |
| 重新映射材质ID(Remap Material IDs) | 对于带有匹配给定值的材质ID的所有三角形,将材质ID设置为新值。 |
| 设置所有三角形材质ID(Set All Triangle Material IDs) | 将网格体中的所有三角形的材质ID设置为输入索引列表中的值。 |
| 设置多边形组材质ID(Set PolyGroup Material ID) | 将网格体中有指定多边形组ID(在给定多边形组层中)的所有三角形的材质ID设置为指定材质ID。 |
顶点值
使用这些函数可获取和操控顶点中存储的网格体值,包括 顶点颜色(Vertex Colors)。
法线等多个值可以存储在给定顶点中,但这些方法仅返回一个值。
| 节点名称 | 描述 |
|---|---|
| 设置网格体常量顶点颜色(Set Mesh Constant Vertex Color) | 将所有顶点颜色设置为特定颜色。 |
| 设置网格体每个顶点的颜色(Set Mesh Per Vertex Colors) | 使用颜色列表设置每个顶点的颜色。 |
| 获取网格体每个顶点的颜色(Get Mesh Per Vertex Colors) | 获取目标网格体中每个网格体顶点的单顶点颜色的列表,从顶点颜色覆层派生。 |
| 设置网格体选择顶点颜色(Set Mesh Selection Vertex Color) | 将目标网格体的顶点颜色覆层(通过选择识别)中的颜色设置为常量值。
|
| 将网格体顶点颜色SRGB转换为线性(Convert Mesh Vertex Colors SRGB To Linear) | 在所有顶点颜色上应用SRGB到线性的颜色变换。 |
| 将网格体顶点颜色线性转换为SRGB(Convert Mesh Vertex Colors Linear To SRGB) | 在所有顶点颜色上应用线性到SRGB的颜色变换。 |
| 获取网格体每个顶点的法线(Get Mesh Per Vertex Normals) | 获取目标网格体中每个网格体顶点的单法线向量的列表,从法线覆层派生。 |
| 获取网格体每个顶点的UV(Get Mesh Per Vertex UVs) | 获取目标网格体中每个网格体顶点的单顶点UV的列表,从指定UV覆层派生。 |
纹理取样和创建
用于读取和创建纹理数据的函数。
| 节点名称 | 描述 |
|---|---|
| 在UV位置对纹理2D进行取样(Sample Texture 2D At UV Positions) | 对UV位置列表中的给定纹理贴图取样,并在颜色列表输出中返回每个位置的颜色。 |
| 创建新的纹理2D资产(Create New Texture 2D Asset) | 从临时UTexture2D创建序列化的纹理2D资产。 |
| 在UV位置对纹理渲染目标2D进行取样(Sample Texture Render Target 2D At UV Positions) | 对UV位置列表中的给定纹理贴图取样,并在颜色列表输出中返回每个位置的颜色。 此函数在取样之前获取GPU数据,因此,根据具体应用程序,函数可能效率低下且速度缓慢。 |
烘焙
这些函数将源网格体和目标网格体之间的数据烘焙到纹理或顶点颜色数据。 你可以烘焙各种网格体数据,例如法线、曲率和环境光遮蔽。
| 节点名称 | 描述 |
|---|---|
| 烘焙纹理(Bake Texture) | 根据源网格体中取样的数据,为目标网格体创建纹理。 |
| 烘焙顶点(Bake Vertex) | 使用给定源网格体的烘焙属性的结果,填充目标网格体中的顶点颜色。 |
| 从渲染捕获中烘焙纹理(Bake Texture From Render Captures) | 从渲染捕获中烘焙目标网格体的纹理。 |
UV
这些函数用于操控网格体的UV。
| 节点名称 | 描述 |
|---|---|
| 获取UV通道数量(Get Num UV Channels) | 获取网格体上的UV通道数量。 |
| 设置UV通道数量(Set Num UV Channels) | 设置网格体上的UV层数量。 |
| 获取UV集边界框(Get UV Set Bounding Box) | 获取UV通道内所有UV的2D边界框。 |
| 复制UV通道(Copy UV Channel) | 将目标UV通道替换为源UV通道的值。 |
| 平移网格体UV(Translate Mesh UVs) | 将2D平移应用于UVSet索引中的所有UV,或者如果你提供了选择,则应用于UV子集。 |
| 缩放网格体UV(Scale Mesh UVs) | 将2D缩放应用于UVSet索引中的所有UV,或者如果你提供了选择,则应用于UV子集。 |
| 旋转网格体UV(Rotate Mesh UVs) | 将2D旋转应用于UVSet索引中的所有UV,或者如果你提供了选择,则应用于UV子集。 |
| 重新计算网格体UV(Recompute Mesh UVs) | 基于不同类型的定义明确的UV岛状区,例如现有UV岛状区、多边形组或选择输入,重新计算网格体的UV。 |
| 重新打包网格体UV(Repack Mesh UVs) | 将现有UV岛状区打包到标准UV空间中。 |
| 从平面投影设置网格体UV(Set Mesh UVs From Planar Projection) | 使用平面投影,为整个网格体或你通过选择输入所定义的子集设置UV。 |
| 从盒体投影设置网格体UV(Set Mesh UVs From Box Projection) | 使用盒体投影,为整个网格体或你通过选择输入所定义的子集设置UV。 |
| 从圆柱体投影设置网格体UV(Set Mesh UVs From Cylinder Projection) | 使用圆柱体投影,为整个网格体或你通过选择输入所定义的子集设置UV。 |
| 自动生成Patch Builder网格体UV(Auto Generate Patch Builder Mesh UVs) | 使用PatchBuilder方法计算新UV,并可选择打包。 |
| 自动生成X Atlas网格体UV(Auto Generate X Atlas Mesh UVs) | 使用XAtlas计算新UV,并可选择打包。 |
| 获取网格体UV尺寸信息(Get Mesh UVSize Info) | 计算有关网格体(包括可选的网格体选择)UV通道的尺寸和面积的信息。 |
| 获取网格体每个顶点的UV(Get Mesh Per Vertex UVs) | 获取目标网格体中每个网格体顶点的单顶点UV的列表,从指定UV覆层派生。 |
| 将网格体UV通道复制到网格体(Copy Mesh UV Channel To Mesh) | 将Copy From Mesh中的给定UVSet索引中的2D UV复制到Copy To UV Mesh中的3D顶点位置。 多边形组ID和材质ID保留在UV网格体中。 |
| 将网格体复制到网格体UV通道(Copy Mesh To Mesh UV Channel) | 将"从UV网格体复制(Copy From UVMesh)"的3D顶点位置和三角形传输到通过"复制到网格体(Copy To Mesh)"的"目标UV集索引(To UV Channel Index)"识别的给定UV通道。 3D位置(X,Y,Z)将复制为UV位置(X,Y)。 |
多边形组
这些函数用于操控网格体的多边形组。 多边形组是逐个三角形的整数,用于在建模工具和一些几何体脚本运算中隐式定义三角形的区域和块。 但是,多边形组层最终是逐个三角形的数字,并且你可以将其用于其他任意用途。
| 节点名称 | 描述 |
|---|---|
| 获取是否具有多边形组(Get Has PolyGroups) | 如果网格体有标准多边形组层,则返回true。 |
| 启用多边形组(Enable PolyGroups) | 启用网格体上的标准多边形组层。 |
| 获取扩展多边形组层数量(Get Num Extended PolyGroup Layers) | 返回扩展多边形组层的计数。请注意,扩展多边形组层尚未受到所有运算或建模工具的完全支持。 请注意,扩展多边形组层尚未受到所有运算或建模工具的完全支持。 |
| 设置扩展多边形组层的数量(Set Num Extended PolyGroup Layers) | 设置网格体上扩展多边形组层的数量。 |
| 清除多边形组(Clear PolyGroups) | 将三角形多边形组分配重置为给定多边形组层的常量值。 |
| 复制多边形组层(Copy PolyGroups Layer) | 在不同层之间复制多边形组。 |
| 将UV岛状区转换为多边形组(Convert UV Islands To PolyGroups) | 为网格体的每个断开连接的UV岛状区创建并分配新多边形组。 |
| 将组件转换为多边形组(Convert Components To PolyGroups) | 为网格体的每个断开连接的组件创建并分配新多边形组。 |
| 通过角度阈值计算多边形组(Compute PolyGroups From Angle Threshold) | 基于边缘皱褶/开度角分隔网格体来设置多边形组。 |
| 通过多边形检测计算多边形组(Compute PolyGroups From Polygon Detection) | 识别多边形并分配多边形组ID。 |
骨骼权重
这些函数用于计算和操控骨骼权重,也称为皮肤权重。 骨骼权重决定了骨骼变换对一组顶点的影响。
| 节点 | 描述 |
|---|---|
| 网格体具有骨骼权重(Mesh Has Bone Weights) | 检查目标网格体是否具有每个顶点的骨骼权重属性集。 |
| 网格体创建骨骼权重(Mesh Create Bone Weights) | 在目标网格体上创建新的骨骼权重属性(如果尚不存在)。 如果已存在该属性,并且传递的 bReplaceExistingProfile 为true,则该属性将被删除并重新添加,以便重置该属性。 |
| 获取最大骨骼权重指数(Get Max Bone Weight Index) | 确定网格体上存在的最大骨骼权重指数。 |
| 获取顶点骨骼权重(Get Vertex Bone Weights) | 返回目标网格体给定顶点处的骨骼权重的数组。 |
| 获取最大顶点骨骼权重(Get Largest Vertex Bone Weight) | 返回目标网格体给定顶点处的最大骨骼权重。 |
| 设置顶点骨骼权重(Set Vertex Bone Weights) | 设置目标网格体给定顶点处的骨骼权重。 |
| 设置所有顶点骨骼权重(Set All Vertex Bone Weights) | 将目标网格体的所有顶点设置为给定的骨骼权重。 |
| 计算平滑骨骼权重(Compute Smooth Bone Weights) | 计算给定网格体与提供的骨架的平滑皮肤绑定。 |
网格体几何查询
这些函数用于对网格体进行高级别几何查询。
| 节点名称 | 描述 |
|---|---|
| 获取网格体边界框(Get Mesh Bounding Box) | 计算网格体顶点的边界框。 |
| 获取网格体体积面积(Get Mesh Volume Area) | 计算网格体的体积和面积。 |
| 获取是否为封闭网格体(Get Is Closed Mesh) | 如果网格体是封闭的,例如没有拓扑边界边缘,则返回true。 |
| 获取开放边界循环数量(Get Num Open Border Loops) | 返回开放边界循环的数量,例如网格体中的"孔洞"数量。 |
| 获取开放边界边缘数量(Get Num Open Border Edges) | 返回网格体中拓扑边界边缘的数量。 |
| 获取连接组件数量(Get Num Connected Components) | 返回网格体中单独的连接组件数量,例如通过共同边缘连接的"三角形区块"。 |
| 计算网格体凸包外壳(Compute Mesh Convex Hull) | 计算给定网格体的凸包外壳,或你通过选择输入定义的网格体部分,并在单独的网格体中返回。 |
| 计算网格体扫描外壳(Compute Mesh Swept Hull) | 计算输入网格体的2D扫描外壳,并在单独的网格体中返回。 |
| 计算网格体凸包分解(Compute Mesh Convex Decomposition) | 计算给定目标网格体的凸包外壳分解。 假定请求了多个外壳,将返回尝试近似表示网格体的多个外壳。 不能保证整个网格体会包含在外壳中。 |
多路径
这些函数将执行多路径操控。 多路径是通过顶点排序定义的路径。
| 节点名称 | 描述 |
|---|---|
| 获取多路径顶点数量(Get Poly Path Num Vertices) | 返回多路径中的顶点数量 |
| 获取多路径最后一个索引(Get Poly Path Last Index) | 返回多路径中最后一个顶点的索引。 |
| 获取多路径顶点(Get Poly Path Vertex) | 返回指定顶点的3D位置。 |
| 获取多路径切线(Get Poly Path Tangent) | 返回多路径中指定顶点索引处的本地切线向量。 |
| 获取多路径弧线长度(Get PolyPath Arc Length) | 返回多路径的长度。 |
| 获取最近顶点索引(Get NearestVertexIndex) | 返回3D中最接近指定点的多路径顶点的索引。 |
| 在轴上展平为2D(Flatten To 2D On Axis) | 废弃给定轴并使用其他两个坐标作为新的X、Y坐标,从而创建路径的2D展平副本。 |
| 将样条线转换为多路径(Convert Spline To PolyPath) | 基于给定取样选项,将USplineComponent中的位置取样为多路径。 |
| 将多路径转换为数组(Convert PolyPath To Array) | 使用多路径顶点位置填充3D向量数组。 |
| 将数组转换为多路径(Convert Array To PolyPath) | 根据3D位置向量数组创建多路径。 |
| 将多路径转换为2D向量数组(Convert PolyPath To Array Of Vector 2D) | 使用投影到XY平面的多路径顶点位置创建2D向量数组。 |
| 将2D向量数组转换为多路径(Convert Array Of Vector 2D To PolyPath) | 根据2D位置向量数组创建多路径。 对应多路径顶点的Z坐标将为零。 |
| 创建圆周路径3D(Create Circle Path 3D) | 在XY平面上的原点附近创建闭合圆周,然后通过变换输入重新定位。 |
| 创建圆周路径2D(Create Circle Path 2D) | 在XY平面上的给定中心附近创建闭合圆周。 对于闭合路径,结束顶点不是开始顶点的重复内容。 |
| 创建弧线路径3D(Create Arc Path 3D) | 在XY平面上的原点附近创建开放弧形,然后通过变换输入重新定位。 |
| 创建弧线路径2D(Create Arc Path 2D) | 在XY平面上的给定中心附近创建开放弧形。 |
网格体比较
这些函数用于比较两个网格体。 使用这些节点时不会修改任一网格体。
| 节点名称 | 描述 |
|---|---|
| 是相同网格体(Is Same Mesh As) | 如果两个输入网格体按照输入选项定义的比较条件等同,则返回true。 |
| 测量两个网格体之间的距离(Measure Distances Between Meshes) | 测量两个网格体之间的最小/最大和平均最近点距离。 |
| 是相交网格体(Is Intersecting Mesh) | 如果两个输入网格体(带可选的变换)在几何上相交,则返回true。 |
BVH和空间查询
这些函数将为网格体创建和查询包围体层级(BVH)对象。
| 节点名称 | 描述 |
|---|---|
| 为网格体构建BVH(Build BVH For Mesh) | 为网格体构建一个可以由Is BVH Valid For Mesh、Rebuild BVH for Mesh、Find Nearest Point On Mesh、Find Nearest Ray Intersection With Mesh和Is Point Inside Mesh节点使用的BVH对象。 该函数将返回几何体脚本动态网格体BVH结构体。 |
| BVH是否对网格体有效(Is BVH Valid For Mesh) | 检查BVH对象是否仍可以用于网格体,如果网格体已更改,通常会返回false。 |
| 为网格体重新构建BVH(Rebuild BVH For Mesh) | 为网格体就地重新构建BVH对象,相较于构建新的BVH,这可以减少内存分配。 |
| 查找网格体上的最近点(Find Nearest Point On Mesh) | 查找网格体/BVH上到给定3D点的最近点。 |
| 查找光线与网格体的最近相交(Find Nearest Ray Intersection With Mesh) | 查找3D光线与网格体/BVH的最近相交。 |
| 点是否在网格体内(Is Point Inside Mesh) | 使用Fast Winding Number查询来测试某个点是否在网格体/BVH内。 |
工具
这些辅助函数很适合几何体脚本网格体处理和流程性生成器。
| 节点名称 | 描述 |
|---|---|
| 创建动态网格体池(Create Dynamic Mesh Pool) | 创建新的动态网格体池对象。 |
| 创建唯一的新资产路径名称(Create Unique New Asset Path Name) | 给定基础路径和基础资产名称,创建新的唯一资产名称,这很适合Create New Static Mesh Asset From Mesh等函数。 此节点仅适用于编辑器。 |
| 获取网格体信息字符串(Get Mesh Info String) | 返回包含网格体统计数据和其他信息的调试字符串。 |
| 将样条线取样到变换(Sample Spline To Transforms) | 基于给定取样选项,将USplineComponent取样为FTransform列表。 |
术语表
| 术语 | 定义 |
|---|---|
| 覆层(Overlay) | 该数据结构表示应用于网格体的顶点数据的类型。这些类型包括:顶点颜色、法线、切线和UV。 指定类型的多个值可以存储在单个顶点中。 在这种情况下,根据类型,会发生以下某个情况:使用最后一个值,对这些值取平均值,或使用任意值。 |
| 单环(One-ring) | 所选顶点的相邻顶点,通过边缘连接。
顶点M的单环。 |
| UV集(UV Set) | 包含网格体的UV坐标,也称为UV通道。 你可以使用多个UV通道表示不同的UV贴图。 |
| 范围(Extents) | 盒体的半尺寸(沿三个轴测量), 用于确定从中心点延伸多少。 中心点C和范围E将生成一个盒体,该盒体最近的左下角位于 |