教程 (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)

您插入场景中的传送带被称为 prefab。prefab 是一种类型的模板,可以是非常简单或非常复杂的组件。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 Surface、Box Collider 和 Rigidbody。

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

定义传送面 (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 - 版权所有。未经出版商事先书面许可,不得以任何形式或任何方式(包括打印、保存、影印、录制或其他电子或机械方法)复制、分发或传输本出版物的任何部分。