合成数据与高级模拟环境搭建指南
立即解锁
发布时间: 2025-09-05 02:06:10 阅读量: 23 订阅数: 58 AIGC 


Unity与AI:模拟与合成
# 合成数据与高级模拟环境搭建指南
## 1. 场景测试
在不应用任何随机元素的情况下,现在是测试场景的好时机。按照以下步骤测试场景,确保到目前为止所做的一切都能正常工作:
1. 使用 Unity 的播放按钮运行场景,这可能需要一些时间。
2. 场景应生成与添加到场景游戏对象的固定长度场景组件的“总迭代次数”参数中指定数量相同的图片,然后自动退出播放模式。同样,这可能需要一些时间,并且 Unity 编辑器可能看起来像是挂起了。
3. 为了验证一切是否正常,当 Unity 再次响应(且播放模式结束)时,在层次结构中选择主摄像机,并找到感知摄像机组件。它将有一个新的“显示文件夹”按钮。
4. 点击“显示文件夹”按钮,这将打开图像在本地机器上的存储位置。
此时,你应该会找到一个包含从场景摄像机生成的 100 张图片的文件夹,这些图片都是相同的。如果一切正常,就可以继续进行下一步了。
### 流程说明
```mermaid
graph LR
A[点击播放按钮运行场景] --> B[生成指定数量图片]
B --> C[自动退出播放模式]
C --> D[选择主摄像机找感知摄像机组件]
D --> E[点击显示文件夹按钮]
E --> F[打开图片存储位置]
```
## 2. 设置标签
我们创建的标签代表骰子哪一面朝上。为了使该信息以与输出图像相匹配的格式可用,需要将其附加到预制体上:
1. 在项目面板中双击“Dice - Black - Side1”(黑色骰子,一面显示一个点朝上)的预制体将其打开。
2. 当预制体打开时,在其层次结构中选择根对象(在这种情况下是“Dice - Black - Side1”),并使用其检查器中的“添加组件”按钮添加一个标签组件。
3. 展开新组件检查器中找到的“DiceLabels”部分,并点击代表朝上一面的标签旁边的“添加到标签”按钮(这里应该是“one”)。
4. 退出骰子预制体,并对所有骰子预制体重复此过程(总共应该有 30 个,由 5 种不同颜色组成,每种颜色的骰子有 6 个面朝上)。应为每个骰子应用与朝上一面相对应的标签编号。
### 表格展示
| 步骤 | 操作 |
| ---- | ---- |
| 1 | 双击打开预制体 |
| 2 | 选择根对象添加标签组件 |
| 3 | 展开部分添加对应标签 |
| 4 | 重复操作应用标签 |
## 3. 检查标签
可以通过以下操作快速检查标签是否有效:
1. 在层次结构中选择主摄像机,添加一个新的 2D 边界框标签器,并将其连接到我们之前创建的标签集。
2. 运行项目并查看游戏视图。除了像往常一样保存图像文件外,你还会看到它在每个标记对象周围绘制框。
### 代码示例
```csharp
// 以下为伪代码,展示标签器连接逻辑
// 假设存在获取主摄像机、标签集的方法
var mainCamera = GetMainCamera();
var labelSet = GetLabelSet();
var boundingBoxLabeler = mainCamera.AddComponent<BoundingBox2DLabeler>();
boundingBoxLabeler.ConnectToLabelSet(labelSet);
```
## 4. 创建高级模拟环境
### 4.1 搭建方块推动模拟环境准备
要创建一个更高级的模拟环境,需要完成以下几个主要步骤:
1. 创建一个新的 Unity 项目并为其配置 ML - Agents 工具包。
2. 在该 Unity 项目的场景中创建方块推动器的环境。
3. 实现必要的代码,使方块推动代理在环境中发挥作用,并可以使用强化学习进行训练。
4. 最后,在环境中训练代理并观察其运行情况。
### 4.2 创建 Unity 项目
1. 打开 Unity Hub 并创建一个新的 3D 项目,将其命名为“Block - Pusher”。
2. 安装 ML - Agents 工具包,具体安装说明可参考之前的相关内容。
### 4.3 构建环境
#### 4.3.1 地板创建
1. 打开“GameObject”菜单 -> “3D 对象” -> “立方体”,在层次结构视图中点击创建的立方体,并将其名称设置为“Floor”或类似名称。
2. 选择新的地板,将其位置设置为合适的值,比例设置为 (20, 0.35, 20) 或类似值,使其成为一个有一定厚度的大平面地板。
3. 为地板添加一些特色,打开“Assets”菜单 -> “创建” -> “材质”,创建一个新的材质资产,将其重命名为“Material_Floor”或类似名称。
4. 确保在项目视图中选择了新材质,并使用检查器将反照率颜色设置为喜欢的颜色,推荐橙色。
5. 在层次结构视图中选择地板,将新材质从项目视图直接拖到地板在项目视图中的条目或地板检查器底部的空白处,地板应在场景视图中改变颜色,并且地板的检查器中应有一个新组件。
#### 4.3.2 墙壁创建
1. 在场景中创建一个新的立方体,使其在 x 轴上的比例与地板相同(可能约为 20),y 轴上为 1 个单位高,z 轴上约为 0.25。
2. 为墙壁创建一个新材质,给它一个好看的颜色,并将其应用到创建的墙壁上。
3. 将立方体重命名为“Wall”或类似名称,并复制一次,这将是一个轴上的墙壁,暂时不用担心将它们移动到正确的位置。
4. 再次复制其中一面墙,并使用检查器将其绕 y 轴旋转 90 度,然后再复制一次。
5. 使用移动工具(按键盘上的 W 键)选择每面墙,并按住 V 键进入顶点捕捉模式。当按住 V 键时,将鼠标悬停在墙网格的不同顶点上,将鼠标悬停在墙的一个外底角顶点上,然后点击并拖动移动手柄,将其捕捉到地板上相应的上角顶点。
6. 对每个墙段重复此操作,一些墙段可能会重叠和相交,这是正常的。
#### 4.3.3 方块创建
1. 在场景中添加一个新的立方体,并将其重命名为“Block”。
2. 使用检查器为方块添加一个刚体组件,将其质量设置为 10,阻力设置为 4,并冻结其在所有三个轴上的旋转。
3. 将方块放置在地板上的某个位置,任何位置都可以。如果在精确放置方块到地板上有困难,可以使用顶点捕捉模式的移动工具,将方块捕捉到地板的一个角落(它将与墙壁相交),然后使用方向移动工
0
0
复制全文
相关推荐









