实验十三 3DS模型的显示new.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验十三 3DS模型的显示new

实验十三 3DS模型的显示 一、实验目的 实现3DS模型在程序中的显示与漫游 实现MDL模型在程序中的显示与漫游 了解3DS模型尺寸与OpenGL绘图坐标之间的关系 二、实验环境 硬件要求: PC机,主流配置,最好为独立显卡,显存512M以上。 软件环境: 操作系统:Windows XP。 语言开发工具:Microsoft Visual studio 2005/2008,Visual C++。 三、实验内容与要求: 要求: 实验所有步骤所生成的效果截图拷贝到实验报告文档里备查,并附上相应的代码。 WORD文档命名方式:学号姓名-实验序号-实验名称。 内容: 铲车模型显示程序 图1· 铲车模型程序效果 仔细研读程序,修改程序,将模型放入上次实验的场景中 在场景中尝试添加其他模型,并查看效果 1. 如果屏蔽深度检测代码,模型显示会怎样变化? 2. 模型的纹理对场景的效果会有影响吗? 提供的模型(参见实验文件夹3DSModel))#include 3ds.h #include texture.h 添加源程序 3ds.cpp, texture.cpp 主程序修改步骤 变量定义 C3DSModel draw3ds[5]; //有多少个模型,数组就定义多大 // 调入模型文件 一般设置init()中,例如 draw3ds[0].Load(“car.3ds”); draw3ds[1].Load(“house.3ds”); // 模型调入后,位置处在世界坐标系的原点 //显示 写在显示回调函数Display()中 glEnable(GL_LIGHTING); //启用光源 glEnable(GL_TEXTURE_2D); //启用纹理 // 通过图形变换使得模型原来的尺寸和世界坐标系得尺寸保持一致 图形变换glScalef(x,y,z); draw3ds[0].Render(); //显示模型1 draw3ds[1].Render(); //显示模型2 glDisable(GL_LIGHTING); //使用后关闭光源 glDisable(GL_TEXTURE_2D); //使用后关闭纹理 // 释放资源,释放内存 draw3ds[0].Release(); draw3ds[1].Release(); 6.注意:要启用深度检测 六、思考题 哪几个因素影响3DS模型的显示效果?如果想调用不同大小的模型都能在同一个程序正确地显示,程序应该怎样修改? 七、加分题 在网上查找模型或者自己设计模型,调入自己设计的带光照的3D新场景(须有OpenGL绘制的其他物体)中。 八、演示程序 1)3DSModel_chanche.exe //3DS模型铲车效果演示 九、附属程序 1.铲车模型显示主程序 3DS Model(带mp3音乐播放功能) #include stdafx.h #include windows.h #include math.h #include 3ds.h #include Texture.h #include glut.h #include fmod.h //// 音频库的头文件 #pragma comment(lib, fmodvc.lib) //音频库的静态链接库 FSOUND_STREAM *mp3back; void init(void); void Display(void); void Keyboard(int key,int x,int y); void draw3DSModel(); void Reshape(GLsizei w,GLsizei h); void myidle(); C3DSModel draw3ds[5]; //有多少个模型,数组就定义多大 float eyex=0,eyey=0,eyez=100,atx=0,aty=0,atz=0; float rotatex,rotatey; int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); char *argv[] = {hello , }; in

文档评论(0)

wyjy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档