常见节点类型

FlexGym 的场景由不同类型的节点共同组成。几何节点负责显示和参与编辑,机器人结构节点描述 连杆、关节等层级关系,资源节点则保存材质、纹理等可显示数据。

节点类型

常见节点可以按用途分成几类:

类型 典型节点 主要作用
基础几何节点 立方体、球体、圆柱体、胶囊体 快速创建规则刚体、碰撞体、平台、连杆和占位几何。
网格与地形节点 网格、平面、高度场 表达外部网格、解析平面、起伏地形和环境边界。
结构节点 组、空间、机器人、连杆 组织父子层级、机器人结构、可视体 / 碰撞体 容器和 机器人。
关节节点 关节 连接两个 连杆,并描述旋转、平移、固定或球形运动关系。
资源节点 材质、纹理 保存可复用的显示资源,供几何体引用。

基础几何节点

基础几何节点是 FlexGym 中最基本的对象,包括 立方体球体圆柱体胶囊体。它们不依赖外部模型文件,创建后立即可以显示,也可以通过添加刚体、固定支座和材质绑定等属性参与场景搭建与仿真。

和 网格 相比,基础几何节点的数据更简单,碰撞形状更稳定。

立方体、球体、圆柱体、胶囊体

节点总览

节点 核心几何参数 常见用途
立方体 尺寸,内部为半尺寸 箱体、墙块、底座、简单 连杆、规则障碍物。
球体 半径 球形刚体、滚动物体、简化碰撞体、关节或传感器占位。
圆柱体 半径高度 轮子、杆件、轴、圆柱障碍物、旋转体。
胶囊体 半径高度,其中 高度 不含两端半球 连杆、角色碰撞体、机器人肢体近似、需要平滑端部的碰撞体。

这四类节点本身是叶子节点,不能作为父容器;如果需要组织多个几何体,应把它们放到 组 或 空间节点下。

常用创建步骤如下:

  1. 在节点树中选择希望添加到的位置。
  2. 右键打开添加菜单,选择添加元素
  3. 选择 立方体球体圆柱体胶囊体
  4. 新节点会出现在当前父节点下,并在视图区中显示默认形状。
  5. 选中新节点,在属性面板中编辑 几何变换
  6. 如果需要参与仿真,在属性面板中添加刚体固定支座 等物理属性。

如果正在构建机器人结构,通常不建议把几何体直接放在根节点下,而是放在对应 连杆 的 可视体碰撞体 容器下。这样在导入、导出和仿真时,系统可以更清楚地知道这个几何体是用于显示,还是用于碰撞。

基础几何节点通常会在属性面板中看到这些内容:

区域 作用
基础信息 查看和编辑节点名称、类型、可见性、启用状态等。
变换 编辑位置、旋转和缩放。位置和旋转决定节点在场景中的姿态。
几何 编辑节点自身的几何尺寸,例如半尺寸、半径、高度。
材质绑定 将几何体绑定到 材质 节点,改变显示颜色、贴图、透明度等视觉效果。
刚体 让几何体作为刚体参与仿真,并设置质量、阻尼、重力等物理参数。
固定支座 将节点固定在世界中,或锁定部分自由度。

几何 参数描述对象自己的几何尺寸,变换 描述对象如何放到场景里。

立方体 节点

立方体 表示轴对齐的长方体。它适合构建最常见的规则物体,例如平台、方块、墙体、桌面、地面边界、机器人底座或简单连杆。

参数 默认值 说明
尺寸 [1, 1, 1] 立方体 的内部半尺寸,分别对应 X、Y、Z 方向从中心到表面的距离。
变换 位置 [0, 0, 0] 立方体 中心所在位置。
变换 旋转 [0, 0, 0] 立方体 的朝向。

FlexGym 内部把 立方体 的 尺寸 当作 半边长。实际显示和仿真使用的完整尺寸是 尺寸 * 2。例如 尺寸 = [0.5, 0.2, 0.1] 时,实际盒子尺寸是 1.0 x 0.4 x 0.2

  • 做地面或平台时,立方体 可以表达有限厚度和有限边界;如果需要无限解析平面,使用 平面 更合适。
  • 做碰撞体时,立方体 通常比复杂 网格 更稳定、更快。
  • 做机器人连杆的碰撞体时,立方体可作为包围盒近似,减少碰撞计算开销。
  • 做薄板时,不要把某个方向尺寸设得过小到接近 0。过薄物体可能导致接触不稳定。

球体 节点

球体 只有一个半径参数,非常适合做滚动物体、简化碰撞体和占位对象。

参数 默认值 说明
半径 0.5 球体半径。
变换 位置 [0, 0, 0] 球心所在位置。
变换 旋转 [0, 0, 0] 球体视觉上对称,但旋转仍会影响绑定坐标系。

球体 的尺寸由 半径 决定。

  • 球体 适合做稳定的碰撞体,因为接触方向连续,没有棱角。
  • 如果只是为了表示关节位置或参考点,可以用较小半径的 球体,并关闭或不添加刚体属性。
  • 用 球体 表示机器人 连杆 时,视觉上简单但不一定符合真实惯性和接触范围,应根据用途决定是否换成 胶囊体、圆柱体 或 网格。

