3D图形学基本概念澄清

3D图形学基本概念澄清 收藏
1.    Viewport和Frustum有什么区别?
Viewport是定义图形输出区域的2D矩形。Viewport不能超出屏幕范围,一个游戏可以有多个Viewport。一般平台Viewport和Scissoring- Rectangle是同时设置不可分离的,因此设置Viewport同时也设置了Scissoring- Rectangle。但是PS2Scissor-ing可以分开设置,使很多Filtering特效成为可能或更加快捷。
投影包括平行投影和Perspectiv-e投影。Frustum一般是指3D投影的平行六面体,而3D投影中用的最多的是对称的3D投影(比如用OpenGL的glFrustum(aspect,fov,znear,zfar),但是不对称的3D投影(同样是平行六面体,截面不一定是梯形)也很有用,比如用拼凑两个显示器,每个显示器显示一般视野.

2.Viewport和Frustum的NearClipPl-ane有什么区别?
NearClipPl-ane和FarClipPla-ne是对应于Frustum的,跟Viewport无关。但是根据NearClipPl-ane和FarClipPla-ne的2D特性,有的API将Viewport和Frustum一起设置。Frustum的作用是将世界空间中一个平行六面体区域映射到一个单位矩形中(Homogeniou-s Clipping Space),然后单位矩形再映射到屏幕上。NearClipPl-ane是这个六面体正对着视点的那个面。任何视点和NearClipPl-ane之间的物体都会被裁减掉。

3.Vertex,Point,Vector有什么含义上的区别? Plane,Face和Mesh呢?
Vertex是顶点,一般在游戏中常指三角形或线段的顶点,有时也用来指多边型的顶点。Point是广意的“点”,一般在游戏中常指3D空间中的任何一点。Vector是向量,游戏中常用3,2,4维向量。Vertex和Point和其他的任何数据都可以用向量来表示。 Plane是平面,Face大多表示三角形,也可以表示在一个平面上的多边形。Mesh是一个三角形的组,可以有其逻辑意义,比如一个人,一个物体; 也可以没有逻辑意义,比如一个椅子中所有用到某个特定贴图的被group到一个strip中的所有三角形的集合。Mesh的概念比Plane或Face高很多,什么都可以泛指,什么static mesh, skined mesh, soft mesh, graphics mesh, collision mesh, 等等。但是其跟本意义是triangle soup。

4.为什么顶点会有W分量,它怎么算出来的?干什么用的?
输入顶点的W表示你希望对他的放大倍数。比如(1,1,1,2)实际是单位话后的(2,2,2,1)
(特例:DirectX中2D顶点的W用来表示希望显示的“Z”)
在透视投影后, W的值相当于View Space中的线性的Z, 用来剪裁, 同时用来做贴图透视纠正和雾化景深(有些平台包括颜色透视纠正)。这里不能用透视投影后的Z因为这个Z是非线性的,这里也不能用透视投影之前的Z因为这个Z没有单位化。

5.在一次完整的顶点渲染管线中,最多会出现多少种坐标系?(例如世界坐标系)
逻辑上,Local Space -> World Space -> View Space -> Clipping Space -> Unit Space(Homo Clipping Space), Screen Space. 实际上,对于一般的pipeline来说,用户负责提供的World Matrix包括了前两步的转换。

6.上面的每个坐标系的实际意义是什么?互相之间怎么转换?转换矩阵怎么写,意义又是什么?
Local space: 给物体定一个原点和X,Y,Z轴建立起来的空间。
World space: 定义“世界”的概念。
View space: 原点在视点,Z轴沿视线方向,X轴是看的人侧举的一只手臂的方向。
Clipping Space:  没有单位化的Unit Space,用于裁减。
Unit Space: (-1,-1,-1) 到(1,1,1)的正方形。(DirectX中Z的范围是反向的(0,1)的范围)
Screen Space: 屏幕空间,原点在屏幕的左下(OpenGL)或左上(DirectX)。Unit Space平行投影到Screen Space中的Viewport区域。
(Screen Space可以分成Virtual Screen Space和Physics Screen Space):  比如在PS2上, 用于支持Guardband。)

7.光照是怎么计算的?光源可以设置Ambient,Diffuse...为什么Material也可以设置Ambient,Diffuse...?为什么顶点数据中还可以再指定Diffuse,Specular?
光照公式用的是简化的逼近模型,具体看图形学的书去。Material的Ambient, Diffuse定义的是Matrial的 反光特性和强度。

