工程场景数字化初体验-145分钟极速版

目录

[1. 145分钟的目标](#1. 145分钟的目标)

[1.1 基本任务:场景搭建与基础交互实现](#1.1 基本任务:场景搭建与基础交互实现)

[1.2 核心任务:工业设备数字化呈现与交互模拟](#1.2 核心任务:工业设备数字化呈现与交互模拟)

[1.3 拓展探索任务(选做,按需开展)](#1.3 拓展探索任务(选做,按需开展))

[1.4 任务一览](#1.4 任务一览)

[2. 引擎及资源介绍](#2. 引擎及资源介绍)

[2.1 引擎界面及操作方法](#2.1 引擎界面及操作方法)

[2.2 资源介绍](#2.2 资源介绍)

[3. 任务步骤1:场景搭建与基础交互实现](#3. 任务步骤1:场景搭建与基础交互实现)

[3.1 搭建基本场景](#3.1 搭建基本场景)

[3.2 UI交互](#3.2 UI交互)

[4. 任务步骤2:工业设备模拟](#4. 任务步骤2:工业设备模拟)

[4.1 设备介绍](#4.1 设备介绍)

[4.2 主轴控制------在场景中如何控制旋转](#4.2 主轴控制——在场景中如何控制旋转)

[4.3 溜板控制------在场景中如何控制平移](#4.3 溜板控制——在场景中如何控制平移)

[5. 拓展性任务:物流单元虚拟调试](#5. 拓展性任务:物流单元虚拟调试)

[5.1 物流调试要实现的功能](#5.1 物流调试要实现的功能)

[5.2 物流单元涉及到的设备及信号传输链路](#5.2 物流单元涉及到的设备及信号传输链路)

[5.3 机械臂抓取逻辑](#5.3 机械臂抓取逻辑)

[5.4 实践过程](#5.4 实践过程)

[6. 最后------打包运行](#6. 最后——打包运行)


1. 145分钟的目标

1.1 基本任务:场景搭建与基础交互实现

  1. 场景个性化搭建:完成博物馆、工厂、办公室、卡通风格、乡村等任一主题场景的构建(室内 / 室外场景不限),并依据场景主题添加植物、家具、工业设备等匹配元素,完成场景视觉体系的基础搭建。

  1. 场景漫游功能实现:为场景集成第一 / 第三人称漫游控制器,调试移动、旋转速度以适配交互体验。

++细节要求++ :加入系统UI 交互模块,通过 "系统提示"、"退出系统" 等按钮 + 文字组合控件,实现基础交互逻辑;

1.2 核心任务:工业设备数字化呈现与交互模拟

  1. 典型机床设备介绍:选取教材中普通车床、普通铣床、钻床、磨床、CNC 等机床设备之一,在场景中合理排布。并从设备作用、结构组成、工件装夹方式、典型加工工件案例等维度完成至少 3 项核心信息的文字介绍,++至少介绍3项以上++。

++细节要求++:悬挂安全操作规程;

  1. 工业设备模拟实现:①加入旋转脚本 ,通过按键操控机床主轴 / 操作手柄的旋转动作;②加入平移脚本,通过按键实现车床溜板箱、尾架等部件的平移动作。

++细节要求++ :加入文字UI,使用为用户提供"操作提示";

1.3 拓展探索任务(选做,按需开展)

拓展功能(可尝试)------物流单元虚拟调试:传送带引擎+传送带+传感器+机械臂的空间布局逻辑,完成基本节拍调试和基础逻辑认知。

1.4 任务一览

2. 引擎及资源介绍

2.1 引擎界面及操作方法

Unity 引擎虽功能复杂,却是虚拟场景类软件中操作门槛较低的,本课程无需掌握复杂编程与操作,所有功能均通过预制体拖拽、参数调整即可实现。

Unity引擎界面如下:

基本工具及操作方法:

* 注:请在课程操作中多点击"运行"按钮,及时发现问题!

2.2 资源介绍

  1. 资源位置
  1. 基本任务------场景搭建需要使用到的资源

(1) 第一/第三人称控制器,用于实现场景漫游;

(2)建立基本场景所需的3D模型;其中,完成"工业设备模拟" 、"物流传送虚拟调试"等任务所需要的模型在"2-工程场景"中;

(3)"4-材质颜色"中的材质,可以用于修改模型的表面颜色,点住一个材质,直接拖到物体表面上即可;

(4)"5-文字介绍及帮助UI"和"6-系统UI",用于场景中的提示文字和系统按钮,直接拖入Hirarchy即可

(5)145分钟任务中所需要使用的所有程序都在这里

3. 任务步骤1:场景搭建与基础交互实现

3.1 搭建基本场景------实现漫游

  1. 建立地面Plane,并将其放到合适的位置(0,0,0)、缩放到合适的大小和修改表面材质。

删除场景自带的"Main Camera",因为第一/第三人称控制器已经有Main Camera了

并且将第一/第三人称控制器拖入Hierachy列表中。注意:第一/第三人称控制器不能成为任何一个对象的子节点,并且第一/第三人称控制器在整个场景中,有且只能有一个!!!

(位置:Assets>0-人物)

尝试运行一下,可以在Game面板中查看运行结果------

使用"W、A、S、D"按键或"上、下、左、右"箭头控制人物/视角的向前、向后、向左、向右;使用"Space"按键控制人物跳跃;使用鼠标左滑、右滑控制视角向左、向右转向;使用鼠标上滑、下滑控制抬头、低头。

如果调试感觉不舒服,比如行走速度太慢、转向太快,可以在这里修改:

  1. 如果建立室内场景,需要加入"Assets->1-3D模型->1-1建筑"中的房子模型,因为这些房子是双面材质,其他单面材质的房子不一定能用。加入房子后,需要对房子的位置、大小和表面材质做调整。

如果室内光线较暗,可以在室内增加区域光:Hierarchy空白处点右键->Light->Directional Light

-> ->

  1. 加入设备机床、工厂设施等3D模型。

选中"Assets>2-工程场景->2-1机床及配件"文件夹中预制的模型,拖到Scene窗口中,并根据工厂的大致结构, 使用Scene窗口中的"移动"、"旋转"等工具,合理排布设备、标识、物料等工厂设施(没有硬性要求,合理即可)。

细节要求:在场景中加入要介绍的设备:可以从"Assets>2-工程场景->2-1机床及配件"中选择。并且在设备后面的墙上挂上相应的设备安全使用规程("Assets>3-安全操作规程图片")。

3.2 UI交互-信息介绍面板

使用 "5-文字介绍及帮助UI"文件夹中的"文字UI",将它拖到需要介绍的设备附近。这些"文字UI"可以随处放在场景任何地方,并可以放置多个,用于设备介绍、操作提示等。

这个"文字UI"包含了"文字部分"和"按钮部分"。

在Hirarchy窗口中打开这个"文字UI"前面的箭头,可以看到它的结构如下图:

可以单独选中"背景"节点,将文字位置调整到设备旁边,可以单独选中"按钮"节点,将按钮位置调整到鼠标容易点击的位置。

怎样修改文字内容?可以分别选中"标题文字"和"内容文字",在它们的Inspector面板中修改,如下图。

可以对设备做"设备作用、结构组成、工件装夹方式、典型加工工件案例"等方面的介绍。整个场景可以放置多个"文字UI"。

在运行时,文字不会立即显示,而需要用鼠标点击按钮时才会显示,当鼠标离开按钮时,文字就会消失。

4. 任务步骤2:工业设备模拟

接下来,开始使用脚本、参数来控制场景运行规则

4.1 主轴控制------在场景中如何控制旋转

  1. 先理解装配体的概念

一台设备的装配体是由多个零件及子装配体构成的,这里看到的Hirarchy中的结构就是有父子关系的装配结构。

首先要找到需要控制的部分,比如:

但是这样还不够,你可以用鼠标拖拽移动它试试:

被拖出来的零件,可以按"Ctrl+Z"回退

重新选择父节点,这样就选中了,整个三爪卡盘的装配体了。

  1. 挂旋转脚本:鼠标左键按住旋转脚本,拖到到三爪卡盘的装配体节点上,放手

并可以在右边Inspector上修改旋转轴、速度和开关按钮:

这个旋转脚本可以拖到场景任何需要旋转功能的物体上。

(*拓展读物:脚本怎么写?旋转的原理是什么?详情请点击传送门:小程序1--旋转的圣诞树

  1. 增加细节:这里可以加入一个文字UI,放置在设备旁边,用于提示用户操作方法

4.2 溜板控制------在场景中如何控制平移

平移运动与旋转的运动一样,也是虚拟世界中最基本的运动。

和"旋转"的方法一样,我们可以在机床上,找到溜板箱的整个装配体,加载平移脚本,并在Inspector上修改必要参数,实现溜板箱在行程范围内的移动。

修改平移的参数,注意------这里的起始位置和终止位置的大小值不要写反

也可以使用"单向平移脚本",它的区别在于,移动到限位后不会往回移动,因此,如果需要双向都能控制,可以挂2个"单向平移脚本",分别用不同的按钮和反向的速度来控制:

注意:速度反向(0.2变成-0.2)意味着方向反向!

(*拓展读物:溜板箱为什么能移动到限位位置就回头?原理可以参考 :小程序12--溜板箱的平移运动)效果如下图展示:

4.3 机械臂抓取初体验

这里使用机械臂逆解,自动计算出3个自由度的旋转角度,抓取桌面上随机生成的物料。

本任务中涉及到4个单元:机械臂、桌面物料分发器、物料(不需要专门放置,由分发器自动生成)和传送带物品收集箱(非必要)。它们之间的运行过程是:由桌面物料分发器自动生成物料->放置在桌面上的随机位置->通知机械臂抓取->机械臂通过逆向解算物料位置->机械臂抓物料->机械臂通知桌面物料分发器抓取动作已执行完成->桌面物料分发器再次生成新物料

这里我们在场景中放置3个物体:机械臂、桌面物料分发器和传送带物品收集箱(非必要)。

(资源路径:Assets->2-工程场景->2-3机械臂)

将三者放置在场景中,并调整它们的位置,距离需要接近一些,至少需要调整在机械臂的抓取范围内。

需要设置桌面物料分发器的参数------ 将机械臂节点,拖入桌面物料分发器的RobotArm参数中。

5. 拓展性任务:物流单元虚拟调试

5.1 物流调试要实现的功能

5.2 物流单元涉及到的设备及信号传输链路

一个物流单元所涉及到的设备较多,信号传输路径如下图------

这里涉及到用于运输的传送带、机械臂,用于控制传送带开关和速度的控制引擎,以及用于感知工件信号的传感器,用于自动放置工件到传送带上的传送带物料分发。为了协调这个复杂的过程,需要设置若干个信号传输标志,来表示"传感器是否检测到工件"、"传送带是否移动"、"机械臂状态(抓取、抬起、放置、回零)"等状态,整个过程的节拍如下:

其中在机械臂抬起、放置、回零的过程中,传送带继续运行,如果此时传感器检测到新的物料,就需要停止传送带,等待机械臂上一个任务完成后,再继续抓取等待的工件。

5.3 机械臂抓取逻辑

机械臂通过++正向运动学解算++ 和++逆向运动学解算++ 方式,计算机械臂角度与末端(世界坐标的工件)的关系。

在本次实践中我们使用容易理解的逆向运动学解算(几何法),已知末端(工件)坐标P(X,Y,Z),求解3自由度机械臂各关节的角度θ1、θ2、θ3

但在实际机械臂模型中,并不是所有的自由度都如图中的理想模型,各关节会有不同程度的位移和偏差,需要根据实际模型进行微调。

5.4 实践过程

  1. 传送带和引擎

在"2-工程场景"中的"2-2传送带中",可以找到传送带的预制体,根据需要自由拼接传送带。

传送带的速度、方向、停或动,需要引擎来控制,将传送带控制引擎拖入场景中,这个引擎已经包含了传送带控制的脚本,需要将所有的传送带都放入列表中。

  1. 传感器

用于检测传送带上是否有物料经过,它包含了一个红外线发射点和接收点,需要将两者放置在传送带内侧。

当有物料经过传感器时,传感器需要通知传送带引擎停止所有传送带,需要通知机械臂可以抓取物料,还需要通知物料分发器,停止在传送带上加载新的物料,因此传送带脚本中需要加载这3者参数。

  1. 传送带物料分发器

用于自动向传送带加载物料,需要设置的是"分发点的位置"和发放物料的节奏(间隔)------"LoadRate"

  1. 机械臂

从"2-工程场景"-"2-3机械臂"中选择一个机械臂拖入场景合适的位置,需要注意的是,机械臂不能旋转方向!!

机械臂的装配结构如下,关节1是关节2的父节点,关节2 是关节3的父节点,因此在控制各关节时涉及到本地坐标和世界坐标的转换。

在"5.3 机械臂抓取逻辑"中解释了几何法逆向解算关节角度的原理,但实际情况与理想情况不同,关节1、2、3不一定会在同一直线上,因此在实际控制中,在计算后还需要根据各个关节的实际偏差调整偏置。

  1. 传送带物品收集箱

收集箱只需要调整位置,能够准确接住机械臂放置的物体即可,它唯一需要调整的参数是箱内的容量,当设置为5时,表示箱中最多能容纳5个物料,当超过5个时,最早放入箱中的物料将会消失。

6. 最后------打包运行

在打包之前,我们可以将这个APP做地更完善一些。一个合格的工程场景软件,需要在场景中为用户提供"操作提示"、"退出系统"等用户交互按钮。

找到"6-系统UI"文件夹,选择一个喜欢的风格,直接拖入Hierarchy空白处;

如果希望修改提示文字,可以选择"其他提示文字"节点,在右侧的Inspector中修改文字内容

最终将整个APP打包成为可运行的EXE文件,在此之前先保存,然后选择File->Build Settings,点击Add Open Scenes按钮,将当前场景添加到打包框中。(注意,如果这个框内已经存在了其他场景,请先选中并按Delete按键删除!总之,务必确保一定要将你自己的场景加入到框中。)

选中D:盘->新建一个文件夹->修改一下这个文件夹的名字

按下"选择文件夹"按钮

接下去,系统会自动将所有工程文件打包到选中的文件夹中。

第一次打包时间略长。

打包后的文件夹如下------,打包后的文件一般有5-6个,如果需要放到其他电脑上运行,需要将这些文件全部带走。

如果需要将整个工程文件发送到网盘或者邮箱,可以选中所有的文件后,点右键->添加到"工程场景数字化打包.rar",最后可以发送这个压缩包。

发送之前,先检查一下,这个rar文件的大小,如果小于20,000KB,请重新压缩(有可能没有选中所有文件)。

当前场景导出后,运行时默认的窗口大小为1920*1080,如果你觉得这个大小不合适,比如你要运行这个APP的显示器更大或者更小,可以按下左下角的PlayerSettings按钮,在弹出的Player面板->Resolution and Presentation中修改"全屏(Fullscreen Window)/窗口(Window)"模式,当选择窗口(Window)模式时可以在下方输入框中输入屏幕的分辨率。

* 如果打包后,又对场景做出任何修改,需要重复这个打包过程,重新导出。

相关推荐
国家一级摸鱼选手1 天前
MCP(Model Context Protocol)学习笔记
unity·ai·mcp
会思考的猴子1 天前
Unity3D发布后软件界面右下角出现Trial Version
unity
ellis19701 天前
Unity资源管理框架Addressables[五] 构建
unity
派葛穆1 天前
Unity-鼠标悬停改变图像位置
unity·计算机外设·交互
avi91111 天前
图例设计软件:Focusky,VisualComponents,图片字风格化等试用和推荐,最终还是回到Unity 游戏代码
unity·ai·aigc·游戏开发·设计工具·信息图
张老师带你学1 天前
unity道具,健身房资源
科技·游戏·unity·游戏引擎·模型
废嘉在线抓狂.1 天前
简易拆开即用的高性能计时器(C#)
前端·unity·c#
ellis19701 天前
Unity资源管理框架Addressables[四] 资源分组管理
unity
张老师带你学1 天前
unity道具,哑铃架+天文望远镜,一边运动一边观星
科技·游戏·unity·模型·游戏美术
Swift社区2 天前
如果今天重新做 Claw,会用什么技术
游戏·unity