# 外部资源导入
```{admonition} 注意
:class: tip
本教程目前仅适用于【SimOne -企业版】
```
## 1. 主车道具外挂模型导入流程
### 1.1 高精度主车模型制作及打包
高精度主车模型主要用于 UE Observer 测试可视化渲染。
#### 1.1.1 主车模型制作规范
1. **组件拆分**:需要将车辆拆成车身,车轮,方向盘(根据项目需求非必须)三个组件。

2. **大小**:车辆模型在 DCC 软件中的尺寸应当是现实世界的真实大小。
3. **模型原点**:车辆车身模型在 DCC 软件中应当是 X 轴朝前,Z 轴朝上,车身模型原点位置在后轴中心。车轮,方向盘原点位置放置在模型旋转中心。



4. **面数**:整车(含内饰)控制不要超过 50 万三角面。
5. **UV**: 模型的 UV 目前仅需制作一套即可,UV 需充分展开且合理排布。
6. **材质 ID**:在 DCC 软件中需对车辆的不同组件赋予不同命名的材质球,包括所有车的车灯都需要独立有自己的材质,车灯材质球命名参照下表

7. 车辆模型处理好后,冻结 **车辆位置**,**缩放** 等基础属性。XForm 模型位置参数

#### 1.1.2 导入引擎,配置模型材质,制作外挂主车蓝图物件
1. content 目录下右键 content 目录,创建一个自定义的文件夹目录用来存放外挂主车模型资产,然后将 FBX 文件导入 SimoneEditor 中。



2. 根据导入车辆的实际颜色与材质,从 SimoneEditor 资产库中找到对应材质球或自己新建对应材质球为外挂主车配置材质信息。车灯以及车漆的材质 Slot Name 需要严格对应表格命名规则。



2. 找到/Blueprint/BPVehicle/BP\_MainCarClass/BP\_SR\_CarPawnBase ,右键 BP\_SR\_CarPawnBase 蓝图,创建外挂主车的子蓝图,根据项目名自定义蓝图名称。建议将自己创建的主车蓝图放置在自己项目的文件夹下便于管理。


3. 打开蓝图,点击左上角菜单 add,添加一个 scene component 组件,重命名为 SubMeshes,将车身,轮胎,方向盘模型,分别拖入所创建的蓝图内, 移到 SubMeshes 下形成对应子父关系,修改各个组件名称。
车身: body 方向盘:steering
左前轮: wheel\_L\_0 右前轮: wheel\_R\_0 左后轮: wheel\_L\_1 右后轮: wheel\_R\_1




4. .车辆模型坐标 0,0 点位置对应车身后轴中心位置,放置轮胎和方向盘的位置和车身位置相适配。至此完成外挂车辆蓝图制作。

### 1.2 外挂插件导出资源包
#### 1.2.1 导出前端所需 ZIP 资源包
1. 在 SimOneEditor 准备好资产后,点击菜单栏中的 **SimOne** **Toolbox**,打开【**SimOneEditor** **外挂资源导出**】插件。
```{admonition} 注意
:class: tip
目前仅支持主车【单选单个导出】,支持道具【多选批量导出】。
道具:指动静态元素资源。
```

2. 选中你要导出的资产,点击【主车】/【道具】,弹出选择 ZIP 存放文件夹地址,等待导出即可得到前端所需的 ZIP。

#### 1.2.2 选择关卡导出 PAK 包
1. 目录中找到 content/SimOneMaps 文件夹,双击打开 L\_SimOneEditor\_AssetMap 关卡,将资产拖入关卡,保存关卡。


2. 选中关卡,点击【导出 Pak】,选择存放到【SimOne 安装路径】\SimOne\Module\UE\SimOne\Content\Paks 路径下,等待打包完成。


### 1.3 资源包导入 SimOne
#### 1.3.1 主车导入
1. 切换到 **资源管理** **主车模型**,点击 **导入**,选择刚刚的资源包 ZIP,点击 **创建** 。
```{admonition} 注意
:class: tip
注意检查对应资源的 PAK 是否已经完成对应位置的存放。
```




2. 打开 安装目录 \SimOne\Module\UE\Engine\Settings\MainVehicle\_Asset\_template.json 文件,从 zip 中找到 manifest.json,将里面对应的信息写入 MainVehicle\_Asset\_template.json。(后续优化版本不需要修改 json)

3. 查看导入效果(主车编辑器、简化渲染、高精渲染)。

#### 1.3.2 道具(动静态元素)导入
1. 选择**资源管理** 动态元素/静态元素,选择想要导入的文件夹,点击右上角的 **导入**,选择**外挂模型**。

2. 点击 **浏览** 或拖入道具的 ZIP 资源包。

