教程 (Tutorial)

构建您的第一个数字孪生:一个移动零件的传送带(realvirtual Know-How)

在这个简短的教程中,我们将创建一个带有源、传送带和光栅的小型数字孪生模型。

所需的 3D 组件已准备好。如果您想使用自己的 3D 数据,则需要使用 CADLink(包含在 realvirtual.io 中)或其他合适的解决方案(例如 Unitys PIXYZ)从 CAD 系统导入 3D 数据。

创建新场景 (Create a new scene)

您应始终在 realvirtual 文件夹之外创建模型。这是因为如果您导入新版本的 realvirtual.io,您不希望破坏已完成的工作。如果保持脚本在 realvirtual.io 文件夹之外,将使您能够使用 realvirtual.io 的新版本更新模型而不会出现问题。

首先创建一个新文件夹。我们将其命名为 Tutorial。选择 assets 并右键点击 Create > Folder。选择文件夹,按 F2 并将其命名为 Tutorial

创建新的 Tutorial 文件夹

要创建新场景,请选择 Tools > realvirtual > Create new realvirtual scene

创建新场景

创建场景后,请使用 File > SaveAs 将其保存在 Tutorial 文件夹中,命名为 tutorialmodel

在 Tutorial 文件夹中保存的新场景

您现在应该有一个带有基板和灯光的空场景:

空场景
ℹ️

您可以通过将 Gizmo 大小设置为 0 来隐藏大灯光和相机 gizmos(参见上图)。

您也可以创建一个完全空的标准 Unity 场景,并通过 Tools > realvirtual > Add Object > realvirtual 在主编菜单中添加 realvirtual 组件(在 2022 之前是 game4automation 组件)。

ℹ️

realvirtual 组件提供一些基本灯光、在部署的数字孪生(Game 视图)中的鼠标导航以及所有标准设置和标准 Runtime UI

启动您的第一个场景 (Starting your first scene)

您现在可以通过按 Unity UI 顶部的 Play 来启动第一个场景。

Game 视图将自动打开,您可以看到 RuntimeUI 以及仅有基板的空模型:

运行空模型

插入传送带 (Insert the conveyor)

接下来我们插入一个 3D 组件。对于教程,我们使用一个准备就绪的组件,该组件已在演示模型中使用。在 Assets > realvirtual> 3DPfefabs > ConveyorSmall 下选择传送带,并将其拖入场景。将其放置在基板中间的某个位置。

您可以使用 gizmo 移动传送带,只要传送带被选中它就可见。或者您在 Transform Position 属性中输入 0,0,0。这将把传送带的零点放置到世界零点(应该也是基板的中间):

将传送带放入空场景

解包 Prefab (Unpacking the Prefab)

您插入场景中的传送带被称为 prefabprefab 是一种类型的模板,可以是非常简单或非常复杂的组件。Prefab 可以在一个或多个场景中多次使用。只要场景中嵌入的 prefab 实例没有被"解包",它们仍然与 Prefab 关联,并继承对 prefab 本身的任何更改。有关 Unity Prefab 系统的更多信息,请参见 Unity 文档:https://docs.unity3d.com/Manual/Prefabs.html

对于本教程,我们应该完全解包 Prefab 实例,并切断与原始 Prefab 的所有依赖关系。请选择场景中的 ConveyorSmall,然后通过上下文菜单选择 Prefab > Unpack Completely

解包预制体

从传送带删除 realvirtual.io 组件

此步骤是可选的。传送带 prefab 已配备一些 realvirtual.io 组件。但我们想在本教程中向您展示完整的工作流程。就像没有任何准备好的内容——基于导入的 3D 对象一样。

这就是为什么我们要删除这些组件,稍后再重新添加。如果您愿意,也可以跳过此步骤,继续进行插入源。

删除对象 ConveyorSmall 上的组件 Drive,然后也删除对象 ConveyorSmall 上的 Rigidbody

移除 Drive 组件

接下来删除 ConveyorSmall.Conveyor.Conveyor 上的 Transport SurfaceBox ColliderRigidbody

您学会了如何从对象中删除脚本 ;-)。您现在删除了所有准备就绪的内容,我们将在此教程中再次添加这些需要的脚本。

定义传送面 (Define the transport surface)

我们现在有一个空的 3D 组件。尚未定义任何运动学和物理行为。这就是 CAD 导入后组件的样子。CAD 系统不包含除结构和几何体之外的任何信息。这意味着我们必须在 realvirtual.io 中定义所有机电一体化行为,如驱动器和传感器。

