三维计算机图形

三维计算机图形(3D Computer Graphics)是计算机和特殊三维软件帮助下创造的作品。一般来讲,该术语可指代创造这些图形的过程,或者三维计算机图形技术的研究领域,及其相关技术。

三维计算机图形和二维计算机图形的不同之处在于计算机内存储存了几何数据的三维表示,用于计算和绘制最终的二维图像。

一般来讲,为三维计算机图形准备几何数据的三维建模的艺术和雕塑及照相类似,而二维计算机图形的艺术和绘画相似。但是,三维计算机图形依赖于很多二维计算机图形的相同算法。

计算机图形软件中,该区别有时很模糊:有些二维应用程序使用三维技术来达到特定效果,譬如灯光,而有些主要用于三维的应用程序采用二维的视觉技术。二维图形可以看作三维图形的子集。

技术

OpenGL和Direct三维是两个用于产生实时图象的流行的API。(实时表示图象的产生在“真实的时间”中,或者说“随时”)。很多现代显卡提供了基于这些API的一定程度的硬件加速,经常使得复杂的三维图象实时产生。但是,真正产生三维景象并不一定要使用其中的任何一个。

三维计算机图形的创建

创建三维计算机图形的过程可以顺序分为三个基本阶段:

  • 建模
  • 场景布局和动画
  • 绘制

建模

建模阶段可以描述为“确定后面场景所要使用的对象的形状”的过程。有很多建模技术,他们包括(但不仅仅是):

  • 构造实体几何
  • NURBS建模
  • 多边形建模
  • 细分曲面
  • 隐函数曲面

建模过程可能也包括编辑物体表面或材料性质(例如,颜色,荧光度,漫射和镜面反射分量—经常被叫做粗糙度和光洁度,反射特性,透明度或不透明度,或者折射指数),增加纹理,凹凸映射和其它特征。

建模可能也包括各种和准备动画的三维模型相关的各种活动,有时在复杂的任务建模中,这将自己成为一个阶段,称为索具(rigging)。对象可能用一个‘‘骨架‘‘撑起来,一个物体的中央框架,它可以影响一个对象的形状或运动。这个对动画构造过程很有帮助,骨架可以自动决定模型相关部分。参看正运动动画和逆运动动画。在索具阶段,模型也可以给定特定的控制,使得运动的控制更为简便和直观,例如用于声音嘴唇同步的面部表情控制和嘴形(音素)。 建模可以用以此为目的设计的程序(例如Lightwave建模软件,Rhinoceros 三维,Moray),应用的模块(Shaper,三维 Studio Max的Lofter)或者某些场景描述语言(例如POV-Ray)。在有些情况,这些阶段之间没有严格的区别,在这些情况下,建模只是场景创建过程的一部分(例如Caligari trueSpace就属于这种情况)。

三角剖分和网格

把物体的表示(例如球面的中点坐标和它的表面上的一个点所表示的球面),转换到一个(球面的)多边形表示的过程,称为剖分(tesselation)。该步骤用于基于多边形的绘制,其中对象从象球面,圆锥面等等这样的抽象的表示(“体素”),分解成为所谓“网格”,它是互相连接的三角形的网络。

三角网格(而不是正方形等形状)比较流行,因为它们易于采用扫描线绘制进行绘制。

多边形表示不是所有绘制技术都必须的,而在这些情况下,从抽象表示到绘制出的场景的转换不包括剖分步骤。

场景布局设置

在渲染成图象之前,模型必须放置在一个场景中。这定义了模型的位置和大小。

场景设置涉及安排一个场景内的虚拟物体,灯光,摄像机和其他实体,它将被用于制作一幅静态画面或一段动画。

照明是场景布置中一个重要的方面。就象在实际场景布置的时候一样,光照是最终作品的审美和视觉质量的关键因素之一。因而,它是一项很难掌握的艺术。光照因素可以对一个场景的氛围和情绪反映作出重大贡献,这是为摄影师和舞台照明师所熟悉的事实。

设置动画

主条目:计算机动画

动画是指对模型随时间的变化描述。常见的方法有设置关键帧,动作捕捉、骨骼动画和逆运动学(ik)等 这些技术经常结合使用。

渲染

渲染是从准备的场景创建实际的二维景象或动画的最后阶段。这可以和现实世界中在布景完成后的照相或摄制场景的过程相比。

