网站首页   公司介绍   行业新闻   技术文章   应用示例   产品中心   在线留言   联系我们
3D 绘图原理 (3D Graphics Pipeline ) 之一
时间:2015-5-5 20:18:24,点击:0

 

1 前言


3D,顾名思义是三维的绘图,相对于2D绘图来比较的话,3D绘图提供作画者在三维空间中表现的自由度。但是我们的屏幕是一个2D的平面,因此所有的3D绘图都脱离不了一个核心-「投影」(Projection)

在真实世界中,有各式各样的物体,当我们透过一个窗框看出去,事实上就是看到了世界在窗框上的投影(在这里我们先不考虑立体视觉,请想象你只有一只眼睛)3D绘图就是类似的感觉,作画者在三维的空间(称作场景,Scene)中绘出许多对象,经过3D绘图技术的演算,成为我们在屏幕上所看到的画面。

要做一个投影,需要知道一些信息,首先是摄影机(camera,eye point)的位置,摄影机朝向的方向,摄影机的视角(包含上下与左右的开展角度),摄影机的「上向量」(upvector),近平面(near),远平面(far)。有了这些信息,我们定义出了一个「投影」,来说明如何将一个3D Scene投影到一个矩形的平面上。所有的3D绘图技术,讲得简单些,都是在做这个投影而已。


如何表现一个场景?
   
现在我们知道,场景是一个三维的空间,而我们的计算器是个处理数字数据的机器,那么,如何将一个三维空间中的绘图数据用数字的数据记录下来呢?其中的一个方法是使用顶点(Vertex)组成网眼(Mesh)架构,来记录三维的数据。注意我说是「其中一个」方法,意思就是你也可以选择用各种参数方程式来表达一个曲面,从而表现整个场景,但是今日的技术主流是使用Vertex

一个Vertex可以带有许多数据,称作属性(Attribute),比如说该点在空间坐标系中的坐标(Coordinate)、法向量(Normal)、该点的颜色(Color)、纹理坐标(Texture coord.)Vertex同时也可以作为贝兹曲面(Bezier surface)NURBS曲面的control point。因此我们用Vertex来表达一个三维的空间。当我使用越多的Vertex,意味着带有越多的信息,就可以把图形表现得越细致,当然,这不是必然的,却有很大程度的正相关性。

有了顶点,我们必需知道这些顶点如何组成一个3D场景中的对象,也就是说,哪些顶点组成了一个面、哪些面又组成了一个物体。由顶点(Vertex)组成的结构称为Mesh,想象许多的顶点由线连结起来,形成一个类似鱼网状的图形,这是为什么它称为Mesh的理由。这些线条说明了Vertex如何连结成为Mesh,我们称作Primitive,注意Primitive并不是线条而是一个抽像的连结概念,在这里我只是为了解释方便而形容它像是线条。最简单的Primitive有三种,点、线、三角形。而这就是全部了,因为所有的多边形都可以拆成三角形,关于这方面我会在之后讨论硬件时再详细的说明。

于是VertexPrimitive组成了一个3D scene,而3D绘图技术的主要工作,便是如何将这些VertexPrimitive的数据,转换成屏幕上一个一个点的颜色。这些颜色由红蓝绿(RGB)组成,根据其颜色深度(color depth),每个点可能从8bit32bit之类有不同的资料大小。但总而言之是个数字(Digital)数据,从一组数字数据(VertexPrimitive)运算出另一组数字数据(例如 1024*768,32bit depth color),正是计算器领域的主题。

打印】【关闭
新闻分类  
硬件技术
软件技术
应用技术
产品中心
nVIDIA显示卡
AMD显示卡
外置设备
信号线缆
Matrox迈创显示卡
应用示例
3*1 球面融合
3*3拼接+ 1路回显画面
416 台LCD显示器的庞大电视墙

琛之睿电子 版权所有

本站部分资料来源于网络,仅作为展示之用,版权归原作者所有.如果侵犯了您的权益,请来信告知,我们会尽快删除.

粤ICP备15029931号

HB-VX4,分屏器,扩屏宝,显示宝,识别器,专业卡 ,多屏卡,Quadro,Firepro,k600,v4800,v4900,w9100,w600,k2000,丽台,蓝宝石,MST,主动线