1. 1、本文档共100页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对于任意一条射线,可用如下的方程来表示: p(t)=p0+tu 0t∞ 其中p0是射线的起点,u是射线的方向,t为参数,通过给t赋不同的值,可以计算出射线上的其他点。如下图所示。 P0 tu P(t)=P0+tu u 一条射线是否与平面相交以及相交后的位置可通过下面的方式求解: 对于射线p(t)=p0+tu和平面n.p+d=0,如果二者相交,则t所在的范围一定在(0, ∞)之间。通过求解t则可判断相交情况以及对应的交点。 n.(p0+tu)+d=0 t=(-d-n.p0)/(n.u) 如果求解出的0t ∞,则射线与平面相交,反之则不相交。 对应的交点为: p0+((-d-n.p0)/(n.u))u 显然,平行光光源照射下,物体在某平面的投影相当于经过物体各顶点的射线在平面上的交点的集合。 2、点光源 对于点光源而言,其对物体的投影其实与平行光类似,也是从顶点出发的射线经过物体表面顶点在平面上交点的集合。因此同样可用前面的交点来表示。 3. 阴影矩阵 对于平面矩阵(nx,ny,nz,d) 和平行光或点光源L=(Lx,Ly,Lz, Lw)(其中w=0是表示是平行光的方向,w=1表示点光源的位置),设k=nxLx+nyLy+nzLz+dLw,通过推导可得到顶点p到其投影点s的变换可用如下矩阵来表示: 在D3DX中,可通过如下函数创建阴影矩阵: D3DXMATRIX *D3DXMatrixShadow ( D3DXMATRIX *pOut, CONST D3DXVECTOR4 *pLight, CONST D3DXPLANE *pPlane); 此外,在绘制阴影的过程中,为防止二次融合,需要将模板测试设置为只接受第一次得到绘制的那些像素。 纹理映射 对于3D实体来说,仅凭其网格和颜色无法使物体具有较强的真实感,还必须使其表面具有一定的纹理,就像蝴蝶身上的花纹,树木表面的纹理一样。借助于D3D提供的纹理技术可以达到这样的效果。 一、基本的纹理概念 在D3D中,纹理是用纹理位图来表示的。由于它是一个二维的数组,一般用(u,v)来表 示其坐标。如果位图的宽和高分别为w,h,显然0=uw,0=vh。由于一个图形中往往存在多幅不同的纹理,他们的宽,高也不尽相同,用实际纹理元素的位置来表示在计算上很难统一,所以经常采用相对纹理坐标,设为U,V,则U=u/w,V=v/h。 在D3D中,需要在定义顶点时添加一个该点的纹理坐标,这样顶点可采用如下的定义方式: struct Vertex{ float _x,_y,_z; //顶点的3D坐标 float _nx,_ny,_nz; //顶点的归一化法线矢量 float _u,_v; //纹理坐标 static const DWORD FVF; //顶点的格式 }; const DWORD Vertex::FVF=D3DFVF_XYZ|D3DFVF_NORMAL| D3DFVF_TEX1; 其中D3DFVF_TEX1指明顶点结构中包含了一对纹理坐标。 二、纹理的绘制过程 标准的D3D纹理绘制过程分为5个步骤: (1)载入纹理 D3D提供了直接从磁盘中读入图像文件,并加载到IDirect3DTexture9对象中的函数: HRESULT D3DXCreateTextureFromFile( LPDIRECT3DDEVICE9 pDevice, //用于创建纹理的设备句柄 LPCTSTR pSrcFile, //图像文件名 LPDIRECT3DTEXTURE9 * ppTexture ); //存储D3D纹理的指针 该函数可加载的图像格式包括:bmp,dds,dib,jpg,png,tga等。 (2)分配顶点纹理坐标 分配顶点纹理坐标实际上就是对每个顶点设置相应的纹理坐标,可通过设置前面定义的结构体中(U,V)的值来确定。 (3)设置当前渲染纹理 当前纹理坐标的设置可通过下面的函数实现: HRESULT IDirect3DDevice9::S

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档