17.2环境贴图.docxVIP

  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文档。上传文档
查看更多
17.2环境贴图.docx

17.2 环境贴图立方体贴图的主要用途是实现环境贴图映射(environment mapping)。它的实现思路是:在场景中的某个物体O的中心位置放置一架摄像机,将(水平和垂直)视域角设为90o。然后沿着±X轴、±Y轴和±X轴方向,从6种不同的角度各拍摄一张照片(在照片中不包含物体O)。因为视域角为90o,所以这6张照片完全可以从物体O的角度捕捉到各个方向上的环境信息(参见图17.2)。我们把这6张照片存入到一个立方体贴图中,就得到了所谓的环境贴图。换句话说,环境贴图就是在立方体平面上存入一个环境的全景照片。图17.2 将立方体贴图“展平”后就得到了一幅环境贴图。设想,将这6个平面重新折叠为一个3D立方体,然后站在立方体的中心。从每个方向上,你都可以看到一个连续的场景环境。上述内容表明,在场景中有多少个使用环境贴图映射的物体,我们就必须创建多少个环境贴图。不过,环境贴图通常只用于表现远处的“背景”信息,而近景物体可以共享相同的环境贴图。例如,在图17.3中,所有的球体都共享图17.2所示的环境贴图。注意,这个环境贴图并没有拍摄场景中的石柱和地板;它只拍摄了远处的山峰和天空(即,场景背景)。虽然在某些场景中,背景环境贴图不能表现场景的所有细节,但是在实践中它的渲染结果还是比较令人满意的。图17.3 立方体贴图演示程序的屏幕截图。当创建环境贴图时,摄像机的拍摄方向必须与世界空间的主轴方向对齐,只有这样,环境贴图才能直接在世界空间中使用。当然,你也可以采用其他的方向进行拍摄(比方说某个物体的局部空间)。但是此时,查找向量必须被转换到立方体贴图空间之后,才能进行纹理映射。注意,环境贴图使用的这6幅图像一般不是在Direct3D程序中生成的,虽然有时也可以这么做(参见17.5节)。因为立方体贴图只存储纹理数据,它们的内容通常是由美术师提前画好的(就像我们之前使用的2D纹理一样)。所以,我们不需要使用实时渲染计算一个立方体贴图的图像。也就是,我们可以在一个3D世界编辑器中创建场景,然后在编辑器中预渲染立方体贴图平面上的这6幅图像。对于室外环境贴图来说,我们通常使用Terragen软件(http://www.planetside.co.uk/terragen/http://www.planetside.co.uk/terragen/,该软件有免费的个人使用版本),它可以创建照片级的室外场景。本书使用的环境贴图都是使用Terragen软件生成的,比如图17.2所示的环境贴图。注意:当你初次使用Terragen软件时,一定要在Camera Settings对话框中将缩放系数(zoom factor)设为1.0,以得到一个90o的视域角。另外,输出图像的宽度和高度也必须设为相同的值,只有这样摄像机在水平和垂直方向上的视域角才会相同,也就是90o。注意:网上(/wiki/Skybox_(2D)_with_Terragen/wiki/Skybox_(2D)_with_Terragen)还有一个很好的Terragen脚本,它可以使用当前相机的位置并以90o的视域角渲染出周围的六张图像。当我们使用某种软件创建了立方体贴图的6幅图像之后,我们必须创建一幅立方体贴图纹理来存储这6幅图像。我们之前使用的DDS纹理图像格式就支持立方体贴图,我们可以很容易地使用DirectX纹理工具将这6幅图像合并为一个立方体贴图。运行DirectX纹理工具(它位于DirectX SDK的DXSDXJune10\Utilities\Bin\x86目录下)。在File菜单中选择 New Texture命令,弹出如图17.4所示的对话框。在Texture Type中选择Cubemap Texture选项,输入源图像的尺寸大小,并选择一种表面格式。(最好使用像DXT1这样的压缩格式;因为这里要存储6幅纹理,高分辨率的立方体贴图会占用很多内存。)图17.4 使用DirectX纹理工具创建一幅新的立方体纹理。现在我们有了一幅空的立方体贴图。将鼠标定位在View菜单上,选择Cube Map Face子菜单,挑选一个你希望在窗口中显示的立方体贴图平面(图17.5)。(起初,这些平面都是空的。)现在随便选择一个平面,然后单击File菜单,选择Open Onto This Cubemap Face命令,在弹出的对话框中选择对应于个立方体平面的图像文件,将它导入到当前的立方体贴图平面中。重复这一操作,向其余的5个立方体贴图平面导入相应的图像文件。当全部操作完成之后,将立方体贴图保存为DDS文件。图17.5 在DirectX纹理工具中,挑选一个希望在窗口中显示的立方体贴图平面。注意:NVIDIA提供了一个Photoshop插件用来保存.DDS和立方体贴图,可见/nvidia-texture-tools

文档评论(0)

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

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

1亿VIP精品文档

相关文档