虚拟现实基础及可视化设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
虚拟现实基础及可视化设计

在本应用实例中,飞机、航天飞机、塔架等都是通过导入3DS模型来实现的, 3DS文件是通过3DMAX软件建模后导出的文件格式,关于这种文件的格式和读取在前面的章节中已经进行了描述和实现,因而在此我们只对3DS调用类中的一些主要函数进行一些解释。 我们在此程序中主要设计了一个3DS的调用类CLoad3DS,其主要有以下两个: void CLoad3DS ::Init(char *filename,int j); //实现3DS模型的导入 void CLoad3DS ::show3ds(int j0,float tx, float ty,float tz,float size); //显示3DS模型 12.3.2 3DS模型的导入 12.3.3 地形的生成 本程序中地形高程数据的获取主要通过读取等高地形图的BMP文件而自动获得的。因此,应该首先读出BMP文件中需要的数据,然后根据一定的映射关系将数据映射到地形的高程上。 12.3.4 摄像机参数的定义 本应用程序主要通过摄像机的移动来实现场景的浏览,摄像机的参数定义如下: //摄像机参数定义 float speed; //漫游速度 float g_eye [3]; //观察者位置(即摄像机的位置) float g_look[3]; //观察点 float rad_xz; //绕视点左右转动度数(弧度) float g_Angle; //绕视点左右转动度数 float g_elev; //俯仰角 float g_gao; //视点高度 通过改变摄像机的以上参数即可实现在场景中的漫游。 12.3.5 场景的初始化 在场景的初始化中,主要进行了以下几部分内容的操作: (1)摄像机参数的初始化 (2)3DS模型的导入 (3)纹理图片数据的读入及参数设置等 12.3.6 键盘交互方式 在程序中用户使用键盘的交互方式有:使用UP键和DOWM键可以将摄像机移前或移后,使用LEFT键和RIGHT键可以将摄像机绕Y轴旋转,使用PAGE UP键和PAGE DOWM键可以控制摄像机的俯仰角,D键和F键控制摄像机的左右移动等。 在程序中可以利用Class Wizard添加键盘的WM_KEYDOWM的消息响应函数。 12.3.7 场景的绘制和漫游实现 整个场景的绘制是整个程序的核心,主要包括静态场景和动态场景两部分内容的绘制,其源代码可参考教材(略)。 * * * * * * * * * * * * 2.重复和截取纹理 纹理坐标可以超出(0, 1)范围,并且在纹理映射过程中对这些坐标可以进行截取或重复。例如,如果绘制一个大飞机,其纹理坐标在两个方向上的范围为[0.0,10.0],使用重复纹理,可以在屏幕上得到粘贴在一起的纹理100个拷贝。对于大多数复制纹理的使用,在纹理顶部的纹理单元应该和底部的纹理单元相匹配,在左侧的纹理单元也应该和右侧的纹理单元相匹配。 截取纹理坐标的另外一种可能性是:将任何大于1.0的值设置为1.0,将任何小于0.0的值设置为0.0。如果在应用中需要在一个大曲面上绘制一个纹理的单个拷贝,截取就很有用。 函数glTexParameter()的原型如下: Void glTexParameter{if}(GLenum target,GLenum pname,TYPE param) Void glTexParameter{if}v(GLenum target,GLenum pname,TYPE *param) 功能:该函数控制纹理映射。 参数说明: Target:可以是GL_TEXTURE_1D、GL_TEXTURE_2D或GL_TEXTURE_3D分别表示一维、二维或三维纹理。 pname和param的可能值如下页表所示。 glTexParameter()的参数 参数 值 GL_TEXTURE_WRAP_S GL_CLIMP,GL_CLIMP_TO_EDGE,GL_REPEAT GL_TEXTURE_WRAP_T GL_CLIMP,GL_CLIMP_TO_EDGE,GL_REPEAT GL_TEXTURE_WRAP_R GL_CLIMP,GL_CLIMP_TO_EDGE,GL_REPEAT GL_TEXTURE_MAG_FILTER GL_NEAREST,GL_LINEAR GL_TEXTURE_MIN_FILTER GL_NEAREST,GL_LINEAR, GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR, GL_L

文档评论(0)

pangzilva + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档