基于四元数的坦克炮塔旋转控制方法的研究及实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:s04325102
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:传统的欧拉角插值方案在解决三维物体的旋转上应用范围有限,且易生成错误路径,而四元数样条插值以其快捷、准确的特点正在受到越来越多的关注。本文以Unity3D作为开发平台,研究了四元数的发展,设计了一套基于四元数样条的坦克炮塔旋转与瞄准方案,最终实现了在移动端通过触摸屏操控坦克炮塔。实验结果表明,四元数样条插值较常规欧拉角插值而言描述准确、变化流畅,可以使三维物体的旋转在视觉上更加平滑、真实。
  关键词:计算几何;Unity3D;四元数样条;三维旋转;
  中图分类号:TP319 文献标识码:A 文章编号:1009-3044(2016)34-0237-02
  Abstract: The traditional scheme that Euler Angle interpolation can cover limited situations when dealing with the rotation of three-dimensional objects. However, the Quaternion Spherical and Quadrangle interpolation are drawing attention for its quickness and accuracy. Base on a development platform named Unity3D, this paper studies the development of the quaternion, and designs a scheme about tank’s turret rotating and targeting based on Quaternion, and finally achieved a project that can control tank’s turret through the touch screen with a mobile terminal. The experimental result shows that the Quaternion Spherical and Quadrangle interpolation can make the rotation of three-dimensional objects looks more smoothly and real thanks to its satisfactory precise which the Euler Angle cannot match.
  Key words: Computing geometry; Unity3D; Quaternion Splines; 3D rotation
  1 概述
  在三维图形系统的开发过程中,描述模型的旋转状态成了计算机辅助几何设计的一项重要研究领域。随着相关需求愈发地旺盛,先后出现了欧拉角、矩阵、四元数等方式,三种方式各有利弊。欧拉角由于其易于理解的特性而被较早地使用,但由于容易导致路径错误、自由度减少等缺陷而较少用于底层状态控制。矩阵是目前计算机引擎底部使用较多的表达方法,但易导致矩阵蠕变,且使用不够直观,因此在许多软件中都被隐藏在其他表达方式下[1]。四元数由于其易插值、增量旋转速度快等特性而被广泛使用,在许多软件中均得到丰富的支持。
  本次实验通过目前较为流行的开发平台Unity3D进行坦克炮塔的旋转模拟操作,通过对比几种方法的特性后使用四元数作为表达方式,并通过插值优化了炮塔旋转时视觉效果,使之更加流畅。
  2 关键技术分析
  2.1四元数
  定义:四元数是一种三维空间中描述复数的表达方式,由四个元素,即一个实部和三个虚部组成,如下所示:
  3 坦克炮塔旋转及平滑处理实现
  3.1旋转
  本次实验使用Unity3D打包生成的Android平台应用,其输入方式为手指在触摸屏的移动。手指的移动可以由一个二维数组(x,y)组成,其中x表示横向移动距离,y表示纵向移动距离。应用到坦克炮塔时可以认为x表示炮塔的横向旋转幅度,y表示炮口的纵向旋转幅度。虽然可以直接用于欧拉角体系,但其中产生的万向节死锁将导致生成错误的更长的路径,从而导致在瞄准时浪费宝贵的时间,因此使用四元数来描述坦克炮塔,并利用乘法将多个维度的旋转综合为单个旋转序列,降低操作复杂度。
  3.2平滑处理
  在使用常规欧拉角解决方案时,火炮会在瞄准较远目标时产生剧烈的颤抖,因此需要较高的精确度以模拟炮口朝向在不同時刻的状态。
  实验中炮塔的初状态和末状态分别为此时炮塔的方位和期望方位,炮塔从初状态旋转至末状态往往需要一定的时间,所以需要在炮塔的旋转过程中采用样条插值。由于Unity3D已经提供了完善的四元数保存方案,所以数据在读取和传入时无需更改形式,通过FixedUpdate()函数调用机制[5],可以在每一定的时间间隔后进行一次采样,计算整个样条后插值改变炮塔方位。与欧拉角方案对比,可明显看出采用Squad样条的炮塔旋转更加平滑,并且在瞄准较远距离目标时不易发生颤抖现象,对坦克状态的模拟更加真实。实验效果如图所示。
  4 结论
  本文主要研究了基于四元数的三维物体旋转。借助Unity3D平台较为完善的四元数支持,完成了使用触摸屏指定任意目标的坦克炮塔旋转控制,并通过插值算法使状态之间的变化平滑流畅,通过四元数样条生成一条类似曲线替代了普通线性插值,从而大大减少了瞄准远处目标时带来的颤抖现象。
  四元数的诸多特性克服了传统欧拉角表示下的一些无法避免的问题,但本身也存在着误差累积、不易理解等缺陷。但是瑕不掩瑜,随着时间的发展和相关知识体系的完善,四元数无疑会在三维图形的表示和操作方面扩大使用范围。
  参考文献:
  [1] 吴彬,黄赞臻,郭雪峰,刘向群.Unity 4.X从入门到精通[M].中国铁道出版社,2013.
  [2] Millington,I.游戏物理引擎开发[M];徐明亮,李强,宋伟,译.北京:清华大学出版社,2013.
  [3] 刘俊峰,三维转动的四元数表述[J].大学物理,2004,23(4):39-43.
  [4] 关东东,关华勇,傅颖.一种3维动画中间帧非线性插值算法[J].中国图像图形学报,2006, 11(12):1820-1826.
  [5] 刘钢,孙文涛.Unity官方案例精讲[M].北京:中国铁道出版社,2015.
其他文献
针对《VB程序设计》课程现有教学中存在的不合理问题,为了改善VB程序设计的教学效果,提高教学质量,对VB课程进行建设与实践。阐述了教学内容与教学方法、实验内容与实践教学
以形状相对简单的单工序锻件为研究对象,以同时获得材料消耗最小和变形程度最均匀的终锻件为优化目标,对锻造过程毛坯形状进行多目标优化设计的研究.给出了单工序锻件形状优
摘要:利用现有师资、仪器设备、环境条件资源,实施计算机实验室开放,已成为大学生提高计算机实验课程实效、拓展计算机专业技能、开展计算机创新研究训练等实训教学重要途径。在实践中由于现有条件所限,实验室开放存在着计算机日常维护管理工作量和成本的增加、现有计算机硬软件和环境建设的局限、开放管理过程学生的管理存在的困难、指导教师素质和指导水平有待提高等一系列问题,为更好地满足新形势下计算机开放实训教学的要求
目的:观察烧伤创面渗液中白细胞介素12(IL-12)与创面愈合的关系。方法:在换药时采用海绵吸取创面渗液,用免疫酶联方法定量检测其中IL-12的含量。结果:在伤后初期的创面渗液中,IL-12含量为(95.33±39.77)pg/ml,与正常
2015年考试作弊已被列入我国刑法,考生的诚信和考场的纪律也越来越值得关注和重视。因此需要一种合理便捷的方法检查并防止作弊现象的发生。人与人之间的特征有很大区别,生物特征识别技术就是利用人类自身特征来证明身份,相对于传统考试验证身份,该技术有很大的优势和发展前景。本文讨论了4种常用的生物识别技术:指纹考试检测技术、虹膜考试检测技术、人脸考试检测技术、静脉考试检测技术。通过对这些技术的分析与研究,发
综合运用UG表达式法及UG二次开发工具UG/Open API,UG/Open MenuScript,UG/Open UIStyler和Visual C++ 6.0,根据叶片锻件的加工原理,开发叶片模锻参数化设计系统。在该系统中,叶