由于很多人使用渲染器不知道背后的实质。我到网上找了一篇2d和3d关系的文章。实际上渲染就是用一系列的算法,把三维的图像拍到二维屏幕上。根本来说就是坐标转换。其实我们的三维软件说到底就是我们的一种视错觉。二维的电脑屏幕展现出来三维的空间感。
一,2D与3D有什么关系
2D就是我们平常在纸上画矩形之类的,他们只有宽度和高度。而3D比2D多一个深度。真实世界中,由于我们的双眼的存在,看到的是3D世界。即使你遮住一只眼,由于光线照射产生的表面着色和近大远小的缘由,这些效果激发了我们大脑的记忆,这使得我们观察到的仍是3D世界。
那对于在屏幕上又是怎么样显示3D的?其实在在屏幕上只能显示2D图形,人们通过将屏幕上的点连起来使得观察者产生3D的错觉。可以这样说,在屏幕上显示3D的原理就是,2D+连接点=3D。至于如何连接点以及如何把3D图形的点映射到2D屏幕上,这与图形算法有关。
二,2D转换3D的方法及其概念
Rendering(渲染),把数学和图形数据转换成3D空间图像的操作或指图像。
Transformaton(转换),把2D下的点连接,使得观察者产生3D的错觉。
Projection(投影),把3D坐标转换为2D屏幕坐标。
Rasterization(光栅化),绘制或填充每个定点之间的像素形成线段。在大多数渲染的情况下,我们并不使用线段,而是用实心三角形进行渲染。
Shading(着色),改变顶点间的表面的颜色值。
Shader(着色器),在图形硬件上执行的单独程序,用来处理顶点和执行光栅化。
Texture Mapping(纹理贴图),把图片贴到三角形或多边形上,使3D效果更加显著。
Blending(混合),把不同颜色混在一起。可以在一个图形中绘制另一个图形,使得效果真实。
上面渲染是整个过程,其他的都是在2D上显示3D的方法。可以这样说,3D几何体就是在2D平面上做顶点的连接,然后对三角形进行光栅化,如果要效果更逼真,就要进行着色、纹理、混合。
三,关于2D和3D的坐标系
在2D下,采用的是笛卡尔坐标系,即x轴为水平方向,向右为正。y轴为垂直x轴,向上为正。关于如何,把逻辑坐标转换成物理屏幕像素坐标,可以通过坐标裁剪。有两种比较常见的坐标裁剪方法。一种是裁剪区域就是窗口内部最小和最大的x和y值。另一种就是根据窗口制定原点的位置。
Primitives(图元),一维或二维到的实体或表面。图元的每个角称为顶点(Vertex,复数Vertices),这些顶点拥有坐标。在3D下,笛卡尔坐标系多了一个z轴,z轴同时垂直于x轴和y轴,向外为正。
四,3D坐标转换为2D坐标
3D坐标转换为2D坐标,需要投影(Projection),投影分为正投影(Orthographic Projection)和透视投影(Perspective Projection)。投影后,在2D上窗口上显示得叫做视景体(Viewing Volume)。
实际上“创建实体3D几何图形就是一种连线游戏”。
以上都说明了,我们的电脑或者说是三维软件是如何把三维影像呈现在我们面前的了。