不幸的是,至今没有从 CAD 系统导出扩展信息的标准格式。然而,我们的 开放数字孪生接口 (Open Digital Twin Interface) 允许您为 CAD 系统开发自己的导出器。

首先,我们需要向传送带添加一个 Transport Surface。为此,我们选择组件 ConveyorSmall.Conveyor.Conveyor。在主菜单中选择 Tools > realvirtual > Add Script > Transport Surface,或者将 TransportSurface 脚本从 Assets>realvirtual 拖放到 ConveyorSmall.Conveyor.Conveyor 上。

一种非常简单的方法是使用 QuickEdit 来添加 TransportSurface

使用 QuickEdit 为传送带添加 TransportSurface
ℹ️

Quick Edit 叠加按钮可以通过在场景视图中按 F1 打开。

插入驱动器 (Insert a Drive)

我们现在在传送带上插入一个 Drive。我们将其放置在之前 TransportSurface 所在的同一组件上。

选择场景中的 ConveyorSmall.Conveyor.Conveyor 组件,然后通过主菜单选择 Tools > realvirtual > Add Script > Drive

或者您也可以将 Assets > realvirtual> Drive 下的 Drive 脚本拖放到 ConveyorSmall.Conveyor.Conveyor 的 Inspector 窗口上。

或者像之前一样,您也可以使用 QuickEdit 叠加窗口。

第三个选项,您也可以使用 Inspector 窗口上的 Add Component,然后输入 Drive,选择过滤后的脚本将其分配给 3D 组件。

您的模型现在应该看起来像这样:

为传送带添加了 Drive 和 TransportSurface
ℹ️

请记住。大多数时候,您可以通过 4 种方式在 3D 组件上添加脚本:

* 通过主菜单

通过从 Assets 文件夹 Assets>game4automation* 拖放

通过使用 Inspector 窗口中的 Add Component*

* 或通过使用 QuickEdit 叠加

定义传输方向和开启 Drive

接下来,我们在 Inspector 窗口中定义 Drive 的一些属性。还请检查 Direction 是否设置为 Linear X(以便显示的传输方向是向前的)。

请检查 TransportSurface 是否分配给了 Drive,这通常是自动完成的。将 JogForward 设置为 True,将 TargetSpeed 设置为 300

更改 Drive 的 Inspector 属性

这些设置将在仿真开始时自动启动 Drive

插入源 (Insert a source)

Source 会根据自身自动创建新组件(在 Unity 中称为"生成")。

请选择 Assets > realvirtual> 3DPrefabs > Can,并将其拖放到场景中。将罐子放置在传送带的开始处并在传送带上方。

另一种创建"标准"罐子源的方法是选择场景中的 TransportSurface,然后按键盘上的 INS

您的模型现在看起来像这样:

为传送带添加了 source

请将源移动到传送带的开始处。

测试传送带 (Test the conveyor)

现在我们可以测试传送带。使用 Unity 的 Play 按钮启动仿真。

您的第一个数字孪生 —— 带 source 的传送带

您可能会看到传送带上的纹理没有以正确的关系和正确的方向移动。您需要自己设置纹理缩放。请选择 TransportSurface,并在属性 Texture Scale 中输入 -2

插入传感器 (Insert a Sensor)

最后一步,我们想在传送带末端放置一个 Sensor(光束)。

请通过选择 GameObject > Create Empty 或通过选择 QuickEdit 叠加中的在场景中创建一个空的 GameObject。如果新的 GameObject 作为子级添加,请将其拖放到模型中的顶层。将新的 GameObject 重命名为 Sensor

接下来选择 Tools > realvirtual > Add Component > Add Sensor 或选择 QuickEdit 叠加上的 Sensor

最后但同样重要的是,您需要将 Sensor GameObject 移动到 TransportSurface 的末端。

您的模型现在看起来像这样:

在 TransportSurface 末端添加了 Sensor

现在您可以再次启动仿真,您将看到 Sensor 被占用(红色):

仿真期间数字孪生中的传感器
⚠️

不要忘记通过选择 File > Save 保存您的模型

总结和下一步 (Summary and what's next)

这只是一个快速入门。请查看 Demo model 并了解各功能是如何实现的。另请查看 Physics 部分,以了解有关物理仿真、碰撞检测和运动学运动的更多信息。在此基础上,您应该查看整个 Components & Scripts 部分,以了解有关详细信息。

© 2025 realvirtual GmbH https://realvirtual.io - 版权所有。未经出版商事先书面许可,不得以任何形式或任何方式(包括打印、保存、影印、录制或其他电子或机械方法)复制、分发或传输本出版物的任何部分。