上一篇 | 下一篇

仅在Z缓冲器中渲染图像

发布: 2007-1-25 15:30 | 作者: Lucas Meijer | 来源: 译自director-online.com | 查看: 152次

  原著:Lucas Meijer
A*}l"p P`?7a   翻译:alphachi
(jH`(~N&@Esc 奥古多媒体F6B6G Y3Ew(c
  一、声明
g[l-@"?d?
D/_BGdxQ*q   本文所描述的技巧基于一个非正式的3D Lingo特性。虽然大部分时间人们对此并不关心,但Intel已经宣布在未来的Shockwave版本(Shockwave当前版本为8.5.1)中将会取消这一特性(并会给出更好的解决方案)。因此只将其使用在以放映机发布的项目中会比较安全。
p T7V"Oe"qTQ'J 奥古多媒体\\U8wG0o.N
  本文涉及了一些Director的3D性能方面的知识。如果你是Director 3D方面的新手,那么先看看下面这些文章。奥古多媒体.Y y4j;p`z5S
奥古多媒体n,Y,}Y,u3R
  学习基础3D奥古多媒体)]9g7Re(z9H-`$Cw
奥古多媒体/QT B_^ Y LiF.? W
  学习基础3D(续)
L-H2w,q{%ct Ll 奥古多媒体b9`PbCw#I(I
  "Star Wars"Crawl: The Texture Generation奥古多媒体-uA@'A0Dz3f6It

*Nh:QN6Q\;}2f(V   [内容] 仅在Z缓冲器中渲染物体。奥古多媒体$NO mI2uI
奥古多媒体.~|%^\6Kz d"G
  [优势] 通过使用Z缓冲器渲染能够解决很多问题,本文仅讨论其中的一项应用:创建一幅高质量的背景图像(可以是手绘的,也可以是使用一些高端的3D组件渲染的)并在Z缓冲器中渲染一个简单的场景,使物体能够置于背景的前面和后面,给用户一种背景确实是场景一部分的幻觉,以代替原来看上去只像是一个平面的感觉。奥古多媒体h M#P \#|0Z5@?
奥古多媒体W%y ['{R~
奥古多媒体u1W!`!lgD{
奥古多媒体jE&WBuUb4_[
  点击上图观看Shockwave版本的样本影片。
i`7a0RK(Dg
kyNy6L r NN,Z   二、具体方法奥古多媒体{M2O,b:WC
奥古多媒体M"`%swqTCHgV
  在Z缓冲器中渲染的基本步骤如下:奥古多媒体G*^j8|G+L}
奥古多媒体1OX_4L(Vk1XU
  1. 在Z缓冲器中渲染相应的物体。
#T#h5}7m-gcm C%F 奥古多媒体5h6a$F/cc1uW1^"Q%w.j
  2. 将一大型的黑色平面的能见度设置为#front_nodepth,并使其覆盖整个屏幕。
)z.NJ F W5wu"J
%tW)tU,lU*Y ]   3. 渲染“普通”的物体。
u;f)`Lng s\ 奥古多媒体KqPMy8@)]
  关键在于第二步,使用特殊的(无支持的)#front_nodepth标记,就能够通过控制一块大型的黑色平面来“清除”屏幕,同时又使Z缓冲器中的内容保持不变。本例中我们以绘制背景代替了清除屏幕。
mM R^2PW'T
$kL"e(p/W"s/f$h5V0O   三、随之而来的一些问题
WQ4ZMh-E @:n 奥古多媒体0B9L g `%\S
  按照出现在全局群组的子列表中的先后顺序,Shockwave 3D Xtra渲染缺省的所有子代。控制渲染规则的方法在于优先创建群组,下面的语句在名为W3D的Shockwave 3D演员中创建了一个新的空群组:奥古多媒体FDBBO ]*\0v
奥古多媒体9O.G\(p#n$K
pW3D.newGroup ("renderPass1")
4f U6yB%Z\7I_ pW3D.newGroup ("renderPass2")奥古多媒体vA.k_xV7t B8E/i$t~u4Z
pW3D.newGroup ("renderPass3")奥古多媒体q9s|'e C|.E
奥古多媒体-jgHU%@#??
  当你使用新的群组时,它们将按照创建的顺序被自动添加到全局群组的子列表中,因此为了优先绘制,可以将其parent property设置为group ("renderPass1");对于需要稍后绘制的,可以使用一个group ("renderPass2")的子代,依此类推。奥古多媒体%u Oe.t1}I0R
奥古多媒体:_C5^y6{|E$v0]
  因此,在某一静态背景下,如果想让物体在一些背景元素的前面和后面移动,那么就应该把全部Z缓冲器中的粗糙模型都置于group ("renderPass1")中, 将背景图像(其本身为一个平面模型)置于group ("renderPass2")中,将场景中需要操纵的物体置于group ("renderPass3")中。奥古多媒体&_{7qEK
奥古多媒体 aLJfy
  附带的资源文件包括实例中的的全部代码,以及关于发生的事件的注释。如果你没有完全明白整个过程,我强烈建议你在观看代码之前运行电影,并打开3DPI,同时在演员标签中检查其在全局群组中的层次。
'B4JZd drg x]A
iS9apm*^&`   四、对#front_nodepth不被支持的说明奥古多媒体;fi-j|9n.`n%My

Z*wHJ3d5Z   为什么要写一篇关于已被宣称要取消的特性的文章?这主要是由于缺少了#nodepth标记,Intel提供的更好的Z缓冲器控制会有一些问题。即使这种语法形式的特性消失了,在Z缓冲器中渲染的可能性也依然存在,所以本文所述的技巧在将来的Director版本中并非毫无用处。奥古多媒体!^A;Mb"MOa

Tp;G SG7y   相关附件

字号: | 推荐给好友

 

评分:0

我来说两句

seccode


音乐
落叶 画心 放生 天亮了 牡丹江 那滋味 擦肩而过 怀念过去 北京欢迎你 突然好想你 吻的太逼真 说好的幸福呢 坐上火车去拉萨 如果爱能早些说出来
愚爱 心碎 稻香 带我走 醉赤壁 魔杰座 我还想她 为你而活 一定要爱你 等爱的玫瑰 原谅我一次 越单纯越幸福 最后一次的温柔 给我一首歌的时间
白狐 光荣 火花 下雨天 小酒窝 樱花草 为你写诗 无可取代 无情的温柔 寂寞才说爱 忘不掉的伤 爱上你是个错 陪你一起看草原 地球人都知道我爱你
城府 假如 花海 兰亭序 爱太痛 舍不得 你若成风 女人如烟 外滩十八号 我们的纪念 摇滚怎么了 和寂寞说分手 爱上你是我的错 爱情里没有谁对谁错