毕业论文人体三维骨骼运动仿真研究.doc
《毕业论文人体三维骨骼运动仿真研究.doc》由会员分享,可在线阅读,更多相关《毕业论文人体三维骨骼运动仿真研究.doc(35页珍藏版)》请在三一办公上搜索。
1、1 引言OpenGL作为一种三维工具软件包,在交互式三维图形建模能力和编程方面具有无可比拟的优越性。OpenGL是SGI公司开发的,可独立?操作系统和硬件环境的三维图形库,已在各种工作站和高档微机中运行,由于其强大的图形功能和跨平台的能力,已成为事实上的图形标准,被人们广泛应用于科学可视化、实体造型、CAD/CAM、模拟仿真等诸多领域。在医学应用中,人体骨骼的使用能使医生和病人之间有一个良好的沟通,使病人能知道自己的病情,能很好的配合医生进行有效的治疗;在实践教学中,通过对人体骨骼的展示,教师能很好的讲解各个骨骼关节之间的运动关系,从而使学生对骨骼和骨骼关节之间的运动关系有更深刻的理解。课题来
2、源于徐州翰林高科技公司,该公司主要从事医学图像处理软件研究与开发。课题“人体三维骨骼运动仿真研究”的目的是利用三维仿真技术,利用骨骼模型进行编程和控制展示人体骨骼及运动,主要包括三维建模技术及实现,人体运动方式设计等.课题是以visual C+和OpenGL为编程环境来仿真人体骨骼运动,通过对人体主要骨骼和骨骼之间的运动关系来展示人体的奇妙之处。2 需求分析2.1功能需求分析本设计是根据徐州翰林软件公司的要求,整理出人体骨骼的运动过程,并对该过程进行了细心的分析得出了如下的需求分析。 通过对徐州翰林软件公司的要求分析,得出系统应具有的功能如下:2.1.1全景视图1)点头:当用户想了解点头的具体
3、细节时,通过键盘或鼠标操作能使骨骼做点头动作。2)摇头:当用户想了解摇头运动的具体细节时,通过键盘或鼠标操作使骨骼做摇头运动。3)抬左臂:当用户想了解左臂运动的具体细节时,通过键盘或鼠标操作使骨骼做抬左臂运动。4)抬左肘:当用户想了解左肘运动的具体细节时,通过键盘或鼠标操作使骨骼做抬左肘运动。5)抬右臂:当用户想了解右臂的具体细节时,通过键盘或鼠标操作使骨骼做抬右臂运动。6)抬右肘:当用户想了解右肘运动的具体细节时,通过键盘或鼠标操作使骨骼做抬右肘运动。7)抬左大腿:当用户想了解左大腿运动的具体细节时,通过键盘或鼠标操作使骨骼做抬左大腿运动。8)抬左小腿:当用户想了解左小腿运动的具体细节时,通
4、过键盘或鼠标操作使骨骼做抬左小腿运动。9)抬右大腿:当用户想了解右大腿运动的具体细节时,通过键盘或鼠标操作使骨骼做抬右大腿运动。10)抬右小腿:当用户想了解右小腿运动的具体细节时,通过键盘或鼠标操作使骨骼做抬右小腿运动。11)旋转:当用户想了解旋转的具体细节时,通过键盘或鼠标操作使整个骨骼做旋转运动。12)走步:当用户想了解走步的具体细节时,通过键盘操作使骨骼进行走步运动。13)放大:当用户想了解放大的具体细节时,通过鼠标操作来放大骨骼。2.1.2侧顶视图1)点头:当用户想了解点头运动的具体细节时,通过键盘或鼠标操作能使骨骼做点头动作。2)摇头:当用户想了解摇头运动的具体细节时,通过键盘或鼠标
5、操作使骨骼做摇头运动。3)抬左臂:当用户想了解左臂运动的具体细节时,通过键盘或鼠标操作使骨骼做抬左臂运动。4)抬左肘:当用户想了解左肘运动的具体细节时,通过键盘或鼠标操作使骨骼做抬左肘运动。5)抬右臂:当用户想了解右臂运动的具体细节时,通过键盘或鼠标操作使骨骼做抬右臂运动。6)抬右肘:当用户想了解右肘运动的具体细节时,通过键盘或鼠标操作使骨骼做抬右肘运动。7)抬左大腿:当用户想了解左大腿运动的具体细节时,通过键盘或鼠标操作使骨骼做抬左大腿运动。8)抬左小腿:当用户想了解左小腿运动的具体细节时,通过键盘或鼠标操作使骨骼做抬左小腿运动。9)抬右大腿:当用户想了解右大腿运动的具体细节时,通过键盘或鼠
6、标操作使骨骼做抬右大腿运动。10)抬右小腿:当用户想了解右小腿运动的具体细节时,通过键盘或鼠标操作使骨骼做抬右小腿运动。11)旋转:当用户想了解旋转的具体细节时,通过键盘或鼠标操作使整个骨骼做旋转运动。2.2性能需求分析 正确性:根据人体骨骼系统的运动设计软件,运动中的每一个操作在系统中都必须有所体现,保证程序的正确性。3概要设计3.1模型格式选择保存三维图形数据的方法多种多样,有参数曲线法、CSG描述法等等,但常用的保存三维模型的方法是多边形逼近法,即用许多小多边形拼出模型的外观,文件中保存这些多边形的信息。由于OpenGL中提供了最基本的由多边形构造三维模型的方法,因此从三维图形数据文件中
7、读取模型数据并在OpenGL中绘制就很容易。3ds模型数据格式和obj模型数据格式都是三维图形数据格式,3ds模型数据格式是目前大多数图形数据素材库中保存三维图形数据的最常用格式。3ds文件由许多块组成,每个块首先描述其后的信息类别,即该块是如何组成的,块的信息类别是用ID来标识的,块还包含了下一个块的相对位置信息,其具体信息附录A。 Wavefront 的obj模型文件结构非常简单。首先,它是由一些文本行组成的,每一行文本都是由一个关键字开头,紧跟着后面是该关键字所表示含义的具体参数,obj文件不仅可以定义多边形模型,也可以定义自由曲面模型。多边形模型就是可以用点、线、面等基本元素构造的模型
8、,而自由曲面模型是指使用参数曲面造型定义的模型。Obj模型数据格式的详细信息见附录A。 本系统是采取Wavefront的obj格式。 3.2模型选择 从Poser 5.0中导出人体骨骼模型,有成人和小孩的骨骼模型,有男性和女性模型。本系统采用的是成人男性的骨骼模型。将其按3ds格式从Poser 5.0中导出,然后通过三维软件quick3d将3ds格式转换为obj格式(三维软件quick3d的介绍和使用方法见附录B)。3.3单文档与控制台的选择 用控制台来编程需要使用OpenGL的辅助库函数,则其通用性较差且一些控制比较困难。用单文档则很容易解决这些问题。单文档下的OpenGL编程环境设置请见附
9、录C.3.4菜单设计菜单设计的好坏会直接影响到用户操作的难易程度,从而影响到软件的推广使用。菜单设计的简单明了会受到用户的欢迎。菜单中包括退出应用程序、开头侧顶视图、点头、摇头、抬手、抬腿、旋转等操作。3.5工具栏设计 制作工具栏的目的是:通过单击就能访问常用命令,工具栏按钮是菜单命令的快捷方式,但是它也实现了菜单中没有的命令3.6状态栏设计 状态栏不仅能显示菜单操作命令的帮助信息,还可以划分为一个或多个区域,它们分别对应着窗格、面板或指示符。可以单独设置每个窗格的文本,这样,一个窗格可以显示文档的当前行、页号,可以显示当前Caps Lock和Num Lock的状态,还可以包含进度控件,以显示
10、如保存、加载文档等较长的操作中所完成任务的比例。3.7弹出菜单设计 弹出菜单是主菜单的快捷方式,可以很方便地进行操作,包括一些主要操作,如:开关侧顶视图,播放等操作。3.8放大方式的选择 是用OpenGL中的选择与拾取机制进行局部放大,还是用OpenGL中的函数进行全体放大。要使用OpenGL的选择与拾取机制,首先要将场景绘制到帧缓存中,然后进入选择模式并重新绘制场景。进入选择模式后,帧缓存的内容将不会发生变化,直到退出该模式。退出选择模式时,OpenGL将返回一系列与视景体相交的图元,与视景体相交的每个图元都将导致一次选择命中。进行局部放大时会丧失人体骨骼的整体性。进行全体放大时,需用到Op
11、enGL中的glScaled()函数,能较好的展示人体骨骼的完整性。本系统采用OpenGL中的glScaled()函数进行全体放大。3.9人体骨骼的基本控制 人体骨骼的基本控制包括点头、摇头、抬左手、抬右手、抬左腿、抬右腿等等。3.10人体骨骼走步运动 当进入走步模式时,为走步布置场景,并进行走步运动。3.11拖放操作 按住鼠标左键不放,拖动鼠标,人体骨骼则随着鼠标的移动进行相应的旋转。 4详细设计4.1各个骨骼部分介绍 a)头骨骼(如图4.1): 图4.2身体图4.1头 b) 左大腿骨骼(如图4.3)c) 左小腿骨骼(如图4.4) 图4.4左小腿图4.3左大腿d) 左脚骨骼(如图4.5)e)
12、 右大腿骨骼(如图4.6) 图4.6右大腿图4.5左脚f) 右小腿骨骼(如图4.7)g) 右脚骨骼(如图4.8)图4.7右小腿图4.8右脚 h) 左臂骨骼(如图4.9)i) 左肘骨骼(如图4.10)图4.10右小腿图4.9左臂 j) 左手骨骼(如图4.11)k) 右臂骨骼(如图4.12) 图4.12右臂图4.11左手l) 右肘骨骼(如图4.13)m) 右手骨骼(如图4.14) 图4.13右肘图4.14右手4.2菜单详细设计 主菜单分为:文件子菜单,控制子菜单,窗口子菜单,帮助子菜单。4.2.1文件子菜单文件子菜单有“退出”命令:关闭应用程序并释放绘图描述表。4.2.2控制子菜单控制子菜单由抬手
13、子菜单,抬腿子菜单,头控制子菜单,旋转子菜单,移动子菜单,“播放”命令和“复原”命令组成。a)抬手子菜单由“抬左手”和“抬右手”命令组成。“抬左手”:由小键盘的数字键1来控制抬左臂,按一下则左臂向上旋转一度,左肘也向上旋转一度,当到达45度时则从原路逐渐返回到正常状态。“抬右手”:由小键盘的数字键2来控制抬右臂,按一下则右臂向上旋转一度,左肘也向上旋转一度,当到到45度时则从原路逐渐返回到正常状态。b)抬腿子菜单由“抬左腿”和“抬右腿”命令组成。“抬左腿”:由小键盘的数字键3来控制抬左腿,按一下则左大腿向上旋转一度,而左小腿向下旋转一度,当达到45度时则从原路逐渐返回到正常状态。“抬右腿”:由
14、小键盘的数字键4来控制抬右腿,按一下则右大腿向上旋转一度,而右小腿向下旋转一度,当达到45度进则从原路逐渐返回到正常状态。c)头控制子菜单由“点头”和“摇头”命令组成。“点头”:由小键盘的数字键5来控制点头,按一下则头向下旋转一度,当到达45度时则从原路逐渐返回到正常状态。“摇头”:由小键盘的数字键6来控制摇头,按一下则头向左或向右旋转一度,当向左或向右达45度时则从原路逐渐返回到正常状态。d)旋转子菜单由“向左”、“向右”、“向上”和“向下”命令组成。“向左”:由向左方向键控制,按一下则整个人体骨骼向左旋转一度,为了更好的观察,没有对此度数设限制。“向右”:由向右方向键控制,按一下则整个人体
15、骨骼向右旋转一度,为了更好的观察,没有对此度数设限制。“向上”:由向上方向键控制,按一下则整个人体骨骼向上旋转一度,为了更好的观察,没有对此度数设限制。e)移动子菜单由“向左”、“向右”、“向上”和“向下”命令组成。“向左”:由字母“a”或“A”来控制,按一下则整个人体骨骼向左平移一段距离,当平移到一定程度时,人体骨骼会从原路逐渐返回到正常状态。“向右”:由字母“d”或“D“来控制,按一下则整个人体骨骼向右平移一段距离,当平移到一定程度时,人体骨骼会从原路逐渐返回到正常状态。“向上”:由字母“w”或“W”来控制,按一下则整个人体骨骼向上平移一段距离,当平移到一定程度时,人体骨骼会从原路逐渐返回
16、到正常状态。“向下”:由字母“s”或“S”来控制,按一下则整个人体骨骼向下平移一段距离,当平移到一定程度时,人体骨骼会从原路逐渐返回到正常状态。f)“播放”命令:由“p”或“P”来控制,按一下则启动定时器进行人体骨骼的自动旋转运动,再按一下则关闭定时器,人体骨骼停止旋转。g)“复原”命令:由“r”或“R”来控制,按一下则恢复到刚启动时的最初状态。4.2.3窗口子菜单:窗口子菜单有“开侧顶视图”命令,点击一下则打开侧视图,再点击一下则关闭侧顶视图。4.2.4帮助子菜单帮助子菜单由“操作说明”和“关于毕业设计”命令组成。a)“操作说明”:介绍了一些基本操作,方便用户操作。 b)“关于毕业设计”:介
17、绍本应用程序的一些基本信息。4.3工具栏详细设计工具栏主要由两个按钮组成:“播放”和“?”。4.3.1“播放”命令由“p”或“P”来控制,按一下则启动定时器进行人体骨骼的自动旋转运动,再按一下则关闭定时器,人体骨骼停止旋转。4.3.2 “?”命令调用主菜单的帮助子菜单“操作说明”,介绍了一些基本操作,方便用户使用4.4状态栏详细设计状态栏由三个窗格组成:显示常用命令状态,显示大小写的状态,显示播放状态。4.4.1显示常用命令状态当鼠标放在所要点击的命令上时,该窗格会显示这个命令的一些提示信息,用户根据这些提示信息能很快地熟悉本系统。4.4.2显示大小写状态当大小写键处于开的状态时,则在该窗格上
18、显示其状态;处于关的状态时,则不显示。4.4.3显示播放状态当处于播放状态时,在该窗格显示其播放状态;处于暂停状态时则不显示其状态。4.5弹出菜单详细设计弹出菜单由一般控制子菜单、开关侧顶视图子菜单、“复原”命令和“播放”命令组成。4.5.1一般控制子菜单一般控制子菜单由抬手子菜单、抬腿子菜单、头控制子菜单、旋转子菜单和移动子菜单组成。a)抬手子菜单由“抬左手”命令、“抬右手”命令组成。a1)“抬左手”命令:由小键盘的数字键1来控制抬左臂,按一下则左臂向上旋转一度,左肘也向上旋转一度,当达到45度时则从原路逐渐返回。a2)“抬右手”命令:由小键盘的数字键2来控制抬右臂,按一下则右臂向上旋转一度
19、,右肘也向上旋转一度,当达到45度时则从原路逐渐返回。b)抬腿子菜单由“抬左腿”命令、“抬右腿”命令组成。b1)“抬左腿”命令:由小键盘的数字键3来控制抬左腿,按一下则左大腿向上旋转度,而左小腿则向下旋转一度,当达到45度时则从原路逐渐返回。b2)“抬右腿”命令:由小键盘的数字键4来控制抬右腿,按一下则右大腿向上旋转一度,而右小腿则向下旋转一度,当达到45度时则从原路逐渐返回。c)头控制子菜单由“点头”命令和“摇头”组成。c1)“点头”命令:由小键盘的数字键5来控制点头,按一下则头向下旋转一度,当达到45度时则从原路逐渐返回。c2)“摇头”命令:由小键盘的数字键6来控制摇头,按一下则头向左或向
20、右旋转一度,当向左或向右达到45度时则从原路返回。d)旋转子菜单由“向左”命令、“向右”命令、“向上”命令和“向下”命令组成。d1)“向左”命令:由向左方向键来控制向左转,按一下则人体骨骼以Z轴为对称轴向左旋转,为了更好的观察,对此命令度数没有限制。d2)“向右”命令:由向右方向键来控制向右转,按一下则人体骨骼以Z轴为对称轴向右旋转,为了更好的观察,对此命令度数没有限制。d3)“向上”命令:由向上方向键来控制向上转,按一下则人体骨骼以X轴为对称轴向上旋转,为了更好的观察,对此命令度数没有限制。d4)“向下”命令:由向下方向键来控制向下转,按一下则人体骨骼能X轴为对称轴向下旋转,为了更好的观察,
21、对此命令度数没有限制。e)移动子菜单由“向左”命令、“向右”命令、“向上”命令和“向下”命令组成。e1)“向左”命令:由“a”或“A”来控制向左平移,按一下则整个人体骨骼向左平移一定的距离。当到达一定的次数时,人体骨骼会恢复到开始状态。e2)“向右”命令:由“d”或“D”来控制向右平移,按一下则人体骨骼向右平移一定的距离。当到过一定次数时,人体骨骼会恢复到开始状态。e3)“向上”命令:由“w”或“W”来控制向上平移,按一下则人体骨骼向上平移一定的距离。当达到一定次数时,人体骨骼会恢复到开始状态。e4)“向下”命令:由“s”或“S”来控制向下平移,按一下则人体骨骼向下平移一定的距离。当达到一定次
22、数时,人体骨骼会恢复到开始状态。4.5.2开关侧顶视图子菜单开关侧顶视图子菜单由“开侧顶视图”命令和“关侧顶视图”命令组成。a)“开侧顶视图”命令:打开侧顶视图,能让用户能比较清楚地知道人体骨骼的状态。如图4.15所示。b)“关侧顶视图”命令:关闭侧顶视图,让用户能在此视图下进行放大、平移操作,比较直观。如图4.16所示。图4.16开侧顶视图图4.15关侧顶视图4.5.3“播放”命令当点击 “播放”命令时,启动定时器进行人体骨骼以Z轴为对称轴进行旋转,产生动画效果。当再次点击“播放”命令时,关闭定时器,人体骨骼停止旋转。4.5.4“复原”命令当点击“复原”命令时,则将人体骨骼模型的状态设为启动
23、的最初状态。不会对侧顶视图状态产生影响。最初状态:头、腿、手、旋转、移动等都设为起始状态。4.6放大操作使用glScaled()对模型进行整体放大,使放大后的模型具有整体感,点击鼠标左键一次,整个模型就在原来的基础上放大2倍,当放大到8倍后,再将模型还原为起始状态。如图4.17和图4.18图4.18放大后状态图4.17起始状态当放大后的人体骨骼超出屏幕显示范围,可以使用平移来调整模型的位置,使用户清楚地观察到想要显示的位置。为了放大后的观察效果,只能在全景视图下进行放大操作,而不能在侧顶视图下进行放大操作。图4.19是在全景视图下的放大图像;图4.20是在侧顶视图下的放大图像。图4.20侧顶视
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 人体 三维 骨骼 运动 仿真 研究

链接地址:https://www.31ppt.com/p-3972303.html