轻松实现3D图形处理的设计技巧
1. 科学性
如今,越来越多的桌面PC采用3D图形绘制技术来获得高真实感的显示效果。诸如工业与艺术行业的设计和制造、科学研究中的建模、交通和旅游业中的虚拟漫游以及3D游戏等。
3D图形绘制技术的本质,是通过一系列算法来模拟自然界中物体在人眼中成像的过程,算法从几何建模、空间变换到计算空间中每个点的光照、阴影以及纹理等等。算法越趋近真实,物体的绘制效果也越逼真。显然,以有限性能的数字系统去还原真实的自然界是极其困难的,考虑的因素越多越细,系统的复杂度越高,实时性越低。因此,任何一款图形绘制系统都必须根据自身硬件的规模、以及场景中物体的特点,在真实性与实时性之间寻求平衡。
图2.1 移动设备图形领域的发展
过去几十年中,桌面PC及工作站一直是3D图形绘制的主流平台,图形处理系统的架构与算法也主要基于这种大面积、高存储带宽、高功耗的特性。然而,移动设备在外部存储带宽、功耗、面积等制约因素上有着数量级的劣势。但是,移动设备往往又仅需在较小的分辨率上绘制图形。较小的分辨率意味着能接受以恰当的方式忽略一些细节,并且通常不会在一个屏幕中包含太多物体。正是和桌面平台相比之下的这些劣势与优势,使面向移动设备的3D图形处理系统自成一体,绝不能靠简单地移植桌面图形处理系统来实现。
因此,研究与设计全新的体系架构、执行流程、算法、开发调试环境及方法等,都成为面向移动设备的图形处理系统的关键技术与创新难点。概括起来,本项目的科学性有如下几点:
1)基于移动平台上的图形处理器的硬件架构、算法和接口,业内都有各自的侧重和妥协,尚无较统一方案。研究分析图形系统各阶段的关键技术,评估多种实现方案间的优劣,将具有重大的科研及市场价值。
2)由于本项目涉及到了图形处理的各个方面,而国内尚无GPU生产厂家,因此对于国内涉及到3D图形显示的各个相关产业都具有重要的意义。本项目将会帮助厂家能够更好地提高3D图形处理方面的技术,致力于给消费者更好的体验,以使国产电子产品取得更大的市场份额。
3)最近几年,随着移动设备在工业、生活中的普及与发展,3D图形绘制系统也逐渐成了移动设备中的核心部件。研究发展移动设备上的3D图形处理技术具有重大意义。
2. 创新性
从算法和硬件架构两个层次进行优化,并从运算速度、芯片功耗和灵活性三方面考虑,以实现用一个较低复杂度和较低功耗的3D图形处理器对真实感图形实现硬件加速。本课题组的创新性主要体现在如下几个方面:
1)所有算法采用定点实现,并在精度允许的情况下尽量减小数据位宽,以降低电路复杂度和功耗。
2)硬件结构上含有基于Tile的光栅单元。基于Tile的绘制方法大大减小了访问外部存储器的带宽,从而降低了功耗。
3)采用FPGA进行仿真验证工作,通过FPGA的并行性和流水线,可以在一个较低的时钟频率(50MHZ)下达到比较理想的数据处理能力。而这正是图形处理器所必需的。
3. 技术方案
3D图形绘制系统的基本组成,是3D图形算法程序以及图形处理器硬件。确定算法程序及硬件结构后,便可进行各种测试分析。
3.1 3D图形算法
要能实时绘制3D场景,就需要在计算机中为场景内每一个物体进行建模,为了方便在计算机中对不同形状不同属性的物体建模,最常用的方法是用许多三角形面片构成一个多面体来拟合实际物体。对这个物体的3D图形绘制流程,大部分内容就是对这些三角形的绘制。
因此基础3D图形绘制可以分为两部分,第一部分是处理物体的顶点,第二部分是处理每一个像素,就三角形而言,即三角形的三个顶点,以及三角形中的每一个像素。
3.1.1 坐标转换
物体建模时,采用这个物体的几何坐标来表示其形状,这时所使用的坐标系称为模型坐标系,模型坐标系的原点往往取自几何物体的某个点或者附近的某点。当这个物体和其他物体一起被设定到3D场景中时,多个物体必须公用场景的原点,此时,大场景构成一个世界坐标系。而人眼从显示器去看这个大场景时,只会以特定的角度及深度看到场景的一部分的投影,即存在一个视椎体,这个投影最终出现在屏幕上时,变成平面的图像,即屏幕坐标系。
物体在这几个坐标系间转换,需要对每个几何顶点做矩阵运算。矩阵的值由坐标转换时的相关参数确定,例如,在世界坐标系中的偏移,旋转,缩放值,视椎体的深度角度,屏幕的分辨率等。
3.1.2 光照计算
正确的光照,改变物体本来的颜色明暗,并立刻产生显著的真实感。光照处理的对象是计算物体上每个点所反射出的光强大校这个过程需要根据光源的类型、属性,物体表面的材质,物体表面法线与光
- 3D图形芯片的算法原理分析(07-16)
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)