圆柱体 节点

圆柱体常用于轮子、轴、杆件、圆柱形障碍物和旋转体。

参数 默认值 说明
半径 0.3 圆柱半径。
高度 1.0 圆柱高度。
变换 位置 [0, 0, 0] 圆柱中心位置。
变换 旋转 [0, 0, 0] 控制圆柱轴向在世界中的方向。

圆柱体 的关键是区分半径和高度。半径控制横截面大小,高度控制轴向长度。旋转圆柱时,应关注它的局部轴向是否与期望方向一致。

  • 做轮子时,圆柱体 的视觉轴向和 关节 轴向需要一致,否则控制方向会很难理解。
  • 做长杆时,圆柱体 比 网格 更轻量,但端面是平的;如果希望端部平滑,胶囊体 更合适。
  • 做碰撞体时,避免半径或高度太小,否则可能导致接触非常敏感。

胶囊体 节点

胶囊体 表示中间是圆柱、两端是半球的胶囊体。它比 圆柱体 更适合表达平滑连杆,因为端部不会出现尖锐边缘。

参数 默认值 说明
半径 0.3 胶囊半径,也是两端半球半径。
高度 1.0 中间圆柱段高度,不包括两端半球。
变换 位置 [0, 0, 0] 胶囊中心位置。
变换 旋转 [0, 0, 0] 控制胶囊轴向在世界中的方向。
  • 胶囊体 适合做腿、臂、杆件等细长结构的近似碰撞体。
  • 胶囊体 的圆滑端部能减少边缘接触带来的抖动。
  • URDF 没有原生 胶囊体 几何标签,导出 URDF 时 胶囊体 不能直接保留为原生胶囊,需要换成 网格圆柱体 或其他近似表达。

其他说明

动态属性支持

基础几何节点支持的常用动态属性如下:

属性 立方体 球体 圆柱体 胶囊体 说明
刚体 支持 支持 支持 支持 让对象作为刚体参与仿真。
材质绑定 支持 支持 支持 支持 绑定 材质 节点改变外观。
固定支座 支持 支持 支持 支持 固定对象或锁定自由度。

与 机器人 / 连杆 的关系

基础几何节点可以直接作为独立物体,也可以作为机器人 连杆 的子节点使用。

常见结构如下:

1机器人根节点 (空间, articulation root)
2  base_连杆 (空间, 连杆)
3    可视体 (空间, 可视体)
4      base_可视体_立方体 (立方体)
5    碰撞体 (空间, 碰撞体)
6      base_碰撞体_立方体 (立方体)

在这种结构中,立方体 节点本身只是几何体;真正表示机器人 连杆 的是 空间(空间类型="连杆")。运行仿真或导出 URDF 时,系统会根据 连杆、可视体、碰撞体、关节 的层级关系来判断几何体归属。

网格 节点

网格 节点用于表示外部网格模型或内联网格数据。它适合承载复杂外形,例如机器人外壳、机械零件、环境障碍物、从建模软件导出的模型,以及无法用 立方体、球体、圆柱体、胶囊体 描述的几何结构。

和基础几何体不同,网格的形状来自顶点、面、法线、UV、顶点颜色等网格数据。它的表现质量取决于源文件质量,也更容易受到文件格式、单位、坐标轴、面片拓扑、顶点数量和材质资源的影响。

网格 节点

网格 节点通常包含以下信息:

内容 说明
网格路径 网格文件名或路径,用于识别来源。
网格文件格式 文件格式,例如 stlobjdaemshvtu 等。
网格数据 实际用于显示或仿真的顶点、面、法线、UV、边和顶点颜色数据。
网格缩放 网格数据在 变换 之前应用的缩放,默认 [1, 1, 1]
变换 网格 节点整体在场景中的位置和朝向。
材质绑定 网格 外观材质绑定,支持材质颜色、贴图和顶点颜色逻辑。

创建和替换 网格

常用流程如下:

  1. 在场景集合或节点树中添加 网格 节点。
  2. 选中 网格 节点。
  3. 在属性面板的 几何 区域查看当前网格文件。
  4. 点击文件按钮,选择本地网格文件。
  5. 导入成功后,属性面板会显示文件名和顶点数量。
  6. 使用 网格缩放 调整模型数据的缩放。
  7. 使用 变换 调整模型整体位置和朝向。
  8. 如需改变外观,添加 材质绑定 或检查顶点颜色模式。

当前属性面板中的 网格 文件替换入口支持常见格式:.stl.obj.dae

格式 常见特点 适合用途
STL 只描述三角面几何,通常没有材质、贴图和层级。 碰撞体、机械零件、简单外形。
OBJ 支持顶点、面、UV,可配合 MTL 和贴图。 视觉模型、带 UV 的静态模型。
DAE 可包含场景层级、材质、UV、顶点色等信息。 从建模软件或机器人资源导出的视觉模型。

顶点、面和法线

网格的形状由顶点和面组成。属性面板会显示顶点数量,顶点数量越多,模型越精细,但渲染和仿真成本也越高。

