王艳,刘冬芳,赵冉,孙立明,韩校粉
(陆军工程大学 石家庄校区七系,石家庄050000)
机械识图绘图是机械类各专业人才培养方案中一门专业教育类的学科专业基础必修课程,主要研究机械图样的表达与理解,是机械工程技术的基础,在培养学生的机械形体表达、形象思维、空间想象力和工程素养方面具有重要作用。随着多媒体技术的发展和普及,目前,机械识图绘图课程早已由传统的以黑板挂图为主要教学手段向融合多媒体课件、网络课程、模型室等多种信息化教学手段转变,教学效率提高,教学效果更好[1]。
随着智能手机、平板电脑等移动终端设备的普及,人们在沟通、社交、娱乐等活动中越来越依赖手机APP 软件。开发《机械识图绘图》APP 教学平台,依托教学平台向学生提供丰富的教学资源,为学生搭建多维信息化平台,延伸课程教学的时间和空间,拓展师生交流的渠道有重要意义[2]。
图1 APP 教学平台的内容框架
《机械识图绘图》APP教学平台里的各种教学资源采用树状框架,层次分明,便于拓展,其主要内容框架如图1 所示。
《机械识图绘图》APP 教学平台里的教学资源包括模型库、课程资料、学生作业、交流互动四大模块。
模型库模块包括装配体、零件、拆装训练3 个子模块。装配体子模块中为学生提供各种装配体工作原理的动画演示、装配体爆炸图、装配图等内容。在模型查看区显示相应的三维模型,可旋转、平移、缩放查看模型[3]。可通过模型的功能区查看模型的工作原理、爆炸图、平面显示、主视图、俯视图、左视图和透明化显示等,如图2 所示。
图2 模型库界面
零件子模块包括各零件的三维模型及各零件的三视图,且模型可实现360°旋转,便于各角度观看。
拆装训练模块包括装配体的拆装动画,还可对装配体进行模拟拆装训练,且当操作错误或不知如何拆装时,系统会给出操作提示,如图3 所示。
图3 装配体拆装界面
课程资料模块包括视频、文档和PPT 等3 个子模块。视频子模块包括多个示教动画和微课视频。示教动画可以生动、直观地展现课程的部分知识点。微课视频可以帮助学生在课下提前预习或重温课程的关键知识点。在视频类资料区中可点击任意视频播放查看,也可将视频暂停,如图4 所示。
图4 视频播放界面
文档子模块包括电子教材、章节重点内容总结、零件图、装配图、电子习题集等丰富的电子文档资料供学生自学。
PPT 子模块主要提供教师上课的课件,供学生课下预习或查漏补缺。
学生作业模块用于学生提交作业,教师反馈作业评价。
交流讨论模块供学生与教师、学生与学生之间的讨论交流,及时解决学习中遇到的难题。
建立APP 教学平台里的教学资源包括模型库、课程资料、学生作业、交流互动四大模块。
模型库里的模型选用SolidWorks2018 作为建模软件,对实物模型进行计算机虚拟仿真以取代传统实物模型。SolidWorks2018 是一款非常受欢迎的三维CAD 软件,它界面友好、功能实用、易于学习,非常适合高校教学。
2.1.1 SolidWorks 实体模型导出
1)使用SolidWorks 制作的三维模型,不能直接用于Maya、Unity3D,需要转换为三维模型通用的Obj 格式。在SolidWorks Premium 中开启ScanTo3D 插件,通过中间格式转换为Obj 格式。
2)在保存时候选择保存Obj 格式,填写保存文件名字即可。
2.1.2 SolidWorks 模型导出Obj 后在Maya 中优化、美化处理
1)在SolidWorks 中导出的Obj 格式模型是一种灰模也称素模,是一个简单的模型,具有无颜色、无贴图、表面粗糙不光滑、没有质感、模型面数多等缺点。
2)将Obj 格式模型导入Maya 中处理。根据模型的具体颜色、贴图、质感、模型面数等处理。
3)导入模型操作步骤:Maya 软件首界面,文件→导入→选择Obj 格式模型。
4)修改模型颜色步骤:首界面→窗口→渲染编辑器→Hypershade 选项,双击材质球即可编辑其属性→Color 双击选取颜色。
5)修改模型贴图步骤:首界面→窗口→建模编辑器→UV 编辑器→把材质球赋给模型→选择材质球Color 选项创建渲染节点→文件→图像名称。即可添加新的贴图并与UV 匹配使用。
6)修改模型质感步骤:首界面→窗口→渲染编辑器→Hypershade 选项→创建新的材质球→可选择Blinn 材质、Lambert 材质、Phong 材质、渐变着色器等→还可以调整颜色参数、透明度参数、环境色参数、白炽度参数、漫反射参数等。
7)修改模型面数步骤:首界面→网格→清理。首界面→网格→减少→设置减少的比例比如30%或50%。方便后期在程序中减少电脑性能的开销,有利于流畅查看、操作三维模型。
8)做完以上操作,达到理想效果后,导出美化后的FBX 格式模型,用于程序使用。
2.1.3 FBX 模型导入Unity3D 工程及设置
1)Unity3D 有自己的工程目录。把FBX 格式模型文件直接拖拽到Unity3D 的模型文件下即可,此过程需要有一个解码过程,根据模型大小解码时间不等。
2)在Unity3D 工程中选择导入的模型,Inspector 面板会显示关于模型文件的属性,在Model 列表中可编辑模型的UV 属性、大小比例属性、坐标属性等。在Rig 列表中可编辑模型的动画类型、Avatar 属性、骨骼节点属性等。在Animations 列表中可编辑动画片段、动画事件、动画循环等属性。
3)选择模型文件拖拽到Hierarchy 面板中,可以在Scene 窗口看模型效果,也可在此调整模型效果、灯光效果。在Inspector 面板中Transform 属性可以调整模型的大小、位置、旋转,MeshRenderer 属性可以调整灯光与模型的关系,材质球属性可以调整颜色、贴图、法线贴图、高光贴图、金属属性、反光属性、UV 的偏移等。
4)把Hierarchy 面板中调整好的模型拖拽到Resources 文件下,制作成预制体,方便程序动态加载模型文件使用。
2.1.4 FBX 模型在Unity3D 中加载使用
1)响应模型按钮,用Resources.Load()加载模型,用(GameObject)Instantiate()显示出模型,obj.transform.parent设置加载显示模型的位置。
2)CamerController 控制视角的移动、旋转、缩放等查看方式。给模型部件的点击位置添加Collider 组件,可以用Ray ray=Camera.main.ScreenPointToRay(MousePosition);RaycastHit hit; (Physics.Raycast(ray, out hit) 检测鼠标点击部件做响应事件,用来播放工作原理动画、拆装、分解动画。
课程资料模块包括视频、文档和PPT 等3 个子模块。视频包括动画和微课视频两种形式。动画以生动逼真的表现形式,从全方位、各个角度再现零部件模型,动画的制作一般先利用SolidWorks 等三维建模软件建模,然后利用运动算例功能完成仿真运动及动画设计,再利用Maya 等软件生成Avi、Wmv 等视频格式。此类动画按照教师的设计进行演示,不存在交互性。微课视频是教师根据课程知识点制作出的一个主题鲜明、内容具体、针对性强的碎片化课例片段。它资源容量较小,特别适用于基于移动设备的移动学习。微课视频可利用Office MIX、Camtasia等软件制作,也可使用其他多媒体设备进行录制。文档和PPT 课件主要是教师在平台上为学生提供的自测题、工程图、教学课件等,点击相应内容会以Office 形式打开。
学生作业是由学生做完作业后提交,会通过网络提交到教师端(服务端)的StreamingAssets 文件夹下,教师可以在学生作业模块查看学生的作业情况。点击作业会以Office 形式打开,主要技术是用协程技术、数据流转换、外部应用打开。以下是该技术方法:
1)routine(Loding("xx.docx"))是启动协程程序;WWW www = new WWW (filePath + fileName) 加载路径的文件;yield return www 等待加载完成;byte [] bytes = www.bytes把文件转换为字节数据流;Stream sw; FileInfo t = new FileInfo(path + fileName) sw.Write(bytes, 0, bytes.Length),sw.Write(bytes, 0, bytes.Length)把数据写入文件,sw.Close()关闭数据流;Application.OpenURL(path+fileName)打开文件。
2)当教师对学生作业查看、批改完成后,直接保存即可,就相当于Office 文件继续编辑和保存。
交流互动模块是学生和教师、学生和学生之间的交流,主要方式是使用文字、语音两种形式交流,类似一个聊天室功能,在聊天室内的所有人都能看见、听见。此模块主要使用NetworkView 组件,以下是技术具体实现的方法。
1)NetworkConnectionErrorerror=Network.InitializeServer(connectCount, port, useNAT)新创建服务器,在这里也可以理解为是创建一个聊天室,NetworkConnectionError error= Network.Connect(ip, port)连接服务器,在这里可以理解为加入聊天室,sendMes = inptuText.text 是获取输入框的内 容,GetComponent <NetworkView >().RPC ("SendMes",RPCMode.All, Info.name + ": " + sendMes + " 服务端")发送数据,在这里可以理解为发送消息,Network.Disconnect();断开连接,在这里可以理解为退出聊天室。
2)发送语音实现技术方法:主要是使用AudioSource组件来记录声音。AudioSource.clip = Microphone.Start("Built-in Microphone", false, 60, 44100)是设置音频的属性有是否循环、秒长度、频率,如果是按下按钮需要录制新的语音时则GameObject obj = (GameObject)Resources.Load("AudioClip") 加载新的音频盛放器,GameObject audioButton = Instantiate (obj) audioButton.GetComponent<AudioSource>().clip = aud.clip 并实例出盛放器开始记录音频,Microphone.End("Built-in Microphone")是当松开按钮时候停止录制。
3)声音录制倒计时功能,没有语音可以录制15 s,当倒计时5 s 的时候就会出现录音倒计时提示,主要是通过协程来完成,功能代码如下:
本平台是一款教学软件,集虚拟模型库、课程资料、学生作业、交流互动等于一体,实现了实用、易用、友好交互设计理念。该软件操作简单方便,界面友好、美观。该教学平台的开发突破了传统教学模式,利用计算机、手机、平板电脑等工具拓展了教学的时间和空间,提高了教学质量,优化了教学结构和流程。不仅可以帮助学生更形象、生动地理解一些难于理解的重点问题,还能减轻教师的教学负担,方便学生多次重复地自学相关内容,推动了机械识图绘图教学的进一步发展。