进阶用法

进阶用法

装配工具集规范

组合样条工具采用“分子”系统,即将多个刚性网格连接在一起,形成一个刚性整体。构建分子的流程是:首先放置根网格,然后依次添加其他刚性网格,最终组装成一个刚性集合(即多个网格相互连接并紧密结合)。整个分子可以通过旋转根网格来实现整体旋转。桥接件(桥梁网格)用于将一个分子和下一个分子连接起来,使整个组件能够沿着样条曲线进行布置。要创建实用的装配工具集,理解文件命名规范和锚点命名标准非常重要。

核心架构

该系统通过构建刚性分子并使用桥接件连接它们来创建复杂的组件:

  • 分子:由多个刚性网格连接组成的一个刚性整体
  • 刚性网格:每个分子中的独立部件,作为结构的骨架
  • 桥梁网格:可拉伸的连接部件,用于跨越不同分子间的连接
  • 根网格:每个分子的起始点,决定整个单元的旋转中心
  • 变体:用于视觉多样性的替代网格版本

文件命名规范

必需的文件名格式

根网格

  • 格式[name]_root.daeroot_[name].dae
  • 示例ak_wood_pole_old_001_root.dae
  • 作用:定义主要网格,作为分子的起点
  • 回退机制:若未检测到根网格,则默认将数组中第一个刚性网格作为根

桥梁网格

  • 格式[name]_bridge.daebridge_[name].dae
  • 示例ak_wood_pole_old_001_bridge.dae
  • 作用:用于连接装配中的连续刚性网格
  • 要求:必须严格拥有2个锚点(源点和目标点)
  • 锚点位置约定:源点应靠近 +X 边,目标点应靠近 -X 边

支持垂度的桥梁

  • 格式[name]_bridge_sag.daesag_[name]_bridge.dae
  • 示例ak_wood_pole_old_001_bridge_sag.dae
  • 作用:支撑沿样条出现竖向下垂(如电话线、缆绳等)的桥梁部件
  • 行为:会根据样条段落的高度差自动在Z方向缩放
  • 垂度因子:可按 1.0 + sag * 0.1 进行竖向拉伸