数据 作用
顶点 模型表面的空间点。
面索引 指定哪些顶点组成三角面。
法线 控制光照和表面方向;缺失或错误会导致明暗异常。
UV 控制贴图如何贴到模型上。
顶点颜色 每个顶点自带颜色,可覆盖或影响材质显示。
网格边 用于线框显示、选择辅助或体网格边界可视化。

如果网格看起来发黑、反光异常或某些面不可见,可能是法线方向、材质、透明度或双面显示设置问题。如果贴图错位,通常需要检查 UV。

材质绑定和顶点颜色

网格支持 材质绑定。绑定后,网格可以使用 材质 节点中的颜色、金属度、粗糙度、透明度和贴图。

但网格还有一个特殊点:它可能自带顶点颜色。材质绑定 中的顶点颜色模式会影响最终外观:

模式 效果
使用顶点颜色 优先使用网格数据中的顶点颜色。
使用材质颜色 / 贴图 使用绑定 材质 节点的 漫反射颜色、纹理 等视觉参数。

如果绑定材质后外观没有明显变化,首先检查是否仍在使用顶点颜色模式。外部 DAE 或部分 OBJ 资源可能带有顶点颜色,导致普通材质颜色不明显。

网格作为可视体和碰撞体

网格 可以用于显示,也可以用于碰撞。实际项目中经常把高精度视觉模型和简化碰撞模型分开:

1连杆_1 (空间, 连杆)
2  可视体 (空间, 可视体)
3    连杆_1_shell (网格, 高保真)
4  碰撞体 (空间, 碰撞体)
5    连杆_1_碰撞体 (立方体 或者 简单网格)

这样做的好处是:用户看到的模型足够精细,并且仿真使用的碰撞体更简单、更稳定、更快。

在机器人结构中,网格 通常放在 可视体碰撞体 空间 下。物理场景面板中的几何来源选项会影响仿真使用 可视体 还是 碰撞体。当选择 碰撞体 而某个 连杆 没有 碰撞体 几何时,系统可能回退使用 可视体,以保持运动学链完整。

导出规则

在 URDF 导出中,网格 节点如果有有效网格数据,会被导出为 STL 文件,并在 URDF 中以 <网格 filename="..."/> 引用。导出过程会根据网格数据生成 meshes/xxx.stl 形式的资源。

需要注意:

  • 没有有效网格数据的网格节点会被跳过。
  • 复杂材质、贴图、顶点颜色不一定能通过 STL 保留。

常见问题

导入后什么都看不见。
检查文件是否解析成功、顶点数量是否为 0、网格缩放 是否过小、变换 是否把模型移动到远处、可见性是否关闭。

绑定材质后颜色没有变化。
检查是否启用了顶点颜色模式。

贴图显示错位。
通常与 UV 有关。确认源模型有有效 UV,并检查 纹理 的 UV 缩放和偏移。

网格 能显示但不能仿真。
检查是否有有效 网格Data,是否添加并启用 刚体,是否位于正确 连杆 下,以及物理场景的几何来源是否使用该 网格。

仿真很慢或接触不稳定。
降低 网格 面数,改用简化碰撞体,或使用基础几何体近似复杂外形。

平面 节点

平面 节点表示一个解析平面,常用于地面、墙面、边界面、接触测试面和无限参考平面。它和 立方体、网格 这类有限体积对象不同:平面的物理语义通常是一个无限平面。

在视图区里,平面 会以可读的网格和表面效果显示;在仿真里,它可以作为解析接触平面参与碰撞。显示尺寸、无限淡出、背面效果和材质绑定主要影响视觉体验。

平面节点

平面 的核心概念

概念 说明
显示模式 控制视图区以无限淡出还是有限矩形方式显示。
显示尺寸 有限显示模式下的视觉宽高;不改变解析平面的物理无限语义。
背面可视 从平面背面观察时,是否仍能看到平面上方对象。
材质绑定 可绑定 材质 / 纹理 改变平面表面外观。

创建平面步骤如下:

  1. 在场景集合或节点树中添加平面
  2. 选中平面节点。
  3. 变换 中设置平面所在位置、调整旋转。
  4. 如需外观效果,添加 材质绑定 并选择 材质 节点。

平面显示

平面 有两种主要显示模式:

模式 说明 适合场景
无限 以无限平面的方式显示,并在远处淡出。 地面、世界边界、仿真基准面。
有限 以有限矩形范围显示。 需要强调局部范围、做视觉辅助或避免大面积遮挡。

无限 显示模式更适合物理地面。它让用户一眼知道这是场景中的基础面,同时远处淡出可以减少画面压迫感。

显示尺寸 使用 W / H 两个数值表示有限显示尺寸。它只在 有限 显示模式下直接控制可见矩形大小。

背面效果

平面 的背面设置用于改善视图区观察体验:

设置 说明
反面透视 是否允许从背面看到透明或半透明的平面效果,并保持平面另一侧对象可见。
反面效果:透明 背面更透明、更干净。
反面效果:磨砂 默认背面效果,半透明,适合“从背面看地面”的感觉。