3. 确认资源信息,看是否要修改资源名称和元素类型等,然后点击 **创建** 即可。
```{admonition} 注意
:class: tip
注意检查对应资源的 PAK 是否已经完成对应位置的存放。
```


4. 导入效果查看(简化渲染效果仅为道具长、宽、高的 3d 框,高精渲染)。

## 2. 动静态资源导入流程
### 2.1 如何导入自定义模型
支持导入自定义模型作为动静态元素,可导入自定义模型作为标定算法的开发测试验证。
#### 2.1.1 **模型导入规范示例**
1. **物体尺寸**:物体的尺寸必须参照真实世界的尺寸大小来(单位:cm)。
2. **模型坐标轴方向和位置设置**:模型的坐标轴必须处于世界原点(0.0.0)模型的最低端在原点
* **建筑道具类** 角色模型 X,Y 均在模型中间位置 Z 轴位于 0 点 正面朝向 X 轴。

* **车辆类型** 需要注意朝向以及坐标轴位于后轮中心最低点。

3. **导出模型**:导出的格式采用 **FBX**(FBX 可记录尺寸贴图信息)导出时 **去掉自动**,选择 **厘米** 为单位,无需勾选动画。
> 以 Autodesk 3d Max 为例



4. **材质要求**:材质不要有重复多余的确保精简如果是带贴图的需要在 max 中先赋予贴图一块导出。
5. **重置坐标**:模型缩放位移过则需要重置下坐标。

#### 2.1.2 **导入模型**
1. 打开 **资源库** ,进入 **动态元素** 或 **静态元素** 目录,选择对应二级目录,点击 **导入** ,选择 **自定义模型** 。

2. 显示导入设置的弹框,填写完成后点击 **创建** 。

ID |
项目 |
描述 |
1 |
上传模型压缩包 |
支持上传模型格式:fbx、obj;支持压缩包大小在 100M 以内。 |
2 |
上传缩略图 |
支持上传图标格式:png、jpg;支持图片大小在 10M 以内。 |
3 |
输入元素名称 |
输入的内容将作为此元素的名称。 |
4 |
选择元素类型 |
支持选择 ASAM OpenSCENARIO 标准定义的元素类型。 |
5 |
选择语义类型 |
按语义划分的语言表达式的类,用于感知仿真。 |
3. 导入成功后,对应目录会新增一个已导入的元素。

#### 2.1.3 **添加元素**
进入案例编辑器,将导入的 **模型** 拖入 **预览窗口** 内,并根据情况自定义 **尺寸** 和 **缩放** 。

#### 2.1.4 **效果展示**
**保存** 并 **运行案例**,即可在案例监测窗口看到已添加的模型。

### 2.2 如何导入板模型
支持导入图片作为动静态元素,可导入标定板图片作为标定算法的开发测试验证。
```{admonition} 注意
:class: tip
在静态元素库中可以通过选择 **导入板** 来使用图片生成可放置进仿真场景的标定板元素,这一功能是为需要**虚拟标定**的需求服务,即通过此功能我们可以将**现实中使用的摄像头标定材料**放入虚拟场景中使用。
```
#### 2.2.1 **导入贴图**
1. 打开 **资源库**,进入 **动态元素** 或 **静态元素** 目录,选择对应二级目录,点击 **导入** ,选择 **板模型** 。

2. 显示导入设置的弹框,填写完成后点击 **创建** 。

ID |
项目 |
描述 |
1 |
上传贴图文件 |
支持上传图标格式:png、jpg、bmp;支持图片大小在 10M 以内。 |
2 |
上传缩略图 |
支持上传图标格式:png、jpg;支持图片大小在 10M 以内。 |
3 |
输入元素名称 |
输入的内容将作为此元素的名称。 |
4 |
选择元素类型 |
支持选择 ASAM OpenSCENARIO 标准定义的元素类型。 |
5 |
选择语义类型 |
按语义划分的语言表达式的类,用于感知仿真。 |
6 |
输入元素尺寸 |
支持输入宽、高。 |
3. 导入成功后,对应目录会新增一个已导入的元素。

#### 2.2.2 **导入模型**
进入案例编辑器,将导入的 **模型** 拖入 **预览窗口** 内,并根据情况自定义 **尺寸** 和** 缩放** 。

#### 2.2.3 **效果展示**
**保存** 并 **运行案例**,即可在案例监测窗口看到已添加的模型。

## 3. 外部场景导入流程
SimOne 支持外部场景模型导入,应用于测试场景。
1. 制作 OpenDRIVE 文件。
2. 在 UE 中搭建场景关卡,并保证主关卡命名与 OpenDRIVE 命名一致。
3. 通过 SimOneEditor 打包场景成 Pak 文件。

2. 将 Pak 拷贝到对应路径,前端导入 OpenDRIVE。
3. 基于导入的 OpenDRIVE 新建案例,运行案例,高精渲染场景将自动加载。