变体网格

  • 格式[baseName]_var_[variantName].dae
  • 示例ak_wood_pole_old_001_var_damaged.dae
  • 作用:基础网格的替代版本,用于丰富视觉效果
  • 行为:可单独启用/禁用,支持随机分布
  • 基础名限制:变体文件名前缀必须与其对应的基础网格完全一致(如 ak_wood_pole_old_001.daeak_wood_pole_old_001_var_damaged.dae

刚性网格

  • 格式[name].dae(未带其他特殊标识的网格均属于刚性网格)
  • 示例ak_wood_pole_old_001.dae
  • 作用:分子装配的主要结构部分
  • 行为:会按照顺序沿着样条路径依次排列

锚点命名规范

锚点结构

  • 格式nail.[joinName].[pointType].[aliasName]
  • 示例
    • nail.connection1.point.main
    • nail.connection1.head.primary
    • nail.connection1.aux.support

点类型与自由度说明

1. 钉状关节 (1 自由度) - 最常见(90% 用例)

  • 格式nail.[joinName].point + nail.[joinName].head
  • 示例nail.connection1.point, nail.connection1.head
  • 行为:允许围绕钉子的轴线(head-point向量)旋转
  • 适用场景:铰接连接、旋转部件、桥梁连接
  • 连接要求:被连接的两个网格上必须出现同名的连接名,并具有相应锚点

2. 固定关节 (0 自由度)

  • 格式nail.[joinName].point + nail.[joinName].head + nail.[joinName].aux
  • 示例nail.connection1.point, nail.connection1.head, nail.connection1.aux
  • 行为:完全刚性的连接,没有任何相对运动
  • 适用场景:焊接连接、坚固结构连接
  • 连接要求:被连接的两个网格上必须出现同名的连接名,并具有相应锚点

3. 球形关节 (3 自由度)

  • 格式:仅 nail.[joinName].point
  • 示例nail.connection1.point
  • 行为:允许所有方向的自由旋转
  • 适用场景:万向接头、柔性连接
  • 连接要求:被连接的两个网格上必须出现同名的连接名,并具有相应锚点

别名系统

  • 格式nail.[joinName].[pointType].[aliasName]
  • 示例nail.connection1.point.mainnail.connection1.point.alternate
  • 用途:同一连接类型可按不同名称多次出现
  • 行为:支持复杂装配,同一个连接名可有多个锚点
  • 适用情况:如单个网格(如桥梁)需要与多个连接点对接时,通过别名进行区分
  • 界面控制:每个别名都可以在界面中独立启用或禁用

网格分布方式

该工具为沿样条线布置组件提供了三种分布方式:

单一分布

当只启用一个组件组时,仅有一种分布 —— 在样条线的每一个网格放置位置上都放置相同的装配体。

轮流分布

依次循环使用所有可用的组件组,确保均匀分布。这样可以形成诸如下列的重复模式:

  • 杆子、电线、杆子、电线 (例如电话线路基础设施)
  • 立柱、木板、立柱、木板 (如围栏组件)
  • 干净、脏、干净、脏 (为围栏立柱制造变化)

该模式会从样条线起点到终点一致重复。

随机分布

通过权重滑块和随机种子实现概率性分布:

  • 权重归一化:每个组件组的权重滑块都会被归一化,用于确定其出现概率
  • 概率计算:每个组件组根据其归一化后的权重获得出现的机会
  • 随机种子:随机种子保证了分布的可复现性——相同的种子总是生成同样的分布
  • 顺序填充:沿样条线依次根据概率分布填入装配体

示例:有3个组件组,权重分别为0.8、0.4和0.1时:

  • 组件组A(权重0.8):约62%概率,出现次数最多
  • 组件组B(权重0.4):约31%概率,出现频率适中
  • 组件组C(权重0.1):约7%概率,出现最少

如果样条线上有100个网格放置位置,可能大约会有62个位被组件组A占据,31个位被组件组B占据,7个位被组件组C占据,从而在保持比例的同时实现自然变化。

组件组与变体

在分子组合样条工具中,每个组件组可单独选择分布方式:

  • 组件组:一个基础网格与其变体组成一个组(如围栏立柱)
  • 变体:同类型但外观不同的网格(如干净、脏、腐烂的围栏立柱)
  • 美术变化:允许在结构一致的前提下,让装配体看起来自然又多样

这种方法非常适合创建自然且变化丰富的布置,同时可通过权重精细控制艺术效果,并由随机种子保证分布的一致性。通过随机种子滑块可以快速试验不同变体分布组合。

抖动控制

组合样条线工具提供了三轴(横滚/俯仰/偏航)的扰动(jitter)滑块,以便为装配体的摆放增加自然变化:

抖动操作流程推荐

方式一:先设定扰动幅度

  • 设置扰动幅度:通过调整横滚、俯仰、偏航三个滑块,设定整体变化的幅度
  • 用随机种子微调:利用随机种子滑块来切换不同的变化组合,而不改变已设置的幅度
  • 反复试验优化:这种方式便于先通过扰动滑块确定“变化的风格”,再通过更换随机种子找到最佳排列效果

方式二:先固定随机种子

  • 设定随机种子:选定一个特定的随机种子锁定某一套变化样式
  • 单独调整扰动:再细调横滚、俯仰或偏航滑块,以达到期望的表现
  • 精准控制:适合用户希望保持某种变化分布,仅调整部分参数时使用

扰动应用场景

  • 数值较小:产生微妙的自然变化,使摆放更逼真
  • 数值较大:带来夸张或艺术化/风格化的扰动效果
  • 组合应用:可在不同轴设置不同幅度,打造复杂的变化模式
  • 选择性扰动:只在某一轴(如仅横滚)使用扰动,实现定向变化

地形塑形(Terraforming)

组合样条线工具具备地形塑形功能,可根据用户设计的样条自动调整周围地形,使其与装配体自然融合。这对于打造真实、与地形高度贴合的基础设施非常有用。

地形塑形的工作原理

  • 创建并编辑样条线:根据需求设计样条线的高程、倾斜和宽度变化
  • 进入地形塑形面板:切换到**“地形”**标签页即可找到所有相关的地形塑形控制项
  • 参数设置:根据地形塑形需求调整各项参数
  • 执行地形塑形:点击**“Terraform”**按钮来执行地形调整操作

地形塑形参数说明

影响范围(Domain of Influence, DOI)

  • 范围:0-500米
  • 作用:决定从样条线边界往外多远的地形会被本次塑形影响
  • 用法:数值越大,塑形作用范围越广;越小则效果更局部

塑形边距(Terraform Margin)

  • 范围:1-20米
  • 作用:在样条线两侧生成一条平坦光滑的缓冲带,在此之后地形逐渐衔接原始地形
  • 表现:边距会随着样条线的高度与倾斜变化而适配,紧贴样条表面
  • 效果:保证样条线周围有足够平整的区域进行装配

塑形衰减(Terraform Falloff)

  • 范围:1-5
  • 作用:控制从边距平面到影响范围边界过渡的“衰减”速度
  • 取值说明
    • 1:非常渐进、柔和的过渡
    • 3:平衡的衰减,大多数情况下推荐此值
    • 5:非常陡峭、迅速的过渡,适合需要锐利地貌的情况

噪声参数

噪声粗糙度(Noise Roughness)

  • 范围:0-1
  • 作用:决定地表隆起/起伏的大小幅度(凸起高度)
  • 用法举例
    • 0:完全光滑平整
    • 0.5:适度的地形变化
    • 1:极致粗糙、形成明显大块起伏

噪声尺度(Noise Scale)

  • 范围:0-1
  • 作用:控制地形变化的频率(起伏密度)
  • 用法举例
    • 0:细腻、密集的表面纹理
    • 0.5:较为均衡的表面细节
    • 1:大尺度、稀疏的地表变化

注意:噪声系统会自动叠加多层细节,以确保地形变化真实自然。

地形塑形流程

  • 地形分析:系统会分析样条线的高程、倾斜与宽度
  • 边距创建:沿样条线平面生成一个平滑的缓冲边带
  • 衰减应用:从边缘向DOI边界执行地形的渐进混合
  • 噪声叠加:为地表加入细致变化,提升仿真度
  • 最终融合:将修改后的地形平滑地与原有地形衔接

性能须知

  • 执行耗时:通常耗时2-7秒,视样条长度与DOI大小而定
  • 操作类型:为阻塞操作,执行过程中界面会无响应
  • 内存占用:DOI越大,地形计算所需内存也越多

最佳实践

  • 迭代流程:地形塑形支持撤销/重做,便于反复试验与微调
  • 先调DOI:优先调整影响范围,以获得合适的整体塑形区域
  • 再调边距:设定好DOI后,调整边距避免大衰减时切割样条表面
  • 边距提示:1米边距仅作参考,并非始终精确围绕样条1米
  • 增加细节:最后用噪声参数增加地表细节与变化
  • 衰减均衡:避免使用1(过于平缓),3-4通常效果最佳
  • 噪声融合:利用噪声营造自然地表与真实起伏变化

组装套件制作

要制作可用的组装套件,必须仔细规划文件结构、命名规范和锚点设置。系统会自动分析套件架构,并根据分析到的连接关系自动构建“分子”。

套件文件夹结构

建议将所有组装套件文件整理在专用文件夹下:

  • 网格文件:所有部件的.dae格式网格
  • 命名一致性:严格遵循root、bridge、variation网格的命名规则
  • 文件格式:仅支持Collada(.dae)文件
  • 锚点:保证所有网格的锚点命名正确且一致

组装生成流程

1. 分子构建

  • Root选择:系统以文件名识别主网格,找不到则用第一个刚性网格
  • 锚点分析:自动解析全部锚点,识别连接类型
  • 连接映射:通过锚点名将桥件与刚性网格自动配对
  • 布置顺序:结合连接关系确定组装顺序

2. 锚点处理

  • 边界修正:将桥件锚点拉至网格边界以确保对齐
  • 朝向计算:根据连接类型自动算出正确连接方向
  • 连接校验:保证所有连接都完整成立,方可进入组装

3. 样条填充

  • 分子放置:将完整组装单元沿样条自动布置
  • 桥件缩放:自动沿局部X轴缩放桥件,精确跨接分子间距
  • 变体选择:依据分布参数自动挑选合适变体
  • 抖动应用:利用抖动参数为布置加入可控随机性

组件属性

每个组装套件的组件都有可配置的属性:

刚性网格

  • isRandom:选择轮询放置还是随机放置模式
  • randomWeight:随机选择的概率权重(0.0~1.0)
  • isEnabled:是否启用该刚性网格参与组装

桥件网格

  • isRandom:桥件放置的分布方式
  • randomWeight:用于随机分布的选择概率
  • isSag:是否支持下垂(文件名需带有 _sag

变体网格

  • isRandom:变体选择的分布方式
  • randomWeight:单独设定的随机权重,实现精细控制
  • isEnabled:该变体是否启用

组装套件故障排查

组装样条工具内置了强大的验证系统,可确保组装套件的结构正确。如果验证失败,系统会在控制台输出一些技术信息以便排查。

验证系统概述

系统以健壮性优先,具体特性包括:

  • 快速失败:验证失败会直接导致构建中断
  • 控制台日志:所有验证问题均以警告级别('W')输出
  • 技术细节:错误信息会写入控制台
  • 静默回退:某些情况下自动回退,并伴有控制台警告

必要验证项

连接完整性

  • 要求:所有连接点(join)都必须在其他网格上有对应
  • 验证方式:系统在组装前会检查连接对是否完全
  • 失败表现:若连接不完整,将导致整体分子组装失败

桥件连通性

  • 要求:每个桥件必须恰好连接两个刚性网格(可为分子内的不同刚性网格)
  • 验证方式:源和目标的连接点数量必须一致
  • 失败表现:若不符,构建会失败,并输出具体错误信息

锚点规范

  • 要求:锚点的命名与位置需有效
  • 验证方式:所有锚点名称需符合 nail.[joinName].[pointType].[aliasName] 格式(aliasName 可选)
  • 失败表现:命名无效将导致构建失败

常见错误场景

缺少根网格

  • 现象:文件名里找不到包含 root 的网格
  • 行为:系统自动选用第一个刚性网格(按数组索引顺序)
  • 通知:静默回退,并有控制台警告
  • 处理:请查看控制台警告信息

连接点有误

  • 现象:锚点命名错误或连接对不全
  • 行为:记录警告信息,指出命名有误的锚点
  • 通知:仅以控制台警告形式提示
  • 处理:请检查锚点命名规范

未连通网格

  • 现象:存在未与其它网格连接的锚点
  • 行为:构建整个分子失败
  • 通知:控制台报错提示
  • 处理:确保所有网格都有正确的连接

桥件锚点数不符

  • 现象:桥件锚点数量不为2
  • 行为:构建失败,并输出具体错误信息
  • 通知:控制台报错提示
  • 处理:请确认每个桥件有且仅有2个锚点

调试工作流程

1. 检查控制台输出

  • 位置:所有验证错误均以 log('W', logtag, ...) 格式输出
  • 内容:包含验证失败的详细技术信息
  • 级别:警告级别,并非错误级别

2. 校验文件命名

  • 根网格:确保有一个网格的文件名包含 root
  • 桥件网格:检查 bridge 命名和 sag 变体
  • 变体:确认 var 的命名规则用于任何变体

3. 验证锚点

  • 格式:确认结构遵循 nail.[joinName].[pointType].[aliasName](aliasName 可选)
  • 完整性:确保所有连接点都具备所需锚点
  • 连接关系:确认锚点在不同网格之间正确连接

4. 逐步测试

  • 简单开始:从基本的刚性网格连接入手,逐个添加连接点
  • 增加复杂性:逐步添加桥件及变体
  • 每步验证:每次添加后检查控制台输出

Kit 创建的最佳实践

  • 提前规划连接:在建模前先设计好组装结构
  • 遵循命名规范:所有组件严格按命名规范命名
  • 早期测试:在增加复杂性前先验证基础连接
  • 关注控制台:及时检查控制台的警告和错误信息
  • 参考示例:借鉴已成功的 Kit 的命名和结构
上一次修订: 六月 22, 2026

还有其他问题?

加入我们的 Discord 服务器
Our documentation is currently incomplete and undergoing active development. If you have any questions or feedback, please visit this forum thread.