接触与仿真

平面 可以作为接触平面参与仿真。使用时需要明确:

  • 平面 没有厚度。
  • 平面 通常不作为可移动刚体。
  • 显示尺寸 不应影响物理接触范围。

在物理场景中,平面 很适合作为地面。但如果你需要有限尺寸的地面、可移动板件、带厚度的平台或可以被碰撞推开的平板,应使用 立方体 或 网格,而不是 平面。

类型 适合用途 主要限制
平面 无限解析地面、墙面、参考面。 没有厚度,显示尺寸不代表物理边界。
立方体 有厚度、有有限尺寸的平台、墙体、障碍物。 只能表示规则长方体。
高度场 起伏地形、坡面、崎岖地面。 只能表示单值高度表面。
网格 任意复杂三维结构。 依赖模型质量,碰撞更复杂。

一个简单判断方式:无限平地用 平面;有限平台用 立方体;起伏地形用 高度场;复杂拓扑用 网格。

导出限制

平面 在 URDF 导出中没有直接对应的标准几何标签。URDF 更关注机器人自身结构,平面 通常属于场景环境而不是机器人 连杆 几何。因此导出 URDF 时,平面 可能会被跳过。

如果外部工具链需要保留地面,可以采用这些方式:

  • 在目标工具中单独创建 平面。
  • 使用 立方体 表达有限厚度地面。
  • 使用 网格 表达自定义地形。
  • 在案例或场景文件中保留 平面,而不是依赖 URDF 表达环境。

结构节点

结构节点负责组织场景层级和机器人结构。它们决定子节点如何被归类、如何继承变换、如何被导出、以及仿真时如何识别 连杆、可视体、碰撞体 和 机器人。

FlexGym 中最常见的结构节点包括 空间机器人连杆。其中 机器人 和 连杆 本质上是带语义的 空间:机器人 通常是 空间 上标记 机器人,连杆 通常是 空间(空间类型="连杆")

结构节点

结构节点总览

节点 本质 是否带 变换 主要作用
纯组织容器 不用于影响子节点变换 逻辑分组、分类、整理节点树。
空间 变换容器 组织场景层级,并对子节点应用位置和旋转。
机器人 空间(机器人) 表示一个机器人或关节系统的根。
连杆 空间(空间类型="连杆") 表示机器人或机构中的刚体链节。

结构节点解决的是“东西应该放在哪里”和“系统如何理解这棵树”的问题。一个几何体能否被识别为某个 连杆 的 可视体 / 碰撞体,往往取决于它所在的结构节点。

组 节点

组 是纯组织容器。它相当于一个文件夹,用于把节点按用途或项目结构归类。

组 的特点:

  • 不应改变子节点的空间变换。
  • 适合组织环境、资源、辅助对象、案例模块。
  • 可以展开、折叠、重命名、移动和复制。
  • 不是机器人 连杆,不直接参与关节连接。
  • 不适合作为需要空间偏移的坐标系。

常见用法:

1环境 (组)
2  地面 (平面)
3  障碍物 (组)
4    立方体_1 (立方体)
5    立方体_2 (立方体)
6材质 (组)
7  金属 (材质)
8  橡胶 (材质)

如果你只是想让节点树结构更清晰,使用 组。

空间 节点

空间 是带 变换 的容器。它类似一个坐标空间,可以包含子节点,并对它们应用变换。

空间 的核心字段:

字段 说明
变换 空间 自己的位置和旋转,会影响子节点。
空间类型 语义类型,可为 坐标系、连杆、可视体、碰撞体。
机器人 标记该 空间 是否是机器人或关节系统根节点。

空间 的语义类型非常重要。它不只是图标或标签,而会影响导出和仿真时的识别。

空间 类型 含义 常见位置
坐标系 普通坐标参考系或变换容器。 场景组织、辅助坐标。
连杆 机器人或机构中的刚体链节。 机器人节点下的 base连杆、手臂连杆 等。
可视体 视觉几何容器。 连杆 下,用于放置可见 网格 / 立方体 等。
碰撞体 碰撞几何容器。 连杆 下,用于放置碰撞体。

坐标系 节点

坐标系 是最基本的空间节点类型,拥有最基本的空间节点语义,通常组织一块场景,比起 组 节点,多了一个空间位置的属性。

机器人 节点

在 FlexGym 中,机器人 通常不是一个单独的独立节点类型,而是一个 空间,并开启 机器人。它表示一棵机器人或机构结构的根节点。

一个常见 机器人 结构如下:

1机器人_手臂 (空间, 机器人)
2  base_连杆 (空间, 连杆)
3    可视体 (空间, 可视体)
4      base_网格 (网格)
5    碰撞体 (空间, 碰撞体)
6      base_碰撞体 (立方体)
7  肩膀_连杆 (空间, 连杆)
8    可视体 (空间, 可视体)
9      肩膀_网格 (网格)
10  肩膀_关节 (旋转关节)

机器人 的作用:

  • 标记一个关节系统的范围。
  • 帮助仿真时确定机器人根和 base 连杆。
  • 帮助导入导出时保持层级清晰。
  • 让用户从节点树中一眼识别机器人结构。

