-
9 Rendering
English
|
German
|
French
|
Italian
?
o
o
o
o
o
o
o
o
o
?
DX9
渲染
导言
开始
DirectX
坐标系统
材质贴图
铺展
混合
3-D
景深缓存
GirlPower
SoftImageTM
摄像机
3d
图形加速卡术语
DX9
渲染
导言
DirectX
是一种
Windows
技术,
它为个人电脑提供了高性能的图形技术。
DirectX
能对现
今图形卡上的复杂的三维渲染硬件直接访问,从而保证了速度。
vvvv
就是基于
DirectX
9
实现的。
vvvv
提供了图形生成器,用以产生诸如矩形、网格、线条等图形对象,
vvvv
p>
也包含了变
换这些图形元素的节点,它们使用了经典的矩阵变换方法
(
转换
,
缩放,旋转,比例因子修
正
,
反转
,
和透视投影
< br>)
。通过顺次联合多个变换节点可以产生复杂的运动结构。
随着现在的图形显示卡在设计制造时就特别专注于材质贴图性能的提升
,vvvv
具备了直接
向多面体贴图的能力。由于图
像的映射计算时在显卡上完成的,
vvvv
在处理有贴图的三维
对象时仍然表现飞快。
vvvv
可以导
入标准的图像格式如
BMP,JPEG,PNG
等。贴图可以加
以变换(缩放、转换等),如同对图形对象一样。由于具备读取透明层数据的能力,
p>
vvvv
可以使用文件贴图来创建遮罩和
a
lpha
通道。
DirectX
p>
的全屏模式直接接管了机器,
使图形输出运行的帧速率最佳。
全屏模式就是为了让
程序运行时没有滞缓和抖动
-
动画总是被精确地渲染以符合帧速率,这样可以得到最
佳地
适合于电视播出的图形应用。
v
vvv
的组件可以直接操纵显卡的底层功能和数据,从而对用于渲染的硬件电路提供了更
为
精准的调节。
vvvv
有意要依赖于
硬件
-
某些功能在特定的显卡上表
现更好。对很多传统
的程序来说这不合常规,但这却能得到媲美于当今的计算机游戏的高
性能渲染。
开始
DirectX
在下面的教程中,我们要用
Renderer (EX9)
建一个简单场景
.
首先
,
打开一个新的程序片
:
盘古开天地,
我们需要一个
Renderer (EX9)
。
确保
你创建了一个
DX9
版本的而不是
GD
I
或
TTY
版本的渲染器。在
DirectX
载入时计算机可能有一点点停顿。现在第二个标题为
p>
的黑色窗口出现了。
接下来我们需要一个渲染节点
:
我们从菜单中选择创建一个
Quad
(DX9)
。
请注意只有
Renderer
(EX9)
类型的节点才会显示在渲染窗口里
: e GDI
渲染系统是独立
于
DX9
渲
染系统的
–
你不能混合不同渲染系统的结果,但可以使用
GDITexture
< br>节点来
把
GDI
窗口里的内容作
为一种材质在
DX9
窗口中使用。
Quad
在渲染器中以默认的尺寸在
默认的位置上呈现为一个白色方块。要想移动这个物体,
需要一个或几个变换节点(
p>
Transform
Nodes
)。建一组变换节点:
一
个
Scale (Transform)
,
一个
Translate
(Transform)
,
一个
Rotate
(Transform)
,
a
Transform (Transform 2D)
和一个
Trapeze
(Transform)
节点
:
将
Scale (Transform)
连接到
Quad
然后改变
Scale (Transform)
的输入引脚
X
和
Y
< br>,
可以发现宽度和高度在起变化。
然后取消连接,注意矩形跳回到原来的尺寸了。
请注意这与通常的行为有异:
一个节点在连接被断开时通常会保留当前值。<
/p>
后面的章节我们
会解释这么做的原因,
以
及为什么这么做是为得到更大的好处付出的代价。
现在只需要记住
变换节点是当连接被断开是值会被保留这一规则的一个例外就好了。
现在再试试
Translate
(Transform)
和
Rotate (Transform)
节点。你会发现可以通过
这几个节点位移和旋转该矩形。
在
试验那些引脚时,
你也许留意到某些引脚不起作用
-
这是
因为这些节点都是在三维空间中工作的,
但
我们尚未连接摄像机。
所以现在我们不妨忽略这
些引脚,而专注
于有影响力的引脚。
接下来连接多个变换节点
:
这样是什么意思?重要的是要理解这意味着一系列的操作。我们首先做缩放
,
然后是位移
,
接着是旋转。在
仔细思考一下这个问题并略做试验后,你会注意到,次序很重要,
要按正确
的次序来做事!
接着再试试
Transform
(Transform 2D)
节点
:
Transform (2D)
节点具备在二维空间里工作所
需的所有参数。这个节点仅仅是常用操作
的一个快捷方式。所以当你想在渲染窗口的某处
放置一个物体时,你不需要单独使用缩放、
位移和旋转节点
-
你可以在
Transform
(2D)
节点中完成所有工作。
这个节点还有一个版本,叫做
Transform (Transform 3D)
,它有更
多的输入引脚,并能
使你在三维空间中放置物体。不过等等,没有摄像机,你是找不到<
/p>
3D
的感觉的。
你还可以试试看
Trapeze
节点。它能将
Quad
(DX9)
变形为一个吊杠。
现在删去所有的变换信息
:
为什么这个节点叫做一个
Quad?
你能注意到这并不是一个正
方形
:qu
ad
节点显然没有作出一个正方形而是一个矩形。这事是怎么发生的?
< br>
坐标系统
要理解这一点,我们需要观察一下渲染器的坐标系统
:
窗口区域有一个默认的范围,即在两个维度上都是
-1
到
+
1
。原点(
0
,
0
)在窗口的中
央。
还有一个
z
轴,上图中没有显示。
< br>z
轴的正向是指向屏幕里面的,这一设置也称为左手坐标
系。默认的投影是平行投影,故你没法在下面的例子中注意到
z
轴的存在
标准的
quad
的宽和高都是
1
,中心点在
(0, 0)
。因此
quad
在两个
维度上都是从
-0.5
到
+0.5
。
现在将渲染窗口缩放到成一个很宽的矩形:
你会发现
quad
< br>被拉伸得越来越厉害
,
因为坐标系也按窗口一样的方式被拉伸了。
渲染窗口的比例因子是依赖于窗口尺寸的
:
< br>如果你将渲染窗口也调整成正方形,
那么
quad
也变正方形了。
但我们如何让
quad
成为一个正方形呢?画出一个正方形总是赏心悦目的,
但当我们切换到
全屏模式时,
通常是一个
4:3
的比例因子。
该问题的一个显而易见的解决
方案就是在
quad
节点上应用一个
S
cale
节点
:
这样试试:重新调整渲染窗口到
4:
3
的现实比例
(
就像正常
的计算机屏幕
)
然后将
sc
ale
节点连接到
quad:
渲染窗口的比例是
4:3,
因此我们将物体的
X
方向缩到
0.75
,
物体就是正方的了。
试试看。
不过这听上去挺烦的
--
要为程序片里的每一个渲染节点都加一个缩放操作。
p>
正确的解决办
法是应用渲染器的
trans
form
引脚:如果你连接
Transform (Transform 2d)
节点到
View Transfor
m
引脚
,
它就能影响到该渲染器里的所
有物体
:
连接一个
transfor
mation
到
ViewPort
引脚
就如同将该
transform
连接到了所有渲染节点。
有趣的是
,qu
ad
看上去和之前一样。但这个场景的背后发生了什么呢
?
p>
请看下图
:
如果我们
连接一个
Scale
节点到渲染器,坐标系统就变换了。原
来在右上角的点
(x=1,
y=1)
现在在
视图里面了。
现在连接一个
Translate<
/p>
节点到
Scale:
你可以看到
Quad
在移动。你可以理解
Scale
p>
和
Transformation
节点连到
viewport
引脚后变成了这个场景的一个非常初级的摄像
机。
如
果你连了什么东西到这个引脚
,你并没有操控物体,而是操控显示这个物体的摄像机。
同时参见
视频教程
了解坐标系。
材质贴图
掌握了这些抽象的概念后<
/p>
,
我们邀来在场景中增加一些有趣的图像。首先
< br>,
清理一下程序,保
留渲染器上的
Scale
节点。
接下来我们创建一个
FileTexture (e)
节
点
,
然后将它连到
quad
上。
o a
right-click onto
the FileName input of the
右击材质节点上的
FileName
引脚,从硬
盘上挑选一幅图像。
FileTexture
节点可以掉入
BMP
、
JPG
、
TIF
或
TGA
文件到内存中
p>
--
本例中我们使用
< br>girlpower/images
目录中的
?flow
er ?
。
如果你想建立自己的材质贴图,参见
HowTo Prepare Textures
。
FileTexture
(e)
FileTexture
节点能够调入
BMP
、
JPG
、
TIF
或
TGA
文件<
/p>
到内存中。将你的材质贴图准备成
16x16, 32x32,
64x64, 128x128, 256x256,
512x512,
1024x1024, 2048x2048 or 4096x4096
像素的尺寸
,以获得速度和质量
上的优化结果。贴图要尽可能地小,以期获得最快的速度
现在连一个
Transform
节点到
Quad
上的
TextureTransform
引脚。
你会发现可以用
transform
来移动和放大
quad
上的图像。
同理
,
也可
以缩小贴图并在
Quad
上重复纹理。将
ScaleX
和
ScaleY
设成<
/p>
5:
接下来,创建一个
Address
(rState)
节点并将其连到
Quad
< br>上。
Sampler
State
系列的节点控制贴图过程的单个属性。要设置属性值,只需将
SamplerStat
e
连到
物体上。如果你要设置多个参数,只需将多个不同的
p>
Sampler
State
节点连成一行。
现在再试试
Address
(rState)
的不同设置。可以看到不同的取决于不同的
映射模式呈现出不同的模式。
铺展
我们对铺展的操作同样可以施加到三维物体上。如下设置程序
:
-
-
-
-
-
-
-
-
-
上一篇:钢结构节点刚铰接问题
下一篇:应聘登记申请表中英文双语版