机械拆装-基于Unity-准备零件

目录

前言

[1. 装配体模型的准备(STEP格式保存为零件)](#1. 装配体模型的准备(STEP格式保存为零件))

[1.1 关于不停提示"默认模板无效"](#1.1 关于不停提示“默认模板无效”)

[1.2 关于无法保存单个零件的解决](#1.2 关于无法保存单个零件的解决)

[2. 整理装配体与零件](#2. 整理装配体与零件)

[2.1 零件命名规则](#2.1 零件命名规则)

[2.2 建立子装配体](#2.2 建立子装配体)

[3. 装配体和零件转换格式](#3. 装配体和零件转换格式)

[3.1 3DMax单位设置](#3.1 3DMax单位设置)

[3.2 装配体转换](#3.2 装配体转换)

[3.3 零件转换](#3.3 零件转换)

[4. 总结](#4. 总结)


前言

如果我们要实现一个机械装配体的Unity虚拟拆装场景,大约需要经历这些步骤:

首先,要建立机械模型,包括每个零件及装配体;

然后,用3DMax将装配体和每个模型转成.fbx格式,如果有需要,还要调整零件坐标;

最后,导入Unity场景。不仅仅是装配体需要导入,为了装配的方便,还需要分别再导入每一个零件。

后面会详细介绍如何实现拆装过程。

当然,这些只是参考一些论文参照得出的经验,实现功能的方法有千万种,本文仅供参考。

1. 装配体模型的准备(STEP格式保存为零件)

装配体模型可以使用SolidWorks、UG、Catia等机械建模软件建立,也可以下载。如果是下载的装配体模型,尽量下载STP通用格式,保存了所有零件和装配信息。这里介绍一下如何用SolidWorks将STEP装配体模型(*.step)保存成为单个零件。

1.1 关于不停提示"默认模板无效"

打开SolidWorks,点击"选项":

在"默认模板"中,将这3个模板都选择了(随便选择一个即可),并且勾选"总是使用这些默认的文件模板"后确定:

1.2 关于无法保存单个零件的解决

打开STEP文件后,装配列表中的零件,点右键可单独打开这个零件,但是有时候没有这个选项:

解决方法是:在打开STEP装配件之前,在SolidWorks的选项中调整以下选择:

再重新打开STEP文件,这是可能会有重建错误的提示,关系不大。在某一个零件上点右键,就会出现"打开零件"的工具:

2. 整理装配体与零件

2.1 零件命名规则

一个装配体中有上百个零件,为了方便体现零件位置和装配顺序,可以根据自己的理解制定命名规则,举例如下:

2.2 建立子装配体

发动机装配体零件众多,需要根据装配顺序建立子装配体,最后进行总装。但如果是下载的STP模型,不一定符合我们自己的装配要求。因此,可以根据自己的装配顺序建立并保存子装配体:

选择需要装配的零件->右键->"生成新子装配体"

3. 装配体和零件转换格式

Unity支持fbx、dae、dxf、obj等格式,SolidWorks建立的模型可以导出为obj格式,后直接导入Unity。(这些格式都是三角面模型,原模型的细节、精度、特征都会被丢掉。)

另外,在SolidWorks建模时每个零件的坐标系有可能不统一(零件坐标系原点与零件旋转轴心不重合),因此建议先导入3DMax,调整好符合Unity坐标原则和长度单位后导出fbx格式。

3.1 3DMax单位设置

先调整3DMax的长度单位(机械制图一般都使用毫米)

-> ->

3.2 装配体转换

  1. SolidWorks导出:装配体可以保存为默认格式.SLDASM,如果3DMax无法读出,可以先转为.STEP再导入3DMax。
  1. 导入3DMax:

->

  1. 编辑坐标轴:为了在Unity场景中移动物体和旋转物体的便利,需要将坐标原点放置于物体的旋转中心。导入时的坐标是这样:

在右边的选项卡选择"仅影响轴",将轴拖动到需要的位置

-> ->

  1. 导出:导出为fbx格式,并且根据需要调整导出时的长度单位
  1. 导入Unity场景、整理及调整坐标:直接将装配体.fbx文件拖入场景中,可以看到它的旋转坐标已经被修改,并且装配的父子关系和位置关系都还保存(但是约束、特征等机械设计信息已经丢了,需要在场景中建立)。

3.3 零件转换

SolidWorks的默认零件格式为sldprt,3DMax能够识别。但如果导入有问题,可以转成中间格式,如.igs。同样在导入、导出时需要注意调整坐标、长度单位等。

4. 总结

  1. 实现机械零件和装配体导入Unity的方法有很多种,这篇是本人自己踩过的坑。肯定还有更好的方法,欢迎指出。

  2. 机械设计中的精度、基准面、约束等要求这里没有满足,这里仅仅保证了外形和装配位置关系。

  3. 3DMax中的长度单位设置和坐标方向设置,需要实际测试后选择,我这里仅供参考;

  4. 不同的零件和装配体模型的情况不一样,上面的步骤不一定全部适用。

相关推荐
omegayy10 小时前
Unity 2022.3.x部分Android设备播放视频黑屏问题
android·unity·视频播放·黑屏
与火星的孩子对话15 小时前
Unity3D开发AI桌面精灵/宠物系列 【三】 语音识别 ASR 技术、语音转文本多平台 - 支持科大讯飞、百度等 C# 开发
人工智能·unity·c#·游戏引擎·语音识别·宠物
向宇it16 小时前
【零基础入门unity游戏开发——2D篇】2D 游戏场景地形编辑器——TileMap的使用介绍
开发语言·游戏·unity·c#·编辑器·游戏引擎
牙膏上的小苏打23331 天前
Unity Surround开关后导致获取主显示器分辨率错误
unity·主屏幕
Unity大海1 天前
诠视科技Unity SDK开发环境配置、项目设置、apk打包。
科技·unity·游戏引擎
浅陌sss2 天前
Unity中 粒子系统使用整理(一)
unity·游戏引擎
维度攻城狮2 天前
实现在Unity3D中仿真汽车,而且还能使用ros2控制
python·unity·docker·汽车·ros2·rviz2
为你写首诗ge2 天前
【Unity网络编程知识】FTP学习
网络·unity
神码编程2 天前
【Unity】 HTFramework框架(六十四)SaveDataRuntime运行时保存组件参数、预制体
unity·编辑器·游戏引擎
菲fay2 天前
Unity 单例模式写法
unity·单例模式