一个场景可以有多个 机器人 Root,例如多个机器人、一个机器人和一个夹具机构,或者多个可动机构。每个 机器人 根节点下应尽量保持自己的 连杆 和 关节 结构完整。

连杆 节点

连杆 是机器人或机构的刚体链节,通常是 空间(空间类型="连杆")。它本身负责表示一个刚体坐标系,下面可以包含 可视体 和 碰撞体。

连杆 的典型结构:

1连杆 (空间, 连杆)
2  可视体 (空间, 可视体)
3    连杆_可视体_网格 (网格)
4  碰撞体 (空间, 碰撞体)
5    连杆_碰撞体_立方体 (立方体)

连杆 的关键职责:

  • 作为 关节 的 父连杆 或 子连杆。
  • 承载 刚体 等物理属性。
  • 统一管理这个链节的 可视体 和 碰撞体 几何。

当一个 关节 连接两个对象时,连接目标必须是具有 连杆 语义的 空间,不能直接连接几何节点本身。

可视体 和 碰撞体 节点

可视体 和 碰撞体 都是 空间节点,只是 空间类型 不同。

容器 用途 常见子节点
可视体 控制显示外观。 网格、立方体、球体、圆柱体、胶囊体。
碰撞体 控制碰撞几何。 简化 网格、立方体、球体、圆柱体、胶囊体。

建议把 可视体 和 碰撞体 分开。这样可以使用高精度 网格 做显示,同时使用简化几何做碰撞,避免把复杂视觉模型直接送入碰撞计算。

层级规则

节点移动、复制和换父节点时,需要遵守结构规则:

  • 组 和 空间 是容器节点。而立方体、球体、圆柱体、胶囊体、网格、平面、材质、纹理 是叶子节点,不能作为父节点。
  • 不能把节点移动到自身或自身子树下,避免形成循环。

这些规则可以防止节点树出现难以解释的结构。例如,把一个 连杆 放到它自己的子节点下会造成循环;把一个 网格 当成父容器会让层级语义变得混乱。

手动搭建机器人结构

如果不通过导入,而是手工搭建一个简单机器人或机构,可以按这个顺序:

  1. 创建一个 空间,命名为机器人名称。
  2. 在属性面板中保持 空间类型 为 坐标系,并开启 机器人 选项。
  3. 在 机器人 节点下创建 base连杆,设置 空间类型 为 连杆。
  4. 在 base连杆 下创建 可视体 空间节点 和 碰撞体 空间节点。
  5. 分别在 可视体 / 碰撞体 下添加 网格 或基础几何体。
  6. 给 base连杆 添加 刚体,并设置质量等参数。
  7. 创建第二个 连杆,例如 手臂连杆。
  8. 添加 关节 节点,设置 父连杆 为 base连杆,子连杆 为 手臂连杆。
  9. 根据 关节 类型设置轴向、锚点、限制和驱动。
  10. 可以通过关节控制面板查看关节和连杆的关系是否生效。

从 URDF 导入后的结构

导入 URDF 后,系统会把 机器人连杆关节可视体碰撞体 等结构转换成 FlexGym 节点树。

常见映射关系:

URDF 概念 FlexGym 表达
机器人 机器人 空间
连杆 空间(空间类型="连杆")
可视体 空间(空间类型="可视体") 及其几何子节点
碰撞体 空间(空间类型="碰撞体") 及其几何子节点
关节 旋转 / 移动 / 固定 / 球形 关节 节点

关节 节点

关节 节点用于连接两个 连杆,并描述它们之间允许怎样相对运动。它是机器人和机构能够转动、滑动、固定或自由摆动的核心。FlexGym 中的 关节 节点包括 旋转关节移动关节固定关节球形关节

关节 描述的是两个 空间(空间类型="连杆") 之间的运动关系。要让 关节 生效,需要先有合法的 父连杆 和 子连杆,再设置关节类型、锚点、姿态、轴向、限制和驱动。

关节节点

关节节点总览

类型 运动方式 关键参数 常见用途
旋转关节 绕轴旋转 轴向、限位、驱动 转轴、机械臂关节、轮子铰链。
移动关节 沿轴平移 轴向、限位、驱动 滑轨、伸缩杆、升降机构。
固定关节 固定两个 连杆 的相对姿态 父连杆、子连杆、锚点 固定装配、虚拟 连杆 连接、刚性合并。
球形关节 球形转动 锚点、驱动 万向连接、肩关节等多方向转动近似。

不同 关节 的可编辑项不同。旋转 和 移动 会显示轴向;固定 不显示限制面板,也不支持 关节 驱动;球形 可支持驱动属性,但实际控制方式需要结合当前仿真能力理解。

创建 关节 之前,需要先有两个 连杆:

1机器人 (空间, 机器人)
2  base连杆 (空间, 连杆)
3  手臂连杆 (空间, 连杆)
4  肩膀关节 (旋转关节)

