- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OpenGL实现3D模型的交互控制
1 3DS文件介绍
3DS文件存储了模型的材质信息和几何信息,材质信息主 要包括材质的名称,材质的纹理贴图所对应的文件名以及材质 的颜色等;几何信息主要包括顶点的数目,每个顶点的坐标,三 角面的数目,每个三角面上3个顶点的索引,此三角面是否可见等。
3DS文件由许多块组成,每个块包括信息类别和下一个块的相对位置。块的信息类别用ID表示,它描述了该块的数据信息。下一个块的相对位置指出了下一个块相对于该块起始位置的偏移字节数。在块结构中,始终用前2个字节保存D号,接 下来的4个字节保存块的长度,块的实际内容则用(块长度)6个字节保存。块的内容又可能包含子块。
在OpenGL中读入3DS文件的模型的方法有很多,由于本 文的程序是在VC + +环境下开发的,所以采用了编写一个类来 加载3DS文件的方法。这样的类很多书籍和网站都有提供,只 需进行简单的修改就可以使用,比如修改模型的位置信息以实现模型的移动,增加模型的旋转经度和纬度信息以实现模型的旋转。
1 OpenGL的交互技术
在虚拟装机系统中,要求与场景本身进行更多的交互操作,这种交互除了菜单和对话框实现外,在很多情况下是用鼠标来 进行的。OperGL的一大功能就是提供了实现交互技术的机制。 OperGL的交互技术是通过选择、拾取和反馈操作来实现的。
2 1选择
选择允许在窗口内部的某个位置用鼠标进行点击,并确定它所点击的是哪个物体。选择是OpenGL的一种操作模式,选 择模式不会改变帧缓存区的内容,退出选择模式时,OperGL返 回与视景体相交的图元列表,它列出了位于视景体内或与视景体相交的图元,每个图元产生一个选择命中的记录,对应名称堆 栈中的当前内容。
绘制模式 进入选择模式前,调用函数gR endeM ode (),其原型为:gRendeMode(GLmum mode)。控制应用程序当 前所处的模式,即绘图、选择和反馈模式,相应的mode的取值为 GL—RENDER、GL—SELECT或 GL—FEEDBACK。
?创建名称堆栈 名称堆栈的内容可以用来确定用户选 择的物体,所以它在选择操作中具有非常重要的作用。首先,用 gUnitNaneS()函数初始化名称堆栈,即清除名称堆栈。然后,在 发出各模型绘图命???的同时,用gPuthName()函数将物体名称 压入堆栈。这名称是整数,OpenGL可以包含64个名称。
操作堆栈的函数有:
gIPushName()函数,将名称压入堆栈;
gPcpNam e()函数,将名称从堆栈中弹出;
gLoadName()函数,用不同的名称替换最顶层堆栈的名称。
/淀义模型数组 //3D模型定义 /第一个模型
/給第一个三维模型命名
?命中记录命中记录即位于选择物体内或与选择物体 相交图元的选中标志。在选择模式下,操纵名称堆栈或调用gt RendeMode()函数,OpenGL将命中记录写入选择数组中。对 于由多个图元构成的物体,构成物体的各个图元共享同一个名称。
每一个命中记录是由三个部分组成:①当命中记录时,名称 堆栈中的名称数目;②自上一个命中记录以来,所有与物体相交 的图元顶点的最大和最小窗口坐标Z值;③命中发生时,名称堆 栈中的内容,最底层的元素在堆栈的最顶层。
在OpenGL中使用选择机制,必须执行下面几个步骤:
(1) 用gLSeledBuffcr()命令定义用来返回命中记录的数组;
(2) 调用gRemieM(xle(GL_SELECT)函数进入选择模式;
(3) 用gUniNameS()初始化名称堆栈,即清空名称堆栈,然 后调用gIPushName()命令将名称压入堆栈;
(4) 定义选择使用的选择题,它通常与最初用来绘制场景 的视景体不同,因此有可能需要用gPushMatrk()和gIPopiatrk ()命令保存并恢复当前视景体的状态;
(5) 交替发出图元绘制命令和操纵名称堆栈命令gLoad- Name(),以便每一个图元均被指定一个合适的名字。
(6) 终止选择模式,处理返回的选择数据,即命中记录。
2 2拾取
拾取是选择模式的一种扩展,通常用它来拾取光标附近的 物体。为了用拾取操作实现以上功能,进入选择模式后,用指定 的拾取矩阵同投影矩阵一起把绘图限制在一个小的视口区域 内,通常在光标附近,此时在光标附近的物体就会产生选择命中。使用这种方式,就可以确定哪个物体绘制在光标附近。
拾取操作和选择操作之间的主要区别是:
(1) 三维模型位置的变化量
拾取操作通常由输入装置激发,例如可以用鼠标的点 击来激发;
(2) 维模型
可以使用实用库中的函数gluPickMatrk(),把指定的 投影矩阵加到
您可能关注的文档
- NGW型行星齿轮传动及优化设计8.doc
- NikonViewNX2Picturecontrolutility和CaptureNX2应用优化校准及批量转JPG教程.doc
- NI技术高精度仿真多址分布式太阳能电场监测系统.doc
- NI技术使用NIPXISCXI和LabVIEW升级现有的铁轨和枕木疲劳测试系统.doc
- NIKON镜头总体介绍.doc
- MP3智能音乐播放系统6区说明书内页.doc
- Nnlrag会计基础之会计分录会计公式及常识.doc
- NO-VIP盲埋孔板流程制作指引Rev03.doc
- no35实验用双缝干涉测光的波长.doc
- NO21生态系统的结构.doc
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
最近下载
- 多发性硬化症免疫病理学.pptx VIP
- 教科版小学科学四年级上册 一天的食物 教案 教学设计.doc
- 人教统编版语文四年级上册 第三单元 双减分层作业设计 案例样例.docx
- 《中国文学理论批评史》第一章 先秦两汉文学理论批评60.pptx VIP
- 国家开放大学电大《计算机应用基础(本) 》 终结性考试试题答案(完整版).pptx
- 【西门子】SIMATIC HMI IPC477C _ HMI IPC477C PRO.pdf
- 2024年江苏省泰州市中考数学试题卷(含答案).docx
- 初中语文新部编版七年级上册第一单元核心素养教案(2024秋).doc
- 18.富饶的西沙群岛 ( 课件)(共17张PPT).ppt.pptx VIP
- 胃肠造影规范操作归纳.ppt
文档评论(0)