用于诸如游戏或模拟程序这样的交互式媒体的渲染需要实时计算和显示,速度约为20到120帧每秒。非交互式媒体(譬如录象或电影),渲染的慢得多。非实时渲染使得有限的计算能力得以放大以获得高质量的画面。复杂场景的单帧的渲染速度可能从几秒到一个小时或者更多。渲染完成的帧存贮在硬盘,然后可能转录到其它媒介,例如电影胶卷或者光盘。然后这些帧以高帧率播放,通常为24,25,或30帧每秒,以达成运动的假象。

最后的作品经常会需要达到真实感图形质量,要达到这个目的,很多不同和专门的渲染技术被发展出来。这些技术的范围包括相当非真实感的线框模型渲染技术,到基于多边形的渲染,到更高级的技术,例如:扫描线渲染、光线跟踪或者辐射着色。

渲染软件可以模拟例如镜头光晕、景深或者运动模糊这样的视觉效果。这些技术试图模拟镜头和人眼的光学特性所造成的视觉现象。这些技术可以增加场景的真实程度,虽然该效果可能只是镜头的人造模拟现象。

为模拟其他自然发生的效应的各种技术被发展出来,例如光和不同形式的物质的相互作用。这些技术的例子包括粒子系统(它可以模拟雨,烟,或者火),体采样(用于模拟雾,尘或者其它空间大气效果),焦散效果(用于模拟光被不均匀折射性质的表面所聚焦的现象,例如游泳池底部的光的涟漪),还有次表面散射(subsurface scattering)(用于模拟光在人的皮肤这样的实体对象内部反射的现象)。

渲染过程计算上很昂贵,特别是所模拟的物理过程复杂且多样时。计算机的处理能力逐年上升,使得真实感渲染的质量渐进的提高。生产计算机动画的电影工作室可能用渲染农场(render farm)来进行及时的渲染。但是,硬件费用的下降使得在家庭计算机系统上产生少量的三维动画完全成为可能。

渲染器经常包含在三维软件包中,但是有一些渲染系统作为流行三维应用程序的插件使用。这些渲染系统包括Final-Render,Brazil r/s,V-Ray,Mental Ray,POV-Ray,和Pixar Renderman。

这些渲染程序的输出经常用于最终电影场景的一小部分。很多材料的层次可以分别渲染,然后采用合成软件集成到最终的画面中。

反射和明暗模型

现代三维计算机图形严重的依赖于一个简化的反射模型称为Phong反射模型,它和Phong明暗图是完全不同的主题,不能混淆二者。

在光的折射中,有一个重要的概念称为折射率。在多数三维编程实现中,该值“index of refraction”(折射率)通常简写为“IOR”。

平直着色的一个例子,三维绘成的敦刻尔克级战列舰

三维计算机图形中流行的反射绘制技术包括:

  • 平直着色(Flat shading):使用多边形的法矢量和位置以及光源的位置和强度对于物体的每一个多边形给出一个明暗值的技术。
  • Gouraud着色:H。Gouraud于1971年发明,一个快速的基于顶点和光源的关系的着色技术,用于模拟光滑着色的曲面。
  • 纹理映射:通过把图像(纹理)映射到多边形上来模拟曲面的大量细节的技术。
  • Phong着色:由Bui Tuong Phong发明,用于模拟光滑着色曲面的镜面反射高光效果。
  • 凸凹纹理映射:由Jim Blinn发明,用法向扰动技术模拟带褶皱的曲面。
  • Cel着色:用于模拟手绘动画的观感的一种技术。

三维图形应用程序接口(API)

三维图形已经非常流行,特别是在电子游戏中,这使得专门化的应用程序接口(API)被创建出来用于简化计算机图形产生的各个阶段的处理。这些API对于计算机图形硬件厂商也是极为重要的,因为他们提供给程序员一种使用硬件的抽象方式,而依然能够利用那个显卡的特定硬件的长处。

这些三维计算机图形的API颇为流行:

  • OpenGL和OpenGL着色语言
  • OpenGL ES嵌入式设备的三维API
  • Direct三维(DirectX的子集)
  • RenderMan
  • RenderWare
  • Feekood

也有一些高层的三维场景图API,他们提供在底层绘制API之上的附加功能。处于活跃的发展中的这类程序库包括:

  • QSDK
  • Quesa
  • Java 三维
  • JSR 184(M3G)
  • NVidia Scene Graph
  • OpenSceneGraph
  • OpenSG
  • Wooyoo
  • OGRE
  • Irrlicht
时间: 2024-10-11 11:47:41

三维计算机图形的相关文章

three.js是什么,能干嘛,和webgl什么关系