创建关节步骤如下:

  1. 确认场景中存在两个 连杆。
  2. 在机器人根或合适的结构节点下添加 关节。
  3. 选择 关节 类型:旋转、移动、固定 或 球形。
  4. 选中 关节 节点。
  5. 在 关节连接 中选择 父节点 和 子节点。
  6. 在 关节 属性中设置锚点位置和姿态。
  7. 对 旋转 / 移动 设置 关节 轴向。
  8. 如需限制运动范围,启用 关节限位。
  9. 打开关节控制面板,检查关节是否出现在列表中并能正常调节。

连接关系

关节连接 区域用于设置父 连杆 和子 连杆。选择方式通常有两种:

方式 操作
下拉选择 点击父节点或子节点输入框,在列表中按名称筛选并选择 连杆。
场景拾取 点击拾取按钮,然后在节点树或视图区选择目标 连杆;按 Esc 可取消。

连接规则:

  • 只能选择 空间 类型 = 连杆 的节点。
  • 父连杆 和 子连杆 不能是同一个 连杆。
  • 拾取 可视体 / 碰撞体 / 网格 时,系统会尽量按语义归一到最近 连杆。
  • 清除按钮可移除当前 父节点 或 子节点的选择。

正确连接后,关节 才能在仿真和关节控制中形成有效运动关系。

变换属性

关节的锚点位置表示关节在世界中的位置,姿态表示关节坐标系的方向。对于从 URDF 导入的关节,锚点通常来自 <origin xyz="..." rpy="..."/>

锚点位置不一定等于 父连杆 或 子连杆 的中心。它应放在真实运动副的位置,例如转轴中心、滑轨起点、铰链位置。

关节轴向

旋转 和 移动 关节会显示 关节 轴向。

类型 轴向 含义
旋转 绕该轴旋转。
移动 沿该轴平移。

UI 中显示的是世界坐标系下的轴向。默认轴向是 [0, 0, 1]

使用建议:

  • 轴向向量应尽量是清晰的单位方向,例如 [1,0,0][0,1,0][0,0,1]
  • 修改关节姿态后,轴向显示可能随世界方向变化,需要重新检查。
  • 轮子、铰链、机械臂转轴最常见问题就是轴向和模型视觉方向不一致。

关节限位

关节限位 用于限制关节运动范围。固定关节 不显示限制面板,因为它没有运动自由度。

限制面板包含:

参数 说明
启用限制 是否启用限制。
下限 旋转关节在 UI 中单位为度。
上限 旋转关节在 UI 中单位为度。
速度限制 最大速度。
力矩限制 最大力或力矩。

启用限制但没有现有限制数据时,系统会创建默认范围:下限 -180°、上限 180°,速度和力限制使用较大的默认值。

关节驱动

关节驱动 是可添加到关节上的动态属性,用于描述目标位置、刚度和阻尼。

参数 说明
目标位置 目标关节值。
刚度 朝目标位置拉回的刚度。
阻尼 用于抑制震荡。

旋转关节、移动关节、球形关节 支持 关节 驱动。固定关节 不支持 关节 驱动。

关节 驱动 不等于关节当前值。它更像一个控制目标或弹簧约束。要手动检查关节位置,可以使用关节控制面板。

关节控制面板

如果关节连接关系有效,并且属于可控制类型,它会出现在关节控制面板中。常见操作包括:

  • 搜索关节名称。
  • 使用滑块调整当前关节值。
  • 使用数值输入精确设置。
  • 重置到初始值。
  • 置顶常用关节。

关节控制面板编辑的是当前场景姿态或预览状态。运行仿真前,如果希望某个姿态成为初始状态,需要确认当前值、初始值和仿真配置之间的关系。

导出规则

URDF 导出时,关节 会转换为标准 URDF 关节:

FlexGym 类型 URDF 表达
固定关节 fixed
旋转关节 + 限位 revolute
旋转关节 无 限位 continuous
移动关节 prismatic

高度场节点

高度场是一种用二维网格描述地形表面的几何节点。你可以把它理解为一张“高度表”:网格上的每个采样点保存一个高度值,系统再根据这些高度值生成连续的起伏表面。

高度场适合表示地面、坡面、台阶、山丘、凹坑、崎岖地形和机器人测试地形。

高度场节点

高度场总览

一个 高度场 节点通常包含以下信息:

内容 说明
分辨率 高度网格在 X/Y 两个方向上的采样数量,例如 32 x 32。
下界 / 上界 高度场在局部 X/Y 平面上的覆盖范围,例如 X 从 -5 到 5,Y 从 -5 到 5。
高度数据 每个采样点对应的高度值。高度数据越复杂,地形起伏越丰富。
反转 用于处理高度方向相反的情况,例如高度图黑白含义与预期不一致。
高度场文件 记录导入文件来源,方便在属性面板中识别当前数据来自哪里。
变换 控制高度场整体位置、旋转和缩放。Z 方向缩放会影响起伏幅度。

默认添加的高度场是一个 32 x 32 的平坦地形,局部范围为 X [-5, 5]、Y [-5, 5]。创建后可以先作为普通地面使用,也可以在属性面板中导入高度图或高度数据文件来替换地形形状。

