机械拆装-基于Unity-总体设计

news2024/11/23 19:29:40

前言

  在工业设计和制造领域,零部件的拆装技术是一个重要的应用场景,比如我们在工程训练课程中经历的摩托车发动机拆装课程,是机械类学生的必修课程。虚拟拆装系统模拟和仿真了模型的拆装过程,虽然SolidWorks等机械设计软件能够解决特征配合的装配方式,但交互性不足。我们在Unity虚拟引擎中建立一个交互式拆装训练系统,拆装操作简单,并有图文引导提示,适合学习者了解拆装过程。

  如果一个拆装项目要实现比较完善仿真功能,比如需要仿真实体特征、装配精度等,则需要进行更加详尽的架构设计。但如果仅仅实现基本功能,且项目要在短时间(一周)内完成,那么按我目前的想法写下本专栏的笔记,大致可以完成。

1. 系统总体设计

  完成整个系统大约要完成下图中这些工作,*为加分项。核心模块为3D模型的准备以及拆装功能的实现,这两个部分后面会详细说明。

2. 装配功能实现的详细设计

  2.1 装配顺序

  发动机模型的包括活塞、曲柄、离合器等几大部分,零件数量有200多个,彼此存在依赖关系,因此需要根据其构造和原理,安排拆装工序。按发动机功能区域分,可以讲拆装顺序分为如下图的装配分组,其中每个子装配体都包含了若干零件,因篇幅有限,仅展开比较重要的变速箱装配体:

  在系统设计过程中,模型按上图的分组建立子装配体,并先分别完成每个子装配体,最后总装。

  2.2 装配思想实现的难点

  (1)碰撞干涉问题

     虚拟世界中需要模拟实体零件的特性,否则容易发生零件穿透失去真实的效果。可以旋转Unity系统中较常用的几种碰撞器来制造碰撞效果,但这里需要注意几个问题:

    1)如果使用MeshCollider包围整个零件表面,碰撞效果比较真实,但是系统资源占用较大,尤其是齿轮这些三角面较多的模型;

    2)如果使用BoxCollider这类碰撞器时,容易造成视觉上还未碰到模型,而已经产生碰撞效果的现象,不复合现实世界客观规律。可以使用下图分段式碰撞器包裹物体的方式,系统资源消耗较少,又有MeshCollider的效果。

  

  (2)装配路径约束

    发动机装配中,大部分都是轴向装配路径,因此需要对孔和轴之间的配合进行约束,以体现实际装配中的方位和路径。考虑用采用以下方法:零件在当前位置O时,可以自由移动;当拖拽到轴端面位置时,制定一个零时位置T,从这个位置向目标位置P移动时,锁定y,z方向,约束零件在轴方向上移动。

  (3)零件装配过程的流程设置

    下图是大致的装配动作实现过程,其中没有考虑的问题有:

    1)判断装配方向;

    2)装配完成后,父子关系改变(如果后续需要通过运动执行来演示装配效果,就需要考虑这个问题);

    3)装配工具选择(背包);    4)游戏奖励制度。

    这些可以在制作过程中预留接口,以便于后期扩展。

    

3. 场景实现中的难点与解决

  3.1 相机控制

    在场景中,相机会有多种应用要求,比如在实现场景漫游功能时,需要以第一或第三人控制的方式,让相机实现360°场景旋转。但在装配过程、教学认知过程中,都需要相机在小范围移动,或干脆固定不动,解决的方法有很多种,比如:

    1. 载入不同场景实现不同功能

    比如漫游为一个场景,装配功能放在另一个场景,通过场景间的切换实现不同功能。

    2. 建立多个相机,通过改变相机的Depth数值,切换主副相机。UI可以建立专门的UI相机。

    

    另外,在装配场景中,可以将相机旋转中心设置为装配体的位置,让相机始终跟随装配体旋转和移动。

  3.2 零件的拖拽和旋转

    首先要建立零件的层(Layer),只有在这个层里的物体才会被鼠标射线选中拖拽,防止其他物体干扰;其次,使用鼠标射线拖动和旋转的代码很多,借鉴一下大神们的基本都没有问题。

  3.3 装配位置提示

  考虑实现是功能是:当选中一个零件准备装配时,这个零件的正确装配位置会有一个同样的零件形象忽明忽暗地提示,如下图1。大致的思想如下图2。

     

总结

  在制作过程中还有一些小细节需要不断完善,比如需要规范管理那么多种类的文件、UI的层叠结构等,在本专栏中的后续文章会有过程记录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1878107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

apipost的安装和测试添加接口能否正常使用

1.进入官网,点击免费使用(我是windows 64位,选合适自己的配置) 2.开始安装 选仅为我安装——下一步 选择自己的安装目录——点安装 等待 运行——完成 3.apipost一些基本操作——实现添加内容 (1)新建接口…

【05】从0到1构建AI生成思维导图应用 -- 前端交互实现

【05】从0到1构建AI生成思维导图应用 – 前端交互实现 大家好!最近自己做了一个完全免费的AI生成思维导图的网站,支持下载,编辑和对接微信公众号,可以在这里体验:https://lt2mind.zeabur.app/ 上一章:http…

5_Clark变换Simulink仿真详细步骤