如今浏览器的功能越来越强大,而且这些功能可能通过JavaScript直接调用.你可以用HTML5标签轻松地添加音频和视频,而且可以在HTML5画布上创建各种交互组件.现在这个功能集合里又有了一个新成员,即支持webGL.通过webgl可以直接使用显卡的计算资源,创建高性能的二维和三维计算机图形,然后在JavaScript里直接使用webGL编程,创建三维场景并生成动画,这个过程非常复杂,而且容易出错.three.js库可以简化这个过程. ----摘自<Three.js开发指南> 看了上面的摘文

Wings 3D

Wings 3D 编辑 Wings 3D 是一个开源的三维计算机图形软件.使用翼边数据库.注重于多边形建模,构思取与 Izware 的 Nendo 和 Mirai.支持多种操作系统,包括 Linux.Mac 和 Windows.基于 Erlang 环境. 亮点是:Wings 3D is open source and completely free for use in both personal and commercial projects. 其官网地址: http://www.wings3

OpenGL 第一篇 概览

------------------------------------------------------------------------------------------------------------------------ 从现在开始,认真学习OpenGL的相关知识,把读过的每一章都做记录,希望能坚持到最后. -------------------------------------------------------------------------------------

虚拟现实的关键技术和三大特点

虚拟现实是多种技术的综合,包括实时三维计算机图形技术,广角(宽视野)立体显示技术,对观察者头.眼和手的跟踪技术,以及触觉/力觉反馈.立体声.网络传输.语音输入输出技术等. 现有虚拟现实系统的关键技术 1:动态环境建模技术 虚拟环境的建立是虚拟现实技术的核心内容.动态环境建模技术的目的是获取实际环境的三维数据,并根据应用的需要,利用获取的三维数据建立相应的虚拟环境模型.三维数据的获取可以采用CAD技术(有规则的环境),而更多的环境则需要采用非接触式的视觉建模技术,两者的有机结合可以有效地提高数据获

Linux 3D 编程学习总结

Linux下应用OGRE开发3D linux下应用OGRE开发3D的资料网上很少,今天抽空整理一下. 大部分内容参考OGRE主页http://www.ogre3d.org/. 首先根据主页提示,我们可以利用已有资源构建一个工程,具体步骤如下: 第一步,准备工作,确定你是在linux环境下,进入终端,输入一下命令: 编译和配置 sudo apt-get install build-essential automake libtool 需要的依赖 sudo apt-get install libfr

unity3d最新面试题与参考答案汇总

1.在类的构造函数前加上static会报什么错?为什么? 构造函数格式为 public+类名,如果加上static会报错(静态构造函数不能有访问修饰符)原因:静态构造函数不允许访问修饰符,也不接受任何参数: 无论创建多少类型的对象,静态构造函数只执行一次: 运行库创建类实例或者首次访问静态成员之前,运行库调用静态构造函数: 静态构造函数执行先于任何实例级别的构造函数: 显然也就无法使用this和base来调用构造函数. 2.C# String类型比stringBuilder类型的优势是什么? 如

U3D常用题

最先执行的方法是:1.(激活时的初始化代码)Awake,2.Start.3.Update[FixUpdate.LateUpdate].4.(渲染模块)OnGUI.5.再向后,就是卸载模块(TearDown),这里主要有两个方法OnDisable与OnDestroy 高频问答的问题:1.什么是渲染管道?是指在显示器上为了显示出图像而经过的一系列必要操作.渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去.主要步骤有:本地坐标->视图坐标->背面裁剪->光照->裁

光线投射算法与光线跟踪算法

原文:http://blog.csdn.net/changbaolong/article/details/8461704 光线跟踪计算机算法的一般描述 为了生成在三维计算机图形环境中的可见图像,光线跟踪是一个比光线投射或者扫描线渲染更加逼真的实现方法.这种方法通过逆向跟踪与假象的照相机镜头相交的光路进行工作,由于大量的类似光线横穿场景,所以从照相机角度看到的场景可见信息以及软件特定的光照条件,就可以构建起来.当光线与场景中的物体或者媒介相交的时候计算光线的反射.折射以及吸收. 光线跟踪的场景经常

Unity常见面试题大全

1.       [C#语言基础]请简述拆箱和装箱. 答: 装箱操作: 值类型隐式转换为object类型或由此值类型实现的任何接口类型的过程. 1.在堆中开辟内存空间. 2.将值类型的数据复制到堆中. 3.返回堆中新分配对象的地址. 拆箱操作: object类型显示转换为值类型或从接口类型到实现该接口值类型的过程. 1.判断给定类型是否是装箱时的类型. 2.返回已装箱实例中属于原值类型字段的地址. 2.        [.NET(C#)] attribute,property,markup,ta