高度场可以从场景集合或节点树的添加元素入口创建:

  1. 在场景集合、节点树或视图区添加入口中选择“添加元素”。
  2. 选择“高度场”。
  3. 系统会创建一个默认 高度场 节点。
  4. 在场景集合中选中该节点,点击属性面板中的高度场文件按钮,选择图片或高度数据文件导入

高度场通常作为地形环境使用。

属性面板

选中高度场节点后,属性面板会显示高度场相关信息:

字段 说明
高度场文件 当前导入文件的名称;没有导入文件时显示为空或无文件状态。
样本数量 当前高度数据的采样点总数,通常等于分辨率 X 乘以分辨率 Y。
分辨率 当前高度场的采样数量,例如 32 x 32、128 x 128。
X 范围 高度场在局部 X 方向上的下界和上界。
Y 范围 高度场在局部 Y 方向上的下界和上界。
变换 高度场整体的位置、旋转和缩放。

其中,下界 / 上界决定地形在局部坐标中铺多大,变换 决定整个节点在场景中的位置、朝向和缩放。排查尺寸问题时,两者都要看:一个高度场可能本身范围正确,但被 变换 缩放得过大或移动到了远处。

导入高度场

高度场可以从图片高度图或文本类高度数据导入。导入时会先打开“导入高度场”弹窗,让你检查文件、源分辨率和导入选项,再真正更新节点。

当前常见支持格式包括:

类型 格式 适合用途
图片高度图 PNG、JPG、JPEG、WebP、BMP 用灰度亮度生成地形起伏,适合快速从图片制作地形。
表格数据 CSV、TXT 用二维数字表直接描述高度值,适合从工具或脚本导出的规则数据。
结构化高度场 JSON、高度场、hf 保存分辨率、范围、高度数组和反转设置等结构化信息。

图片高度图会根据像素亮度生成高度值。通常亮处更高、暗处更低;如果导入后发现山丘和凹坑方向不符合预期,可以在导入弹窗中使用“反转”选项。

分辨率和性能

分辨率决定高度场有多少采样点。分辨率越高,地形细节越多,但显示和仿真成本也越高。

分辨率 说明
32 x 32 轻量,适合快速预览或简单地形。
64 x 64 常用的中等规模,适合普通起伏地形。
128 x 128 细节更多,适合较复杂地形。
256 x 256 精度较高,需要注意性能和交互流畅度。

导入图片时,系统会根据图片尺寸给出更适合交互的建议分辨率,而不是一定按原始图片像素全部生成高度场。导入弹窗中的分辨率可以继续手动调整,当前输入范围至少为 2,最高可到 1024。

尺寸、高度和 变换

高度场的最终大小由两部分共同决定:

配置 影响
下界 / 上界 决定地形自身在局部 X/Y 平面上覆盖多大。
变换 位置 决定高度场整体放在场景中的哪里。
变换 旋转 决定地形方向。
变换 缩放 缩放整个地形;Z 缩放会放大或压低地形起伏。

如果从图片导入,高度值通常来自灰度亮度。导入后觉得地形太平,可以检查原图灰度对比,也可以适当调整高度场的 Z 向缩放;如果地形太陡,则降低 Z 向缩放或降低高度数据本身的起伏幅度。

需要注意,尺寸范围和 变换 会一起影响接触结果。例如把局部范围设为 10 x 10,又把缩放设为 2,最终地形会比属性面板中看到的局部范围更大。

高度场本质上是“每个 X/Y 位置对应一个高度”。如果需要表达桥梁、墙体、洞穴、悬空平台等复杂结构,网格 通常更合适;如果只是平地,平面 更轻量、更稳定。

材质与纹理节点

材质和纹理主要用于控制对象的显示效果。它们决定几何体看起来是什么颜色、是否透明、是否有金属感、表面是否粗糙、是否使用图片贴图等。

需要先区分两个概念:

  • 视觉材质:影响对象在视图区中的外观,例如颜色、贴图、透明度、金属度、粗糙度和自发光。
  • 物理材质:影响仿真中的接触行为,例如摩擦、弹性、接触参数等。

本节讲的是视觉层面的 材质、纹理 和 材质绑定。它们不等同于物理材质,也不会直接决定物体的质量、摩擦或碰撞行为。

材质节点 纹理节点

三个核心概念

FlexGym 中的视觉材质可以理解为三层关系:

概念 作用 常见位置
材质 节点 定义一套可复用的表面材质参数。 场景集合中的材质节点。
纹理 节点 保存一张贴图资源及其用途、UV 和环绕方式。 场景集合中的纹理节点。
材质绑定 属性 把某个几何体绑定到某个 材质 节点。 几何体、可视体、网格、平面 等节点的属性面板中。

纹理保存图片;材质引用 纹理,并定义颜色、金属度、粗糙度等参数;几何体通过 材质绑定 使用某个 材质

材质 节点

材质节点定义对象表面的显示材质。一个材质节点可以被多个几何体共享,因此适合管理重复使用的外观。

例如,机器人多个外壳部件都使用同一种白色塑料材质时,可以创建一个材质节点,再把这些可视体或网格节点都绑定到它。之后只要修改这个材质,所有引用它的对象都会一起更新显示效果。

