呆若木'集

 

 Cool Links!

                             

  What's New!

              

         

                                

            

Who'S  DoLLs?

                      

                          

                  

 

 

 

 

3d与2d的科学区别 [2006-1-18]
gohan 发表在 动漫游三栖人
开篇语:万事万物皆科学,任何事情都不可想当然。



--------------------------------------------------------------------------------


1。



--------------------------------------------------------------------------------


开门见山。首先,来解释物理意义。

2D、3D中的“D”指“维度”,2D即双维度,3D即三维度。那么,何谓“维度”?我们找一张纸,在纸上画一个正方形。现在我们可以看到,这个正方形具有“长”和“宽”这两个属性。如果用x来表示厂,y来表示宽的话,我们可以构成一个x/y坐标系,这样一来正方形就完全处于这个坐标系中。正方形上的的任何一点都有一个唯一的坐标值,这个坐标值的内容包括两个数据:该点所在的x值和y值。

同样,对于3D物体来说,我们也可以建立一个“长”、“宽”、“高”坐标系,暂且以x/y/z来表示坐标轴。那么,对于任何一个3D物体,我们都可以用一个包含x、y、z三个数值的集合来唯一地表示该物体上的任何一点。

在这里,我们应该注意到,3D和2D的区别在于3D世界多了一个表示“高度”的坐标轴。如果去掉这个坐标轴,那么3D就变成了2D,也就是说如果这个坐标轴的值是0的话,3D坐标系就可以用来表示2D图形。但是2D坐标系仅仅有两根坐标轴,即只有两个维度,所以无论如何也不可能用来表示3D物体。

即:2D是平面,3D是空间。空间包含平面。



--------------------------------------------------------------------------------


2。



--------------------------------------------------------------------------------


明白了3D和2D的物理区别以后,我们来稍微涉及一下透视现象。

相信很多人都照过相。在照相的时候,我们会发现,在相片上用尺子量一下,近处的东西比远处的东西大,即使近处是一个人远处是一艘油轮。这就是透视现象。

毫无疑问人和油轮都是3D空间中的物体,将他们原样呈现在2D介质上是不可能的,正如前面所说。所以,唯一的解决方法就是,用透视现象来制造3D感觉。

照像机本身是一个3D空间物体,它可以在3D空间中自由移动。我们应该有这样一个经验,如果我们靠近“人”,那么相片上的“人”就会显得更大,远处的“油轮”显得更小,反之亦然。

但是如果我们对着一张照片再拍照,我们会发现不管是靠近照片上的人像还是靠近照片上的油轮像,它们的大小比例都不会改变。(此时不作3D变换,即只和照片平行移动,不做倾斜等涉及到第三维度的位置变化)

这,就是3D和2D的现实区别。

3。



--------------------------------------------------------------------------------


讲到这里,我们差不多可以稍微谈谈计算机图形学了。

显然我们的屏幕是一个平面(范平面),它的任务是显示内存中的信息给我们。形象的说,电脑上有一个即时成像的摄像机(显卡),我们的屏幕就是这个摄像机的成像部件。这个成像部件和相片一样,可以完整显示2D图形,也可以通过制造透视现象来表现3D景象。

当计算机需要显示2D图形时,通常的做法(DirectX的做法)是在显存中开辟两块空间,用来储存基于x/y坐标系的数据。当需要显像的时候,计算机直接把坐标系中的数据贴上屏幕。

当计算机需要显示3D场景时,DirectX的做法是在内存中开辟3D坐标系空间(对于计算机来说是三元数组)。首先要建立一个世界坐标系,这个坐标系就如同我们的宇宙,是容纳内存中其他3D物件的容器。然后,计算机往这个容器内添加物体(3D模型)。注意,此时还仅仅是计算机内存世界的建立,我们屏幕上还看不到任何东西。当内存世界建立完毕以后,计算机会建立一个摄像机,这个摄像机具备三个坐标:镜头方向、右方向和上方向。这个摄像机摄到的东西就是我们在屏幕上看到的东西,这三个坐标决定了我们看到的到底是什么。当摄像机在内存世界中游走时,我们在屏幕上看到的东西也在不断的变化。

综上所述,我们应该注意到,当计算机显示3D场景时,相当于我们用照相机给人和油轮照相,显示2D图形时则是在给现成的2D图形照相。

很明显,显示3D场景的开销远远大于显示2D图形,所以早期的计算机游戏都是2D的。不过,设计师们显然不满足于一眼就开出长和宽的画面,所以他们想出了一个绝妙的解决办法:让那些2D图形“看起来像”3D。比如星际争霸,暗黑破坏神,它们的每一个物件图形都是一张平面图片,计算机所需要做的仅仅是把这些图片按需求贴上屏幕而已。在3D游戏里,所有的物件都有一个模型(记录了该物件长宽高各点的信息),我们看到的东西仅仅是摄像机拍摄下来的照片。

照这个原理来看,关于视野方面,我们可以在2D游戏中做到的事情最多(如果设计者允许)是:水平移动,等比例缩放。而在3D游戏中,我们最多可以做到:任何方向的移动,镜头的缩进拉远(表现为透视现象)。

这,就是3D和2D在计算机中的区别。

≡≡≡≡≡ 评论(共 条)我要评论

                                                                                                                      

Powered by 5DBLog Design by  DoLLs