




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualStudio的模拟三维空间飞行玩耍设计引言
第1绪论3D而且3D玩耍性更多元化更靠近真实世界,因此在玩耍产业中,3D玩耍己经渐渐ZD3D3D玩耍制作方面,欧美和日本的一些厂商都拥有自己成熟的3D玩耍引擎,他们2》等,甚至被奉为经典,市场潜力巨大。国内3D玩耍近年来也不乏精品,如长期以来3DOpenGL。在我所争论的工程中,承受Direct3D技术开发一个模拟三维空间的飞行玩耍设计。本课题以VisualStudio2023为开发平台,利用用于三维景观显示的图形相关函数库创立3D对象,在景观的三维显示中,使用三维空间的本地坐标系、世界坐标系、投影坐标系,空间的矢量、平面,3D变换所需的矢量和矩阵及几何体外表纹理显示设计:三维空间的生成和渲染、光线的运用、3D2D对象的调用和显示等等。本文主要介绍了用DirectX9.0进展计算机图像设计的技术,其中着重强调了在玩耍方面的应用。其中表达了Direot3D的根本原则和一些较高级的技术。WindowsAPIDirect3D3D图像编程的局部。3D编程中所需的一些数学学问,诸如三维空间中的矢量、平面,3D变换所需的矢量和矩阵运算学问等等;其次Direct3D与显示硬件的关系,Direct3D所扮演的角色,设备的分介绍了怎样在Direct3D中显示3D对象,3D技术的一些元素,诸如光,包括光源第三局部,着重表达了Direct3D中各种技术,主要是地形的渲染,包括实现景观的三维显示,飞行玩耍的设计过程等。争论背景Internet的普及,玩耍业迎来了蓬勃进展的时代。数年之前在486机器上运行的DOS玩耍已经让人玩的如痴如醉,兴奋不已。现在,由于CPU以及显卡等设备的飞速进展,为人们开发更加炫目多彩的玩耍供给了可能。一块高性能的显卡能在一秒钟内完成数千万个多边形的处理,高速CPU在显卡的关心下,所营造出的玩耍环境几乎可以乱真。鸣的景象。玩耍产业进展至今虽然只有30年左右的时间,却己经成为全球消遣SonyPlaystationZ、任天堂的GameCubeXB0X之间竞争趋于白热化,更使得整个玩耍产业成为众所瞩目的焦点。是最早的计算机玩耍之一。70年月的黄金岁月到来时,全世界的台式计算机和小型计算机流行着文本玩耍和粗糙的图片玩耍。在PC界,有史可考的最早一款PC玩耍是斯考特·亚1978TRS—80开启了今日近百亿霉运的电脑玩耍市场。16IBMPC及兼容机、Mac、AtariST等等,这时候,玩耍已经变得很好看,甚至有了一些3D的玩耍。但是,PC机仍旧落后于玩耍主机。90年月初期,IBMPC及兼容机渐渐成为主流,伴随着Windows3.0的公布MacintoshPC上进展玩耍、编程、1993IdSoftware发行了《DOOM》作为Wolfestein3D的换代产品,PC机开头成DOOM》的成功说明白微机上是可以做此,DirectX1.0为玩耍而生。进入21世纪,使用大型3D引擎架构的玩耍渐渐成为市场的主流,并以绚丽的画面和逼真的场景一次又一次的吸引着人们的目光。DirectX技术也成为当今图形处理及多媒体处理的主流技术,目前版本已经进展到了DirectX9.0c。3D玩耍性更多元化更靠近真实世界,因此在玩耍产业中,3D玩耍己经渐渐ZD3D化。3D玩耍过程中存在着诸如技术更快、程序人员与美工的协作、各厂3D硬件规格和特性不同、失败率高等风险,但不行否认,3D玩耍己是大势所趋。3D3D玩耍3D玩耍引擎的成熟进展,将使得玩耍开发厂设计出画面华美、内容充实的玩耍。国内外争论现状随着电脑绘图技术的不断演进,3D3D各界争论、应用的主题,3D作、多媒体教学、虚拟现实以及玩耍行业等。内国内的玩耍公司如雨后春笋般的成立,所开发或代理的网络玩耍更是不胜枚E3(ElectronicEntertainmentExposition)展中,已经有几家的韩国厂商挤入世界第一线玩耍开发厂商之列。以全球玩耍业界的进展来看美国一个市场争论就发表的报告显示,到2023200的三大领域之一,玩耍产业已被称为“阳光产业”。
2章数学根底3D常常想知道光线的照耀方向,以及在3D世界中的摄像机。矢量为在三维空间中3D空间方向的机制。的位置。在3D图形程序中,虽然我们主要关心3D矢量,但有时也会用到2D和4DD3DXD3DXVECTOR2D3DXVECTOR42D4D3D3D2D4Dn矢量点乘点乘是对两相乘矢量的代数定义:u*v=uxvx+uyvy+uzvz=s (3.1)算法似乎并没有明显的几何意义,我们可以从下式找出其隐含意义:u*v=||u|||v||cos (3.2)两点乘的矢量夹角大小与其点乘结果有如下关系:乘积为0时,表示两矢量垂直90度090度矢量差乘乘矢量的得另一矢量:u*v=[(uyvz-uzvy),(uzvx-uxvz),(uxvy-uyvx)] (3.3)矩阵根本变换mxn矩阵是拥有mn列的数组。行数和列数打算了矩阵的维数。Direct3D4X4的矩阵来描述特定的变换,由于4x43x33D变换,然而很多变换都不能用3x3的矩阵来描述,4x4的矩阵使我们能够描述通过矢量与矩阵相乘所完成的矩阵变换。也正由于如此我们使用的是1X4的矢量,由于1x3的矢量4x4矩阵相乘的。主要的矩阵变换有平移,缩放和旋转。(由它的全部顶点)缩放到原来的三倍。1x43D3D4D的单行矩阵,这样就符合1x34x4的矩阵相乘是不允许的。那么,在使用第四个成员时〔用w来表示1x4的行矩阵中时,设置w1。允许对点进展适当的平移。由于向量和位置无关,所对向量进展平移,当把一个向量放置到一个1x4行矩阵中时,把w设置为0。例p=〔p1,p2,p3〕放置到一个单行矩阵中,就像这样:[p1,p2,p3,1],[v1,v2,v3,0]w=0是为了防止向量被平移。当检查矩阵实际平移时这是一个格外清楚的模型。矩阵是怎样转变顶点的位置的呢?要转变一个顶点的x,yz们与某个矩阵相乘。x、yz值分别与每列上的数相乘再相加,每列上得出的数都是顶点的一个坐标值。DirectX给我们供给了一些函数能便利地生成一些通常的矩阵。那么,怎样(复合变换):一个用来旋转的一个用来缩放的;然后,我们把两个矩阵相乘,得出一个的复合矩阵,即缩放又旋转的矩阵;然后利用这个的矩阵来变幻顶点。应当留意的是,矩阵相乘并不是一般的乘法,而且,也不满足交换率:AXBBX矩阵A出了矩阵的第一行的四个元素(Columnl-4),其它元素的计算方法依此类推。DirectX概述
第3DirectX技术简介DirectX造就了这一切。DirectX〔简称:DX〕是一个用于多媒体应用程序和硬件增加的编程环境,ProgrammingInterfac该接口为设计高性能、实时的应用程序一个是运行库,通过DirectX编译出来的程序必需要有运行库的支持,另外一个是开发库,也就是玩耍程序设计者们通常所说的SDK,这局部是在编译DirectX程序是必需的,也就是说在程序编译时我们既使用了DirectX的运行库同时也使DirectX的开发库。DirectXCOM(ComponetObjectModel,组件DirectXDL〔动态链接库特别是玩耍〕在MicrosoftWindows下的性能可以到达甚至超过在MS-DOS下的性能,并且为之供给一个强壮、标准化以及文档化的编程环境。DirectX优势主要表现在两个方面:1.为软件开发者供给硬件无关性MicrosoftDirectXWindows系的玩耍开发环境,在DirectX之前,多数的玩耍开发都是基于MS-DOS的,那时玩耍开发者不得不自DirectX,玩耍开发者就可以享受DirectX给他们带来的设备无关性,而丝毫不受影响地直接访问硬件。DirectX的首要目标即是将MS-DOS下的很多特性移植到Windows平台上来,在提高应用程序的性能的同时,清楚个人呢电脑不断更的硬件给程序带来的障碍。另外,通过供给应用程序和硬件之间全都的接口,DirectXWindows的最大潜能,也使应用程序安装和设置的简单度大大降低。使用DirectX供给的Windows的高性能玩耍将从以下技术中获利:特地为提高速度而设计的极速卡Windows硬件和软件(c)Windows内建的通信支持〔包括DirectPlay〕2.为硬件开发供给的标准DirectX建议硬件设计遵循肯定的标准,这个标准的制定基于高性能应用程序的开发者和独立硬件供给商的反响,因而,DirectX程序员参考的有关内容甚关心在标准所限范围之内的硬件力量,而略过那些不被范围所支持的特性。DirectX的根本构造及组成3.2.1DirectX的根本构造DirectXDirectX的构造〔HA〔HEDirectX“兼容表”,其中记录了当前用剑系统支持的功能,DirectX需要实现某个功能时就查询该表,得到硬件对功能的支持信息,假设HALHEL3-1DirectX的根本构造。3-1DirectX的根本构造3.2.2DirectX的根本组成DirectXSDKAPI函数库,最初用于玩耍的开发,如今很多的多媒体软件都是使用它所开发出来的。DirectX中包含了各种组件用来2D3D图像、声音、网络连接以及掌握各类输入装置,是玩耍开发中不行3-2DirectX的根本组成:3-2DirectX根本组成DirectX3-1所示的七个主要局部组成:3-1DirectX主要组件Direct3DDirectDraw组件SDK的主要组件之一,它允许直接对显示内存操作,Windows的应DirectDrawWindows图形设备接口〔GraphicsDeviceInterface,GDI〕的兼容性。DirectDraw主要供给了完成以下任务的工具:治理多页面、直接访问视频RAM〔flippinBackbufferinPalett裁剪Clipping、视频端口〔Videopor。HardwareAbatractionLayeHAL〔HardwareLayer,HEL〕及硬件〔Hardware〕之间的关系。DirectDrawGDI位于同一层次,都通过一个与设备相关的抽象层来直接处理硬件设备。与GDI不同的是,DirectDraw会尽可能的利用硬件加速特性。假设硬件不支持某种特性,DirectDraw会使用硬件抽象层〔HEL〕试图将该特性进展软件模拟。DirectDraw可以以设备环境〔DC〕的形式供给页面存贮器,使得开发者可以使用GDI的函数操作页面对象。DirectDrawGDI、HAL、HEL、硬件的关系硬件操作层〔HardwareAbatractionLayer,HAL〕由硬件厂商供给,DirectDraw可以直接操作硬件,程序无须与HAL进展接触。相HAL供给的根底构造,DirectDraw使用一样的构造让应用程序来显示图形。硬件制造商在Windows下实现的HAL16-bit32-bit的代码。在WindowsNT下,HAL32-bit的代码。HAL可以是显示卡驱动程序的一定义的。硬件抽象层〔HardwareEmulationLayer,HEL〕当通过硬件操作层〔HAL〕硬件无法支持某些特性,DirectDraw就试图对HEL模拟的。Direct3D组件Direct3D3D3DDirect3D〔ImmediateMode〔RetainedModeDirect3D保存Direct3D马上模式之上。Direct3D为程序开发人员供给了很多高级功能,如:可切换的三度缓冲(使z-bufferw-buffer),GouraudWindowsNT〔供给适宜的设备驱动程序时CPUIntelMMXPentiumIIIAMD3DNow的构造。DirectSound组件DirectSound供给了程序和音频适配器的混音及播放功能之间的链接。还支持波形声音的捕获和播放。DirectSound为多媒体应用程序供给低埋伏混合、硬。DirectSound设计目标是提高声音的输出速度,实现多路声音混合播放。DirectInput组件DirectInput为Windows环境的玩耍和实时多媒体应用程序处理输入设备信息,尤其对玩耍掌握器和力反响设备供给了完备的支持。DirectInput和其他DirectXDirectX调用驱动程序来完成。DirectInput可识别三种根本设备类型:键盘,标准系统键盘。键。称,其范围从简洁的玩耍杆直至虚拟现实的简单设备。DirectPlay组件DirectPlayAPI,它是一个用于连接传输协议和网络设备之间的接口程序。DirectPlay支持多通信协议,可以运行TCP/IPIPXModemDirectPlay还为将来的协议预备了很好的扩展空间。DirectPlay供给了高级的〔例如,有保证或无保证的传递,慢速链接上的通讯扼杀,以及放弃连接检测等〔包括玩家名称表治理和点对点主机转移。图3-4DirectPlay体系构造,以及它如何供给与通讯效劳供给层序无关的独立性。3-4DirectPlay体系构造Direct3D根底Direct3D设备3D3DAPI。扮演了联系应用程序和显示设备的调度者的角色。Direct3DDirect3D渲(encapsulate)和存储(store)渲染状态它们之间的关系如以下图所示:4-1Direct3D设备关系图Direct3DDirect3D设备:一种是硬件抽象层(HAL)设备,应用程序不能直接访问3-D加速卡。他们要调用Direct3D的函数和方法。Direct3DHALHAL,那么使用HAL设备就能获得最好的性能。HAL设备具有硬件光栅化加速,并可用软硬件顶点处理进展着色操作;另一种是参考设备(REF)HAL设备由硬件驱动程序表示。示硬件协同工作。应用程序从不直接与HAL打交道。相反,通过队L供给的根底,Direct3D供给了一组统一的接口和方法,应用程序用这些接口和方法绘制/显示图形。Direct3D供给了用软件模拟整个Direct3DAPI的REF设备,这使你能够在设备不Direct3D特征编写和测试代码。初始化Direct3D猎取Direct3D9接口IDirect3D9接口指针:IDirect3D9*_d3d9;_d3d9=Direct3DCreate9(D3D_SDKVERSION);IDirect3DDevice9对象。设备特征主要有:设备力量、显示模式、格式和关于每个系统中其他可用设备的信息。检测硬件顶点处理IDirect3DDevice9对象后,我们必需指定顶点处理类型以便使用。假设点处理,所以首先要检测设备是否支持:RESULTIDirect3D9::GetDeviceCaps(UINTAdapter,D3DDEVTYPEDeviceType,D3DCAPS9*pCaps);检查此适配器上的设备对期望使用的功能的支持度m_pd3dDevice->GetDeviceCaps(8rm_d3dCaps):然后检测设备力量。实例化D3DPRESENT_PARAMETERS构造成员变量D3DPRESENT_PARAMETERS构造用于指定我们将要创立的IDirect3DDevice9对象的一些属性。IDirect3DDevice9接口Direct3Ddevice对象的渲染状态、灯光状态以及执行渲染操作。尽管设备支持三个设备接口(IDirect3DDevice,IDirect3DDevice3),但是程序中并不需要使用多个设备接DrawPrimitive方法或执IDirect3DDevice3IDirect3DDevice2,它DrawPrimitive方法大大简化了预备IDirect3DDevice9对象:RESULTIDirect3D9::CreateDevice(DINTAdapter,D3DDEVTYPEDeviceType,HWNDhFocusWindow,DWORDBehaviorFlags,D3DPRESENT_PARAMETERS*pPresentationParameters,IDirect3DDevice9**ppReturnedDeviceInterface);hr=pD3D->CreateDevice(D3PTER_DEFAULT,dwDevType,hwnd,dwBehaviorFlags,&m_d3dpp,如_pd3dDevice):使用设备设备枚举Direct3D设备。选择一个被枚举的设备对于设备的选择,主要基于以下考虑:放弃全部不适合当前显示深度的设备。放弃全部明暗处理三角形的设备。debug模式,那么它不会使用硬件设备。Direct3D设备DrawPdmitive方法。这一选择将打算在创立一个设备时程序需要获得哪种类型的接口指针。irect3Ddevice接口的DrawPrimitiveIDirect3DDevice3接口的指针。渲染通道
4章仿真实现3D场景是怎样显示在屏幕上的呢?渲染通道负责创立由3D空间几何描述和2D图形,即是我们眼睛在显示屏幕上所见的景象。模型表示们建模时对象的组成块,我们将三角形归为以下可互换的术语:多边形、简洁几一个三角形。顶点模式上述的顶点定义在数学上是正确的,但当我们在Direct3D运用该概念时,它显得不够完整。由于Direct3D中的顶点可能有指定位置之外的附加属性。例如Direct3D在构造顶点格式方面赐予我们很大的敏捷性,换句话说,让我们可定义顶点的其他属性。例如顶点位置和颜色。Struet ColorVertex{Float_x,_y,_z; //位置Dword_color; //颜色}(FVF)来描述我们创立顶点格式的方法。#defineFvF_COLOR(D3DFV_XYZ|D3DFvF_DIFFUSE)。三角形3D对象中的根本构成块。要创立对象,就必需创立三角形序列以例如,要创立一个矩形,我们将其分为两个三角形。4.1顶点索引程度。要解决这一问题我们需要用到索引这个概念:我们创立一个顶点序列和一个索引序列。顶点序列包括不同顶点的数据,索引序列包括顶点序列的索引数据,索引数据定义了这些三角形是怎样相互连接。虚拟摄像机摄像机指定了观看者所能观察的空间范围,即是我们需要为多大范围的3D机的模型。把显示屏目看作矩形时,用平截头体来表示显得更加简洁理解。不在该范围内的对象是不行见的。简洁的设置虚拟摄像机的方法如下:首先,创立左手投影矩阵:5.3渲染通道ZD图像。简洁的渲染路径如下:5.4本地坐标对于一个本地坐标系来说明的。世界坐标旋转、和缩放操作,涉及到对象在世界坐标系中的位置、方向和模型大小。:D3DXATRIXmatworld:D3DXMATRIXmatseale;D3DXMATRIXmatTrans:x轴大小1.0f, //y轴大小1.0f); //z轴大小//天空位置D3DXMatrixTranslation(&matTrans,30.0f, //x坐标60.0f, //y坐标10.0f): //z坐标//平移,大小转换到世界坐标系观看坐标系z坐标系依据摄像机的位置—摄像机空间的原点—和方向重定位世界中的全部物体。D3DXMTRIX matView;D3DXMatrixLookAtLH(&MatView, 存放结果的地址&vFromPt, //Camera位置&vLookatPt, //Camera方向&vUpvec):; //y方向反面拣选反面拣选其实是一个很简洁的概念。就是:全部的三角形面,面对我们的面将会被渲染出来(可见),否则将不被渲染(不行见,被拣选出来了)。举个例子:假设(要想象成一块方形纸片),我们把正面涂成红色,反面(有透视眼者另当别论)“反面拣选”Direct3D中有什么用呢?假设我们创立了一个封闭的立方体(要想象成一个方纸盒),那末“反面拣选”将使渲染更有效率。那么怎么知道那个面被渲染而哪个面被拣选(不渲染)呢?一切都在你定义的顶点的挨次上。假设你定义的三角形是顺时针的,将会被渲染出来;但假设你把Direct3D默认是拣选逆时针的三角形。投影坐标系透视变换中,xy11。Z方向的边界值分别是,0移并缩放物体。D3DXMATRIXmatProj:D3DXMatrixPerspeetiveFovLH(&matProj,D3Dx_PI/4, //y向可见的角度范围800.0f/600.0f, //平截头体长宽之比0.lf, //近平面距离500.0f); //远平面距离ECTION,&matProj);g_pd3dDeviee→SetTransfom(D3DTS_WORLD,&matworld);视口变换Direct3O中,可以用视口来声明下面列出的特性:用来限制渲染的屏幕空间视口(screen-spaceviewport)。视口可以清空为这一材质颜色depthbuff)z-buff裁剪空间是用来定义要显示到渲染目标外表上的局部场景的区域。假设选以免系统再渲染这一局部。Direct3D中的图形显示顶点和索引缓存顶点和索引缓存使用近似的方法和接口;顶点缓存只是包含顶点数据的相邻染数据比在系统内存中效率高得多。创立顶点和索引缓存HRESULTIDireet3DDevice9::CreateVertexBuffer(UINTLength,DWORDUsageDWORDFVF,D3DPoolPoolHANDLE*PSharedHandle);g_pd3dDevice→CreateVertexBuffer(4*sizeof(PANELVERTEX
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 8 数学广角-数与形 第一课时(教学设计)-2024-2025学年六年级上册数学人教版
- 12 低碳生活每一天 第二课时 教学设计-2023-2024学年道德与法治四年级上册统编版
- Module 4单元整体(教学设计)-2024-2025学年外研版(三起)英语四年级上册
- 聘用人员 合同范本
- 英文合同范本甲方全称
- 门店住宅改造合同范本
- Module 6 Unit 1 You can play football well(教学设计)-2024-2025学年外研版(三起)英语五年级上册
- 12 家乡的喜与忧2023-2024学年四年级下册道德与法治同步教学设计(统编版)
- 2024年九年级数学中考专题-相似系列之一线三等角 教学设计
- 4 选举产生班委会 教学设计-2023-2024学年道德与法治五年级上册统编版
- 初三开学第一课家长会优秀课件两篇
- 马工程教材《公共财政概论》PPT-第十四章 国际财政
- 狮子王1中英文台词
- 《大学俄语》教学大纲
- 清淤工程施工记录表
- TCITSA 24-2022 基于ETC的高速公路自由流收费技术规范
- 2022年涉农领域涉嫌非法集资风险专项排查工作总结
- 起重装卸机械操作工国家职业技能标准(2018年版)
- 五年级下册美术课件-第2课 新街古韵丨赣美版
- 秦荻辉科技英语写作教程练习答案(共42页)
- GB∕T 41168-2021 食品包装用塑料与铝箔蒸煮复合膜、袋
评论
0/150
提交评论