材质 常见参数包括:

参数 说明
漫反射贴图 绑定一个 纹理 节点作为基础颜色贴图。
漫反射颜色 没有贴图时的基础颜色,或和贴图共同影响外观。
金属度 控制表面是否更像金属,数值越高金属感越强。
粗糙度 控制反光是否模糊。低粗糙度更光滑,高粗糙度更哑光。
透明度 控制材质不透明程度。接近 1 更不透明,接近 0 更透明。
自发光颜色 让材质看起来像自己发光。
自发光强度 控制自发光效果强弱。

创建并编辑材质的一般步骤:

  1. 在场景集合中右键,选择添加元素。
  2. 添加材质节点。
  3. 选中材质节点,在属性面板中编辑漫反射颜色、金属度、粗糙度、透明度等参数。
  4. 如需贴图,先创建或导入 纹理 节点,再在 材质 的“漫反射贴图”中选择该纹理。
  5. 选中需要使用材质的几何体,给几何体添加或展开 材质绑定 属性。
  6. 将该几何体绑定到刚才创建的材质节点。

纹理 节点

纹理节点用于保存贴图资源。它可以表示漫反射贴图、法线贴图、粗糙度贴图、金属度贴图、遮蔽贴图或自发光贴图等。

当前用户最常接触的是漫反射贴图,也就是控制表面颜色的图片。纹理 节点在属性面板中可以预览图片、替换图片,并调整用途、环绕模式、UV 缩放和 UV 偏移。

纹理 常见参数包括:

参数 说明
图片预览 显示当前纹理图片的缩略图;部分路径可能只显示占位图标。
更换图片 从本地选择新图片替换当前纹理资源。
用途 标记纹理用于漫反射、法线、粗糙度、金属度、遮蔽、自发光或不透明度等通道。
环绕模式 控制 UV 超出 0-1 范围时如何显示。
UV 缩放 控制贴图在表面重复或缩放的比例。
UV 偏移 控制贴图在表面上的平移位置。
图片尺寸 显示图片宽高信息。

环绕模式常见有三种:

模式 效果 适合场景
重复 超出范围后重复贴图。 地面、墙面、网格纹理。
钳制 超出范围后钳制到边缘。 不希望贴图重复的物体。
镜像 超出范围后镜像重复。 需要减少重复接缝的纹理。

UV 是贴图映射到模型表面的坐标。用户不一定需要理解底层数学,只需要知道:UV 缩放越大,贴图通常重复得越密;UV 缩放越小,贴图会被拉得更大;UV 偏移可以让贴图在表面上平移。如果模型没有合理 UV,贴图可能拉伸、错位或看起来无效。

材质绑定 属性

材质绑定 是把几何体和 材质 节点连接起来的属性。

没有材质绑定时,几何体通常会使用默认颜色、节点自身颜色或导入时携带的显示颜色。添加材质绑定后,几何体会尝试使用绑定的材质节点进行渲染。

绑定材质的方式通常有两种:

  1. 在属性面板的材质节点输入框中打开下拉列表,搜索并选择 材质 节点。
  2. 点击拾取按钮,然后在场景集合中点击目标 材质 节点。

如果进入拾取状态后想取消,可以按 Esc,或使用界面中的取消按钮。如果不想继续使用某个 材质 节点,可以点击清除按钮。清除后,对象会回到默认显示逻辑,例如使用节点颜色、导入颜色或默认材质。

顶点颜色与材质颜色

对于 网格 节点,材质绑定 可能提供“顶点颜色”和“材质颜色 / 贴图”的切换。

模式 说明
顶点颜色 使用 网格 自身携带的逐顶点颜色。
材质颜色 / 贴图 使用绑定 材质 节点中的颜色和贴图。

导入外部网格时,模型可能已经带有顶点颜色。如果用户绑定了材质但看不到预期颜色,需要检查当前是否仍在使用顶点颜色模式。

材质和导入模型

导入 URDF、OBJ 或其他网格时,外部文件中的材质信息可能会被转换为 FlexGym 的 材质 或 纹理 节点。但不同格式支持能力不一样:

  • URDF 通常能提供基础颜色和部分 网格 引用。
  • OBJ 可能依赖额外的 MTL 和贴图文件。
  • STL 通常不包含复杂材质和贴图。
  • 外部贴图路径如果失效,模型可能只显示默认颜色。
  • 导入后材质层级、命名和绑定关系需要检查。

导入模型后,建议打开场景集合,检查是否存在 材质、纹理、可视体、碰撞体 等节点,并确认目标 可视体 或 网格 是否绑定了正确材质。

材质与物理仿真的关系

视觉材质主要影响显示,不直接决定物理行为。

例如,一个对象看起来像橡胶,不代表它在仿真中一定有高摩擦或高弹性;一个对象看起来像金属,也不代表它质量更大、摩擦更小或碰撞更硬。

如果要调整物理行为,应检查 刚体、碰撞体、Physics 材质、质量、惯性、阻尼、重力等物理参数,以及物理场景面板中的碰撞和求解设置。