FlexGym 的场景由不同类型的节点共同组成。几何节点负责显示和参与编辑,机器人结构节点描述 连杆、关节等层级关系,资源节点则保存材质、纹理等可显示数据。
常见节点可以按用途分成几类:
| 类型 | 典型节点 | 主要作用 |
|---|---|---|
| 基础几何节点 | 立方体、球体、圆柱体、胶囊体 | 快速创建规则刚体、碰撞体、平台、连杆和占位几何。 |
| 网格与地形节点 | 网格、平面、高度场 | 表达外部网格、解析平面、起伏地形和环境边界。 |
| 结构节点 | 组、空间、机器人、连杆 | 组织父子层级、机器人结构、可视体 / 碰撞体 容器和 机器人。 |
| 关节节点 | 关节 | 连接两个 连杆,并描述旋转、平移、固定或球形运动关系。 |
| 资源节点 | 材质、纹理 | 保存可复用的显示资源,供几何体引用。 |
基础几何节点是 FlexGym 中最基本的对象,包括 立方体、球体、圆柱体 和 胶囊体。它们不依赖外部模型文件,创建后立即可以显示,也可以通过添加刚体、固定支座和材质绑定等属性参与场景搭建与仿真。
和 网格 相比,基础几何节点的数据更简单,碰撞形状更稳定。
| 节点 | 核心几何参数 | 常见用途 |
|---|---|---|
| 立方体 | 尺寸,内部为半尺寸 |
箱体、墙块、底座、简单 连杆、规则障碍物。 |
| 球体 | 半径 |
球形刚体、滚动物体、简化碰撞体、关节或传感器占位。 |
| 圆柱体 | 半径、高度 |
轮子、杆件、轴、圆柱障碍物、旋转体。 |
| 胶囊体 | 半径、高度,其中 高度 不含两端半球 |
连杆、角色碰撞体、机器人肢体近似、需要平滑端部的碰撞体。 |
这四类节点本身是叶子节点,不能作为父容器;如果需要组织多个几何体,应把它们放到 组 或 空间节点下。
常用创建步骤如下:
添加元素。立方体、球体、圆柱体 或 胶囊体。几何 和 变换。刚体、固定支座 等物理属性。如果正在构建机器人结构,通常不建议把几何体直接放在根节点下,而是放在对应 连杆 的 可视体 或 碰撞体 容器下。这样在导入、导出和仿真时,系统可以更清楚地知道这个几何体是用于显示,还是用于碰撞。
基础几何节点通常会在属性面板中看到这些内容:
| 区域 | 作用 |
|---|---|
| 基础信息 | 查看和编辑节点名称、类型、可见性、启用状态等。 |
| 变换 | 编辑位置、旋转和缩放。位置和旋转决定节点在场景中的姿态。 |
| 几何 | 编辑节点自身的几何尺寸,例如半尺寸、半径、高度。 |
| 材质绑定 | 将几何体绑定到 材质 节点,改变显示颜色、贴图、透明度等视觉效果。 |
| 刚体 | 让几何体作为刚体参与仿真,并设置质量、阻尼、重力等物理参数。 |
| 固定支座 | 将节点固定在世界中,或锁定部分自由度。 |
几何 参数描述对象自己的几何尺寸,变换 描述对象如何放到场景里。
立方体 表示轴对齐的长方体。它适合构建最常见的规则物体,例如平台、方块、墙体、桌面、地面边界、机器人底座或简单连杆。
| 参数 | 默认值 | 说明 |
|---|---|---|
尺寸 |
[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.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 时,系统会根据 连杆、可视体、碰撞体、关节 的层级关系来判断几何体归属。
网格 节点用于表示外部网格模型或内联网格数据。它适合承载复杂外形,例如机器人外壳、机械零件、环境障碍物、从建模软件导出的模型,以及无法用 立方体、球体、圆柱体、胶囊体 描述的几何结构。
和基础几何体不同,网格的形状来自顶点、面、法线、UV、顶点颜色等网格数据。它的表现质量取决于源文件质量,也更容易受到文件格式、单位、坐标轴、面片拓扑、顶点数量和材质资源的影响。
网格 节点通常包含以下信息:
| 内容 | 说明 |
|---|---|
| 网格路径 | 网格文件名或路径,用于识别来源。 |
| 网格文件格式 | 文件格式,例如 stl、obj、dae、msh、vtu 等。 |
| 网格数据 | 实际用于显示或仿真的顶点、面、法线、UV、边和顶点颜色数据。 |
| 网格缩放 | 网格数据在 变换 之前应用的缩放,默认 [1, 1, 1]。 |
| 变换 | 网格 节点整体在场景中的位置和朝向。 |
| 材质绑定 | 网格 外观材质绑定,支持材质颜色、贴图和顶点颜色逻辑。 |
常用流程如下:
当前属性面板中的 网格 文件替换入口支持常见格式:.stl、.obj、.dae。
| 格式 | 常见特点 | 适合用途 |
|---|---|---|
| STL | 只描述三角面几何,通常没有材质、贴图和层级。 | 碰撞体、机械零件、简单外形。 |
| OBJ | 支持顶点、面、UV,可配合 MTL 和贴图。 | 视觉模型、带 UV 的静态模型。 |
| DAE | 可包含场景层级、材质、UV、顶点色等信息。 | 从建模软件或机器人资源导出的视觉模型。 |
网格的形状由顶点和面组成。属性面板会显示顶点数量,顶点数量越多,模型越精细,但渲染和仿真成本也越高。
| 数据 | 作用 |
|---|---|
| 顶点 | 模型表面的空间点。 |
| 面索引 | 指定哪些顶点组成三角面。 |
| 法线 | 控制光照和表面方向;缺失或错误会导致明暗异常。 |
| UV | 控制贴图如何贴到模型上。 |
| 顶点颜色 | 每个顶点自带颜色,可覆盖或影响材质显示。 |
| 网格边 | 用于线框显示、选择辅助或体网格边界可视化。 |
如果网格看起来发黑、反光异常或某些面不可见,可能是法线方向、材质、透明度或双面显示设置问题。如果贴图错位,通常需要检查 UV。
网格支持 材质绑定。绑定后,网格可以使用 材质 节点中的颜色、金属度、粗糙度、透明度和贴图。
但网格还有一个特殊点:它可能自带顶点颜色。材质绑定 中的顶点颜色模式会影响最终外观:
| 模式 | 效果 |
|---|---|
| 使用顶点颜色 | 优先使用网格数据中的顶点颜色。 |
| 使用材质颜色 / 贴图 | 使用绑定 材质 节点的 漫反射颜色、纹理 等视觉参数。 |
如果绑定材质后外观没有明显变化,首先检查是否仍在使用顶点颜色模式。外部 DAE 或部分 OBJ 资源可能带有顶点颜色,导致普通材质颜色不明显。
网格 可以用于显示,也可以用于碰撞。实际项目中经常把高精度视觉模型和简化碰撞模型分开:
这样做的好处是:用户看到的模型足够精细,并且仿真使用的碰撞体更简单、更稳定、更快。
在机器人结构中,网格 通常放在 可视体 或 碰撞体 空间 下。物理场景面板中的几何来源选项会影响仿真使用 可视体 还是 碰撞体。当选择 碰撞体 而某个 连杆 没有 碰撞体 几何时,系统可能回退使用 可视体,以保持运动学链完整。
在 URDF 导出中,网格 节点如果有有效网格数据,会被导出为 STL 文件,并在 URDF 中以 <网格 filename="..."/> 引用。导出过程会根据网格数据生成 meshes/xxx.stl 形式的资源。
需要注意:
导入后什么都看不见。
检查文件是否解析成功、顶点数量是否为 0、网格缩放 是否过小、变换 是否把模型移动到远处、可见性是否关闭。
绑定材质后颜色没有变化。
检查是否启用了顶点颜色模式。
贴图显示错位。
通常与 UV 有关。确认源模型有有效 UV,并检查 纹理 的 UV 缩放和偏移。
网格 能显示但不能仿真。
检查是否有有效 网格Data,是否添加并启用 刚体,是否位于正确 连杆 下,以及物理场景的几何来源是否使用该 网格。
仿真很慢或接触不稳定。
降低 网格 面数,改用简化碰撞体,或使用基础几何体近似复杂外形。
平面 节点表示一个解析平面,常用于地面、墙面、边界面、接触测试面和无限参考平面。它和 立方体、网格 这类有限体积对象不同:平面的物理语义通常是一个无限平面。
在视图区里,平面 会以可读的网格和表面效果显示;在仿真里,它可以作为解析接触平面参与碰撞。显示尺寸、无限淡出、背面效果和材质绑定主要影响视觉体验。
| 概念 | 说明 |
|---|---|
| 显示模式 | 控制视图区以无限淡出还是有限矩形方式显示。 |
| 显示尺寸 | 有限显示模式下的视觉宽高;不改变解析平面的物理无限语义。 |
| 背面可视 | 从平面背面观察时,是否仍能看到平面上方对象。 |
| 材质绑定 | 可绑定 材质 / 纹理 改变平面表面外观。 |
创建平面步骤如下:
平面。变换 中设置平面所在位置、调整旋转。平面 有两种主要显示模式:
| 模式 | 说明 | 适合场景 |
|---|---|---|
| 无限 | 以无限平面的方式显示,并在远处淡出。 | 地面、世界边界、仿真基准面。 |
| 有限 | 以有限矩形范围显示。 | 需要强调局部范围、做视觉辅助或避免大面积遮挡。 |
无限 显示模式更适合物理地面。它让用户一眼知道这是场景中的基础面,同时远处淡出可以减少画面压迫感。
显示尺寸 使用 W / H 两个数值表示有限显示尺寸。它只在 有限 显示模式下直接控制可见矩形大小。
背面效果
平面 的背面设置用于改善视图区观察体验:
| 设置 | 说明 |
|---|---|
| 反面透视 | 是否允许从背面看到透明或半透明的平面效果,并保持平面另一侧对象可见。 |
| 反面效果:透明 | 背面更透明、更干净。 |
| 反面效果:磨砂 | 默认背面效果,半透明,适合“从背面看地面”的感觉。 |
平面 可以作为接触平面参与仿真。使用时需要明确:
在物理场景中,平面 很适合作为地面。但如果你需要有限尺寸的地面、可移动板件、带厚度的平台或可以被碰撞推开的平板,应使用 立方体 或 网格,而不是 平面。
| 类型 | 适合用途 | 主要限制 |
|---|---|---|
| 平面 | 无限解析地面、墙面、参考面。 | 没有厚度,显示尺寸不代表物理边界。 |
| 立方体 | 有厚度、有有限尺寸的平台、墙体、障碍物。 | 只能表示规则长方体。 |
| 高度场 | 起伏地形、坡面、崎岖地面。 | 只能表示单值高度表面。 |
| 网格 | 任意复杂三维结构。 | 依赖模型质量,碰撞更复杂。 |
一个简单判断方式:无限平地用 平面;有限平台用 立方体;起伏地形用 高度场;复杂拓扑用 网格。
平面 在 URDF 导出中没有直接对应的标准几何标签。URDF 更关注机器人自身结构,平面 通常属于场景环境而不是机器人 连杆 几何。因此导出 URDF 时,平面 可能会被跳过。
如果外部工具链需要保留地面,可以采用这些方式:
结构节点负责组织场景层级和机器人结构。它们决定子节点如何被归类、如何继承变换、如何被导出、以及仿真时如何识别 连杆、可视体、碰撞体 和 机器人。
FlexGym 中最常见的结构节点包括 组、空间、机器人 和 连杆。其中 机器人 和 连杆 本质上是带语义的 空间:机器人 通常是 空间 上标记 机器人,连杆 通常是 空间(空间类型="连杆")。
| 节点 | 本质 | 是否带 变换 | 主要作用 |
|---|---|---|---|
| 组 | 纯组织容器 | 不用于影响子节点变换 | 逻辑分组、分类、整理节点树。 |
| 空间 | 变换容器 | 是 | 组织场景层级,并对子节点应用位置和旋转。 |
| 机器人 | 空间(机器人) |
是 | 表示一个机器人或关节系统的根。 |
| 连杆 | 空间(空间类型="连杆") |
是 | 表示机器人或机构中的刚体链节。 |
结构节点解决的是“东西应该放在哪里”和“系统如何理解这棵树”的问题。一个几何体能否被识别为某个 连杆 的 可视体 / 碰撞体,往往取决于它所在的结构节点。
组 是纯组织容器。它相当于一个文件夹,用于把节点按用途或项目结构归类。
组 的特点:
常见用法:
如果你只是想让节点树结构更清晰,使用 组。
空间 是带 变换 的容器。它类似一个坐标空间,可以包含子节点,并对它们应用变换。
空间 的核心字段:
| 字段 | 说明 |
|---|---|
| 变换 | 空间 自己的位置和旋转,会影响子节点。 |
| 空间类型 | 语义类型,可为 坐标系、连杆、可视体、碰撞体。 |
| 机器人 | 标记该 空间 是否是机器人或关节系统根节点。 |
空间 的语义类型非常重要。它不只是图标或标签,而会影响导出和仿真时的识别。
| 空间 类型 | 含义 | 常见位置 |
|---|---|---|
| 坐标系 | 普通坐标参考系或变换容器。 | 场景组织、辅助坐标。 |
| 连杆 | 机器人或机构中的刚体链节。 | 机器人节点下的 base连杆、手臂连杆 等。 |
| 可视体 | 视觉几何容器。 | 连杆 下,用于放置可见 网格 / 立方体 等。 |
| 碰撞体 | 碰撞几何容器。 | 连杆 下,用于放置碰撞体。 |
坐标系 是最基本的空间节点类型,拥有最基本的空间节点语义,通常组织一块场景,比起 组 节点,多了一个空间位置的属性。
在 FlexGym 中,机器人 通常不是一个单独的独立节点类型,而是一个 空间,并开启 机器人。它表示一棵机器人或机构结构的根节点。
一个常见 机器人 结构如下:
机器人 的作用:
一个场景可以有多个 机器人 Root,例如多个机器人、一个机器人和一个夹具机构,或者多个可动机构。每个 机器人 根节点下应尽量保持自己的 连杆 和 关节 结构完整。
连杆 是机器人或机构的刚体链节,通常是 空间(空间类型="连杆")。它本身负责表示一个刚体坐标系,下面可以包含 可视体 和 碰撞体。
连杆 的典型结构:
连杆 的关键职责:
当一个 关节 连接两个对象时,连接目标必须是具有 连杆 语义的 空间,不能直接连接几何节点本身。
可视体 和 碰撞体 都是 空间节点,只是 空间类型 不同。
| 容器 | 用途 | 常见子节点 |
|---|---|---|
| 可视体 | 控制显示外观。 | 网格、立方体、球体、圆柱体、胶囊体。 |
| 碰撞体 | 控制碰撞几何。 | 简化 网格、立方体、球体、圆柱体、胶囊体。 |
建议把 可视体 和 碰撞体 分开。这样可以使用高精度 网格 做显示,同时使用简化几何做碰撞,避免把复杂视觉模型直接送入碰撞计算。
节点移动、复制和换父节点时,需要遵守结构规则:
这些规则可以防止节点树出现难以解释的结构。例如,把一个 连杆 放到它自己的子节点下会造成循环;把一个 网格 当成父容器会让层级语义变得混乱。
如果不通过导入,而是手工搭建一个简单机器人或机构,可以按这个顺序:
机器人 选项。导入 URDF 后,系统会把 机器人、连杆、关节、可视体、碰撞体 等结构转换成 FlexGym 节点树。
常见映射关系:
| URDF 概念 | FlexGym 表达 |
|---|---|
| 机器人 | 机器人 空间 |
| 连杆 | 空间(空间类型="连杆") |
| 可视体 | 空间(空间类型="可视体") 及其几何子节点 |
| 碰撞体 | 空间(空间类型="碰撞体") 及其几何子节点 |
| 关节 | 旋转 / 移动 / 固定 / 球形 关节 节点 |
关节 节点用于连接两个 连杆,并描述它们之间允许怎样相对运动。它是机器人和机构能够转动、滑动、固定或自由摆动的核心。FlexGym 中的 关节 节点包括 旋转关节、移动关节、固定关节 和 球形关节。
关节 描述的是两个 空间(空间类型="连杆") 之间的运动关系。要让 关节 生效,需要先有合法的 父连杆 和 子连杆,再设置关节类型、锚点、姿态、轴向、限制和驱动。
| 类型 | 运动方式 | 关键参数 | 常见用途 |
|---|---|---|---|
| 旋转关节 | 绕轴旋转 | 轴向、限位、驱动 | 转轴、机械臂关节、轮子铰链。 |
| 移动关节 | 沿轴平移 | 轴向、限位、驱动 | 滑轨、伸缩杆、升降机构。 |
| 固定关节 | 固定两个 连杆 的相对姿态 | 父连杆、子连杆、锚点 | 固定装配、虚拟 连杆 连接、刚性合并。 |
| 球形关节 | 球形转动 | 锚点、驱动 | 万向连接、肩关节等多方向转动近似。 |
不同 关节 的可编辑项不同。旋转 和 移动 会显示轴向;固定 不显示限制面板,也不支持 关节 驱动;球形 可支持驱动属性,但实际控制方式需要结合当前仿真能力理解。
创建 关节 之前,需要先有两个 连杆:
创建关节步骤如下:
关节连接 区域用于设置父 连杆 和子 连杆。选择方式通常有两种:
| 方式 | 操作 |
|---|---|
| 下拉选择 | 点击父节点或子节点输入框,在列表中按名称筛选并选择 连杆。 |
| 场景拾取 | 点击拾取按钮,然后在节点树或视图区选择目标 连杆;按 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]。创建后可以先作为普通地面使用,也可以在属性面板中导入高度图或高度数据文件来替换地形形状。
高度场可以从场景集合或节点树的添加元素入口创建:
高度场通常作为地形环境使用。
选中高度场节点后,属性面板会显示高度场相关信息:
| 字段 | 说明 |
|---|---|
| 高度场文件 | 当前导入文件的名称;没有导入文件时显示为空或无文件状态。 |
| 样本数量 | 当前高度数据的采样点总数,通常等于分辨率 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 更透明。 |
| 自发光颜色 | 让材质看起来像自己发光。 |
| 自发光强度 | 控制自发光效果强弱。 |
创建并编辑材质的一般步骤:
纹理节点用于保存贴图资源。它可以表示漫反射贴图、法线贴图、粗糙度贴图、金属度贴图、遮蔽贴图或自发光贴图等。
当前用户最常接触的是漫反射贴图,也就是控制表面颜色的图片。纹理 节点在属性面板中可以预览图片、替换图片,并调整用途、环绕模式、UV 缩放和 UV 偏移。
纹理 常见参数包括:
| 参数 | 说明 |
|---|---|
| 图片预览 | 显示当前纹理图片的缩略图;部分路径可能只显示占位图标。 |
| 更换图片 | 从本地选择新图片替换当前纹理资源。 |
| 用途 | 标记纹理用于漫反射、法线、粗糙度、金属度、遮蔽、自发光或不透明度等通道。 |
| 环绕模式 | 控制 UV 超出 0-1 范围时如何显示。 |
| UV 缩放 | 控制贴图在表面重复或缩放的比例。 |
| UV 偏移 | 控制贴图在表面上的平移位置。 |
| 图片尺寸 | 显示图片宽高信息。 |
环绕模式常见有三种:
| 模式 | 效果 | 适合场景 |
|---|---|---|
| 重复 | 超出范围后重复贴图。 | 地面、墙面、网格纹理。 |
| 钳制 | 超出范围后钳制到边缘。 | 不希望贴图重复的物体。 |
| 镜像 | 超出范围后镜像重复。 | 需要减少重复接缝的纹理。 |
UV 是贴图映射到模型表面的坐标。用户不一定需要理解底层数学,只需要知道:UV 缩放越大,贴图通常重复得越密;UV 缩放越小,贴图会被拉得更大;UV 偏移可以让贴图在表面上平移。如果模型没有合理 UV,贴图可能拉伸、错位或看起来无效。
材质绑定 是把几何体和 材质 节点连接起来的属性。
没有材质绑定时,几何体通常会使用默认颜色、节点自身颜色或导入时携带的显示颜色。添加材质绑定后,几何体会尝试使用绑定的材质节点进行渲染。
绑定材质的方式通常有两种:
如果进入拾取状态后想取消,可以按 Esc,或使用界面中的取消按钮。如果不想继续使用某个 材质 节点,可以点击清除按钮。清除后,对象会回到默认显示逻辑,例如使用节点颜色、导入颜色或默认材质。
对于 网格 节点,材质绑定 可能提供“顶点颜色”和“材质颜色 / 贴图”的切换。
| 模式 | 说明 |
|---|---|
| 顶点颜色 | 使用 网格 自身携带的逐顶点颜色。 |
| 材质颜色 / 贴图 | 使用绑定 材质 节点中的颜色和贴图。 |
导入外部网格时,模型可能已经带有顶点颜色。如果用户绑定了材质但看不到预期颜色,需要检查当前是否仍在使用顶点颜色模式。
导入 URDF、OBJ 或其他网格时,外部文件中的材质信息可能会被转换为 FlexGym 的 材质 或 纹理 节点。但不同格式支持能力不一样:
导入模型后,建议打开场景集合,检查是否存在 材质、纹理、可视体、碰撞体 等节点,并确认目标 可视体 或 网格 是否绑定了正确材质。
视觉材质主要影响显示,不直接决定物理行为。
例如,一个对象看起来像橡胶,不代表它在仿真中一定有高摩擦或高弹性;一个对象看起来像金属,也不代表它质量更大、摩擦更小或碰撞更硬。
如果要调整物理行为,应检查 刚体、碰撞体、Physics 材质、质量、惯性、阻尼、重力等物理参数,以及物理场景面板中的碰撞和求解设置。