8.在每帧的颜色混合过程中,我们可以在SetTexture-StageState-中指定AlphaOp,ColorOp,在SetRenderS-tate中指定SrcBlend和DestBlend,它们互相是什么关系?
对于每个Texture Stage, Alpha的计算和Color的计算是独立的。 如果希望ColorFinal-=ColorTextu-re * ColorConst-ant, ColorOp就要设置成MODULATE,表示乘法。ColorArg0用TEX,ColorArg1用CONST.
所有的Texture Stage之后,是Alpha Blend的Stage。 SrcBlend定义如何在最终结果中混合刚计算完的pixel的颜色和Alpha, DestBlend定义如何在最终结果中混合Frame Color Buffer以存的颜色和Alpha。比如SrcBlend=ONE, DestBlend=ONE, 表示两者相加。

9.几种AlphaBlend-方式对应的实际含义是什么?
看书。

10.AlphaTest和AlphaBlend-有什么区别? AlphaBlend-可以完全取代AlphaTest吗?
不同,不能各自替代。Test就象是过滤,过去了或筛剩下了。Blend是混合,象配化学药水一样。红的配绿的居然是黄的。。。

11.TextureSam-plerMode中,可以分别对MIN,MAG,MIP指定Point和Linear,它们可以有哪些组合?各代表什么意义?
MIN和MAG表示放大或缩小。比如放大,如果MAG是Linear, 放大的时候用线性插值。MIP是做MIPMAP的时候,如何混合相邻的两个MIPMAP中采样出的颜色。 Linear表示对两个采样出的颜色进行线性插值。

12.全屏抗锯齿和TextureSam-plerMode有关系吗? 和MontionBlu-r有关系吗?
都没有。

13.Cull_CW,Cull_CCW是干什么用的? 不做Cull行吗? Cull和Clip有区别吗?
Cull是反面剔除。Clip是裁减。
不做Cull道理上不成,比如同一面墙用正反两个矩形表示,各自有其不同的光照和不同的贴图(一面水泥一面墙纸),各自有其不同的正方向。 打开Cull, 就能在任何一个方向只看到一个正确的面。但是,实际从性能考虑上有时不能或最好不用cull,比如PS2。此时就需要在两个墙之间留距离,再在墙的侧面多加表示厚度的墙面。。。

14.ShadingMod-e可以指定FLAT,GOURAUD,PHONG,这发生在渲染过程中的哪一步? 和FillMode有什么关系?
ShadingMod-e现在的技术还不能指定PHONG。 有的平台发生在渲染的rasterizat-ion,少数平台在vertex processing-.  或两者。 比如即使rasterizat-ion支持FLAT mode, 你也可以人为编程简化vertex processing-,只计算triangle中一点的光照,甚至根本就只传一个Vertex normal到VU1或GPU中。 和FillMode有关系,因为大多平台对FLAT mode做了优化, 性能提高。

15.UV有什么用?UV和ST有什么区别?UV在光栅化时需要被插值吗?插值完了再做什么?
这是PS2特有的概念。
UV是在贴图坐标定义的。比如贴图是128*128, U和V各自的范围就是从0到128。
ST是逻辑的,U和V的范围都是从0到1。(超出重复)

16.VertexShad-er和PixelShade-r分别对应于FixedPipel-ine的哪些步骤? 先搞清楚FixedPipel-ine对进一步研究Programmab-lePipeline-很有好处,你同意吗?为什么?
FixedPipel-ine可以又很多的API function提供参数控制。大部分都是对应于VertexShad-er的。但是TextureSta-ge,AlphaBlend-ing,Bump等特效对应于PixelShade-r。FixedPipel-ine本身还是有用的。同意,不告诉你为什么。

17.如果上面的问题你都搞清楚了, 你能在心中清晰地描述出每一个三角形, 是如何从刚开始的模型数据, 成为屏幕上的象素点?
晕。。。问别人搞清楚没有。。。 你呢?
在心中清晰地描述。。。描述。。。 啊我看到了。。。看到了。。。 什么? 不告诉你。。。

18.BSP,OSP,Voxel...它们处于RenderPipe-line的什么地位上?
没有位置。 这些是图形Scene Graph 中的部分,一般跟RenderPipe-line不着边。当然,在PS2上你可以在VU1中写你自己的BSP surface renderer,等等。

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值