基于OpenGL和SolidWorks 的机械系统运动 仿真原理及实现 华中科技大学智能机械与控制研究所,湖北 武汉 430074; 空军雷达学院,湖北 武汉 430010) Realization MotionSimulation MechanicalSystem Based SolidWorksQIU Yankai HUANGDaomin XIEWei TANGGuoyuan LIGuanghua IntelligentMachine Control,Huazhong Univer sity Technology,Wuhan 430074, China; ceRadar Academy, Wuhan 430010, China) 摘要:为了规划机械系统的运动轨迹, 优化设计 参数, 以及开发上位机监控界面, 研究了一个运动仿 真系统. 三维模型基于三维 CAD 软件 SolidWorks 建立, 用OpenGL 作为三维图形的接口, 运动仿真 软件以Windows 操作系统为开发平台, 采用Visual 的MFC为开发环境. 详细讨论了实现运 动仿真的一些关键技术, 并开发了仿真软件. 仿真结 果证明了这种方法的可行性, 对其它动态过程的三 维仿真也有一定的意义. 关键词: 动画仿真; 坐标变换; OpenGL; Solid Works 中图分类号: H164;TP391. 文章编号:10012257( 2010) 12002503 收稿日期: 20100907 Abstract: hetraject ory, opt hedesigning paramet ers heup per machine super visory interf ace hecomputer supervisory syst em mechanicalsyst em, motion simulat ion syst em studied. hreedimensional model hemodel tool SolidWorks. hroughdat ormatconversion, imported int hemot ion simulat ion sof supported heWindows operat ing sys em.Some key hemot ion simulat ion detail hesimulation sof tware hemet hod simulation application method hesystem also hevaluable efer ence otherapplicat ions. Key words: animat ion simulat ion; coordinat ransformat ion; OpenGL; SolidWorks 引言SolidWorks 作为基于 Windows 平台的全参数 化特征造型软件, 可以十分方便地实现机械零件的 三维实体造型、装配和生成工程图. 但目前的三维建 模软件画出来的图形, 大部分是静态的. 即使使用三 维建模软件制作动画, 也只是关键帧动画, 不能实现 实时交互. OpenGL 作为一个性能卓著的三维图形标 在虚拟现实领域有广泛的应用.但在 OpenGL 中不易构建比较复杂的三维模型, 比较复杂的三维 模型一般在专业的三维工具软件中构建, AutoCAD, 3Dmax, SolidWorks. 但是这些模型必须被转 化为OpenGL 可以读取的格式 DXF格式、 3DS 格式和 STL 格式等. 但3DS 数据格式的文件 只能保存和转换几何信息, 色彩、材质等信息可能 会在转换时丢失 DXF格式文件是文本模式, 用它很容易读取和编辑数据,但是 DXF 文件中缺 失材质信息. 当利用OpenGL 在应用窗口渲染图形 不得不实时计算纹理坐标,这些无疑会大大降 低图形的显示效果. STL 文件表示立体图形的方 式较为简单, 对于一个独立的立体图形, 它用许 多空间小三角面对其进行逼近, 通过记录各小三 机械与电子2010(12) 角面的顶点和法向矢量信息来间接描述原来的立 体图形 本文把由SolidWorks建立的三维模型, 先转换 为ST 文件,再由OpenGL 对读入的三维模型进行 真实感渲染、视角变换并实现动画仿真, 克服了 DXF 格式、3DF 格式文件固有的缺陷, 也解决了以 往只能由DXF 格式、3DF 格式文件转化为OpenGL 可以读取的文件的问题. 运动仿真的实现由于要实现对仿真系统的交互式控制, 使其能 够产生运动, 因此不能对模型进行整体转换, 而是根 据模型的运动轨迹, 将其拆分, 各个部分分别转换 再到OpenGL中重构三维模型. 仿真系统和软件模型的转换接口软件需要满足 个条件:在转换接口软件中能够全方位观察模型; 模型的坐标系统能够随模型一起被装换到仿真系统 本文利用Deep Explorat ion 作为转换接口软 cpp文件, 对STL 文件的读取和显示可以不必考虑 ST 文件的内部结构. 利用该软件得到的数据文件, 对模型的属性, 如模型点面信息、材质信息和法向量信息进行了较 好的封装, 结构清晰, 可读性强. 另外, 生成的文件中 提供了OpenGL 显示列表工具, 用户在将该文件加 入到系统工程中后, 进行少量的修改工作, 调用该列 表就可以实现系统环境下模型的显示, 简单方便 实现机械系统运动仿真的流程如图1所示. 局部坐标系的添加局部坐标系是绘制物体时的坐标系, 它以物体 的中心为坐标原点, 物体的旋转或平移等操作都是 围绕局部坐标系进行的. 当物体模型进行旋转或平 移等操作时, 局部坐标系也执行相应的旋转或平移 操作. 因此, 局部坐标系又称为物体坐标系. 一个复杂的机械系统是由很多零件组成的. 行动画仿真时,把每一个或几个具有相同运动轨迹 的零件当作一个独立的运动单元. 对每一个运动单 元添加一个局部坐标系, 并通过 OpenGL 的坐标变 换来控制该运动单元的运动. 将每一个运动单元的 运动有机联系起来, 便构成了整个机械系统的运动. 在SolidWorks 中对每一个运动单元添加局部 坐标系后, 再另存为 STL 格式的文件, 每一个零件 文件均会转换为一个ST 文件.