三维场景实现算法.docVIP

  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文档。上传文档
查看更多
三维场景实现算法   三维场景实现算法   王海涛   (招远市广播电视局,山东 招远 265400)   摘要:目前计算机中实现三维场景的通用方法是Z-buffer算法。而Ray tracing算法是一个相比于Z-buffer算法,更优的三维场景实现算法。该文详细介绍了Z-buffer算法和ray-tracing算法,并进行了比较。   关键词:Z-buffer算法;ray tracing算法   中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)22-6341-01   The Algorithm for the Real-time 3D Rendering   WANG Hai-tao   (Zhaoyuan Broadcast Television Bureau, Zhaoyuan 265400, China)   Abstract: The general method for real-time 3D rendering algorithm is the Z-buffer algorithm, but the ray tracing algorithm is a better algorithm than Z-buffer algorithm. This paper introduces the Z-buffer algorithm and the ray tracing algorithm.   Key words: Z-buffer; ray tracing   Ray tracing算法是一个相比于Z-buffer算法,更优的三维场景实现算法。该算法巨大的计算量使得现有体系结构并不能完美的实现该算法。而应用与体系结构间是一个先有鸡还是先有蛋的问题。为了更好的实现该算法,必须设计一种新的体系结构来获得更好的结果。   1 Z-buffer算法   计算机中实现三维场景的通用方法是Z-buffer算法。Z-buffer有些类似画家演算法,都是以近景遮盖远景的方法来处理深度问题,所不同的是Z-buffer使用的是裁剪(culling)的方法,并以像素为处理的对象,Z-buffer将绘图画布内所有的坐标当作一个深度缓冲区阵列zbuf[]的索引,每一个zbuf[]的元素记录一个像素绘制时的Z深度资讯,可以使用它来处理隐函式的图形绘制。   假设画布大小为600X400(X, Y),则zbuf[]的大小必须设定为600*400=240000(X*Y),一开始时所有zbuf[]元素的值设定为一个极小值,也就是所有的像素都表示空间中一个极深的位置,开始绘制之后,必须在zbuf[]中记录每一个像素的z值。 zbuf[]是个一维阵列,所以我们必须计算坐标的索引值,如果以列为主的话,则(x, y)对应的zbuf[]元素值为:zbuf[x + y * 画布高度];当然您也可以使用二维阵列zbuf[][]来直接对应。   如果后来要绘制的点之z值大于zbuf[]中记录的值,表示此点在之前所绘点的前面,于是绘制此点来覆盖之前所绘的点,并更新zbuf[] 中的z值为目前点的z值;如果后来要绘制的点之z值小于zbuf[]中记录的值,表示此点在之前所绘点的后面,于是不用绘制此点,当然也不用更新zbuf[]中的z值。   2 Ray tracing算法   要使得三维场景的视觉效果更为真实,则需要引入复杂的照明模型,如柔影、映像、漫射光的相互作用等。而这些在Z-buffer中并没有体现出来。光线追踪算法最先由Apple提出:他首先提出按相反方向跟踪光线,即按从观察者到景物的方向。在早些时期的光线追踪算法中,当光线到达一个不可见的非透明物体表面时终止追踪。即光线追踪在早期仅仅用作隐藏面处理或可见面处理。1980年,Whitted提出了一种整体光照模型,发展了光线追踪的算法。光线追踪算法利用光线照射的可逆性原理,沿观察者的视线方向跟踪画面中景物投射光线,求出每一投射光线与环境景物的交点。光线在交点处分成2条:一条沿反射方向,另一条沿折射方向,再继续对2条光线进行跟踪,每求出一条光线与物体的交点,就由已知环境条件求出该点光强。而反射、折射光与景物交点处的光强也应同样跟踪下去,直到光线跟踪出画面或到达指定深度。   对于每个采样点(像素)可建立一个光线/物体相交点组成的光线树,这个像素最后光强的确定是通过搜索这棵树,并根据一定的光照模型计算每个结点的值,树根的值便是这个像素的光强值。   若一条从视点出发的光线穿过某个像素,在这条光线到达光源之前遇到了物体,那么,物体就挡住了这个像素, 因而这个像素就处于阴影之中。   3 小结   本文详细介绍了三维场景实现的两个主要算法:Z-bu

文档评论(0)

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

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

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档