一、Clark变换的计算过程 根据投影定理: Iα由Ia、Ib、Ic共同投影决定,根据几何原理,IαIa-cos(60)*Ib-cos(60)*Ic,即是IαIa-0.5*Ib-0.5*Ic Iβ由Ib、Ic共同投影决定,根据几何原理,Iβsin(60&a…

下一代的JDK - GraalVM

GraalVM是最近几年Java相关的新技术领域不多的亮点之一, 被称之为革命性的下一代JDK,那么它究竟有什么神奇之处,又为当前的Java开发带来了一些什么样的改变呢,让我们来详细了解下 下一代的JDK 官网对GraalVM的介绍是 “GraalVM 是…

【Python机器学习】模型评估与改进——交叉验证

交叉验证是一种评估泛化性能的统计学方法,它比单次划分训练集和测试集的方法更稳定、前面。在交叉验证中,数据被多次划分,并且需要训练多个模型。最常用的交叉验证是k折交叉验证,其中k是由用户指定的数字,通常取5或10,…

MySQL高级-InnoDB引擎-事务日志- redo log(事务持久性的保证)

文章目录 1、redo log1.1、重做日志缓冲(redo log buffer)1.2、重做日志文件(redo log file) 2、如果没有redo log,可能会存在什么问题的?2.2、我们一起来分析一下。 2.2、那么,如何解决上述的问…

240629_昇思学习打卡-Day11-Vision Transformer中的self-Attention

240629_昇思学习打卡-Day11-Transformer中的self-Attention 根据昇思课程顺序来看呢,今儿应该看Vision Transformer图像分类这里了,但是大概看了一下官方api,发现我还是太笨了,看不太明白。正巧昨天学SSD的时候不是参考了太阳花的…

Databend db-archiver 数据归档压测报告

Databend db-archiver 数据归档压测报告 背景准备工作Create target databend table启动 small warehouse准备北京区阿里云 ECSdb-archiver 的配置文件准备一亿条源表数据开始压测 背景 本次压测目标为使用 db-archiver 从 MySQL 归档数据到 Databend Cloud, 归档的…

qt 开发笔记 动态链接库应用

1.概要 1.1 需求 库有两种,动态库和静态库,这里说的是动态库;动态库的加载方式有两种,一直是静态的一种是动态的,这里的静态加载是指静态加载动态,是一种加载动态库的方式。也有一种动态加载的方式&#…

衣服、帽子、鞋子相关深度学习数据集大合集(1)

最近收集了一大波关于衣物深度学习数据集,主要有衣服、帽子、鞋子、短裤、短袖、T恤等。 1、运动裤、短裤图片数据集 数据格式:图片 是否标注:已标注 标注格式:yolov8 图片数量:915张 查看地址:https…

# Sharding-JDBC从入门到精通(2)- Sharding-JDBC 介绍

Sharding-JDBC从入门到精通(2)- Sharding-JDBC 介绍 一、概述-分库分表所带来的问题 1、分库分表带来的问题 分库分表能有效的缓解了单机和单库带来的性能瓶颈和压力,突破网络 IO、硬件资源、连接数的瓶颈,同时也带来了一些问题…

容器进程

一、容器进程和宿主机进程的关系 容器在进程空间上和宿主机是隔离的,每创建一个容器,该容器都有一个独属的进程空间简称PID NameSpace。但是容器本质也是一个进程,自然是由其父进程创建的,这个可以使用ps aux命令验证。 | 容器视…

Thinger.io 支持多协议、插件化100%开源 IoT 企业级物联网平台

项目源码,文末联系小编 Thinger.io 是一个开源插件化物联网平台,提供了设备原型、扩展和设备连接管理所需的一切工具。我们的目标是使物联网的使用民主化,使其可供全世界使用,并简化大型物联网项目的开发。 01 Thinger.io 物联网平…

【C++】哈希表 --- 闭散列版本的实现

在无人问津日子里 正是登峰造极的好时机 ——《人民日报》 哈希表 --- 闭散列版本的实现 1 C中的哈希表2 哈希表底层2.1 功能2.1 哈希冲突2.3 开散列与闭散列 3 闭散列版本的实现3.1 框架搭建3.2 仿函数设计3.3 插入函数3.4 查找函数3.5 删除函数 Thanks♪(・ω&a…

windows 10 安装tcping 使用教程

1 官网下载:tcping下载 2 复制tcping 到win10系统目录C:\Windows\System32 3 tcping 网址测试,可以指定端口 4 tcping 测试端口联通 5 tcping http模式

LeetCode 算法: 合并 K 个升序链表 c++

原题链接🔗:合并 K 个升序链表 难度:困难⭐️⭐️⭐️ 题目 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists […

Hugging Face Accelerate 两个后端的故事:FSDP 与 DeepSpeed

社区中有两个流行的零冗余优化器 (Zero Redundancy Optimizer,ZeRO)算法实现,一个来自DeepSpeed,另一个来自PyTorch。Hugging FaceAccelerate对这两者都进行了集成并通过接口暴露出来,以供最终用户在训练/微调模型时自主选择其中之…

Python | Leetcode Python题解之第191题位1的个数

题目: 题解: class Solution:def hammingWeight(self, n: int) -> int:ret 0while n:n & n - 1ret 1return ret

PAE:从潮流报告中提炼有效产品属性

本文将介绍PAE,一种用于包含 PDF格式的文本和图像的产品属性提取算法。目前大部分的方法侧重于从标题或产品描述中提取属性,或利用现有产品图像中的视觉信息。与之前的工作相比,PAE从潮流趋势报告的PDF文件中提取属性,提取的属性包…

ISO26262标准

什么是ISO26262? ISO 26262(国际功能安全标准)是一个涵盖整个汽车产品开发过程的汽车功能安全标准。ISO 26262继承或改编自工业自动化行业的安全要求标准IEC61508,但专门为汽车行业量身定制。最新版本是ISO26262-1:2018。 它包括诸如需求分析、安全分析…