3 rendering pipeline

原创 2013年12月07日 09:08:01

   3d绘制流水线,已经形成很多年的理论,把虚拟的3D世界的场景转化为2d的图像显示在屏幕上


是这么个流程:


局部坐标系

世界坐标系

观察坐标系

背面消隐

光照

裁剪

投影

视口坐标系

光栅化


其中,关于坐标系的变换都是由矩阵运算实现的,DX提供了这些运算,这类运算可以得到硬件加速支持

 

局部坐标系

用来定义物体的三角形单元列表(物体本身),这里不用考虑其他的因素(大小,位置,朝向)

这些是在模型被做出来的时候就有的

 

世界坐标系

每个模型在3D世界里的坐标,朝向,相对比例

从 局部坐标 到 世界坐标 是通过世界变换

世界变换是一个矩阵运算   

                                              先定义变换矩阵(平移,旋转,缩放)然后设置世界变换矩阵,将当前设备的模型从原点变到世界坐标位置

这个操作会变换所有的模型,所以变一个画一个,画完再变回来

 

 

观察坐标系

通过取景变换,把摄像机变换到世界坐标原点,朝向Z轴正方向,所有物体同步一起变换(和摄像机相对位置和朝向不变)

变换之后的几何体就位于观察坐标系中

 

背面消隐

每个多边形都有两个面,一个规定为正面,一个为背面,对于封闭体,其内部的那些面为背面,摄像机禁止进入物体内部,所以背面是看不到的。

正面朝向摄像机的多边形是正面朝向多边形,相对的有背面朝向多边形,背面朝向的会被正面朝向的遮挡,从而被剔除

这个过程就是背面消隐

在区分一个多边形是正面还是背面的时候,我们之前用过的顶点索引就起作用了,顶点索引是顺时针方向绕序记录的,

在观察坐标系中  顺时针记录的多边形正面朝向     逆时针的背面朝向


光照

在世界坐标中定义,在观察坐标系中起作用,有光照会产生更加逼真的效果


裁剪

将视域体之外的物体剔除掉,就是裁剪,分几种情况进行(完全在内,完全在外,一部分在内)


投影

获取3D场景的2D表示(从n 维 转换到  n-1 维)

这里用的是   透视投影      它会产生透视缩短的视觉效果,近大远小,刚好是我们想要的效果

DX进行这个过程是用投影矩阵,这个矩阵描述视域体

把顶点坐标转换成2d描述


视口变换

把投影得到的2D顶点坐标转换到另一个窗口(任意大小,可以是屏幕,也可以是一个小窗口)

视口变换是定义一个描述视口的结构,然后设定到设备,完成变换


光栅化

完成上述的所有变换之后,就会得到一个2D三角形单元列表,为了绘制每个三角形单元,计算构成三角形单元的每个像素的颜色值

最终结果是一幅2d图像

这个过程计算量很大, 尽量借助图形加速卡


相关文章推荐

【《Real-Time Rendering 3rd》 提炼总结】(二) 第二章 图形渲染管线 The Graphics Rendering Pipeline

本文由@浅墨_毛星云 出品,转载请注明出处。   文章链接: http://blog.csdn.net/poem_qianmo/article/details/70544201这篇文章是解析计...

OpenGL Rendering Pipeline

  • 2017年01月01日 17:15
  • 8.52MB
  • 下载

Cocos2d (v.3.0) rendering pipeline roadmap

  • 2015年10月25日 00:08
  • 350KB
  • 下载

DirectX 11游戏编程学习笔记之6: 第5章The Rendering Pipeline(渲染管线)

本文由哈利_蜘蛛侠原创,转载请注明出处!有问题欢迎联系2024958085@qq.com           注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候,会使用...

The 3D Graphics Rendering Pipeline

  • 2010年05月01日 16:27
  • 1.35MB
  • 下载

Unity3D翻译——Unity's Rendering Pipeline

Unity's Rendering Pipeline         Unity的渲染流水线 原文地址:http://unity3d.com/support/documentation/Compon...

Android's 2D Canvas Rendering Pipeline

This is a conceptual overview of how Android's 2D Canvas rendering pipeline works. Since Android's C...

OpenGL Rendering Pipeline

OpenGL Rendering Pipeline   Vertex Operation顶点操作(平移、旋转、伸缩、光照) Each vertex and normal coordinates ...

The Rendering Pipeline

3D rendering pipeline(重点:vertex processing)

3D rendering pipeline (生成管道)           之所以成为管道,是因为整个过程像管道一样,前一个子过程的输出作为后一个子过程的输入。           管道分为四个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:3 rendering pipeline
举报原因:
原因补充:

(最多只允许输入30个字)