3D Game Engine Design 2rd 读书笔记
文章平均质量分 78
huazai434
菜鸟,爱折腾
展开
-
Chapter 1 本书简介
本书的重点是Scene Graph Management System 以及所包含的各个渲染组件和相关的数学理论。概括性介绍了物理,碰撞检测,软件工程,内存管理等知识。因此本书更适合的名字是“3D 游戏图形引擎设计".具体的讲,本书分为六大板块:第一,图形系统。第二章详细介绍图形渲染管线和相关的基础理论。第三章讲述图形系统接口。第二,场景图。第四章讲述Scene Grapha Management。第五六七章分别讲述了Scene Grapha 的子系统。如动画,spatial sorting 和 L原创 2010-07-17 11:17:00 · 874 阅读 · 1 评论 -
4.3RenderState及其更新
<br /><br />主要的RenderState分为global state,lights和effects。<br />一,抽象基类GlobalState<br /> 该类为一个抽象基类,所有的全局状态类型如alpha blending,triangle culling,material,polygon offset,stenciling,wireframe,depth buffering等都要基于该类创建。Node,Geometry均有相关接口用于global state的存储,加载和移除。原创 2010-10-27 22:36:00 · 1696 阅读 · 0 评论 -
Chapte6 Spatial Sorting
<br /><br />第六章 Spatial Sorting<br />Spatial Sorting的两个目的:<br />(1) 便于不透明物体从前往后的绘制,半透明物体从后往前的绘制。<br />(2) 按Render State相似性排序,以减少RenderState改变的次数。<br /> <br />一,BSP树<br />该法用于粗略的空间排序。<br />BSP类基于Node类,有3个子节点:positive,negative,和middl原创 2010-10-27 22:42:00 · 1154 阅读 · 0 评论 -
18.5 reference counter
<br /><br />一.作用:共享类时,用于标记类被共享的次数。每被一个类共享,rc++;每有一个类结束共享,rc--;当rc=0时,被共享的类才被销毁。这避免了:<br />1. 某类已无共享,但仍留在内存中。<br />2. 某类仍被其他类共享,却被提前销毁。<br />模型,render state 均可被共享。<br />一般通过智能指针来管理rc。<br />Object 类的两个内容:1。Run time typeinformation;(用于存储类的类型)<br />原创 2010-10-27 22:41:00 · 781 阅读 · 0 评论 -
4.6the Drawing Pass
<br /><br />一些疑问:为什么在对RenderState进行更新时,不对EFFECT进行更新?<br /> 为什么不把Global Effect直接存在Geometry中而是存在索引表中?<br />该部分没有什么可讲的,前面几章已有所渗透,现简要概括大致框架。<br /> 创建Culler<br /> ↓<br /> 创建Cam原创 2010-10-27 22:39:00 · 610 阅读 · 0 评论 -
4.2 Geometric State及其更新
<br /><br />与此相关的四个基本类是 vertexbuffer,index buffer,transformations和boundingvolumes。<br />一, VB 和IB<br /> VB包含了position,color,texture coordinates,normals,IB包含了点的邻接信息。VB和IB共同组成geometric primitive,它可以是点集,多边形,和三角网格等。Geometry类便是其容器。<br />二, Transfor原创 2010-10-27 22:34:00 · 618 阅读 · 0 评论 -
4.1 scene graph构建的基本问题
<br /><br />一,概述<br />Scene graph的目的是组织物体。<br />两个原则:1。空间从属关系(树)<br /> 2.Render State的相似性。<br />原则一是为了快速剔除大批不可见物体。<br />原则二是为了减少RenderState的频繁改变。<br />二者均可使游戏速度大大提高。<br />原则一通过空间划分实现(boundingvolumes),原则通过排序实现。<br />然而两个原则是互不兼容的。若按RS排序,物体必然会分原创 2010-10-27 22:32:00 · 921 阅读 · 0 评论 -
4.5the Culing Pass
<br /><br />在WM4中,culling pass和 drawing pass是分开的,负责该流程的三个核心类是VisibleObject,VisibleSet,Culler。下面一一详述。<br />一,VisibleObject<br />该类实际上是一个结构类,有两个public成员:Spatial*Object和Effect*GlobalEffect<br />前者用于存储单个的潜在可见的物体,后者用于存储与Node节点相关联的globaleffect。(在绘制中大有作为)。<原创 2010-10-27 22:36:00 · 664 阅读 · 0 评论 -
chapter2图形系统2.4标准物体和基于包围体的剔除
<br /><br />注:标准物体为第十章内容。<br /> <br /> <br />剔除是指去掉完全位于视景体之外的物体。<br />剔除分为背面剔除和物体剔除。<br />标准物体包括线(直线,射线,线段),面,AABB,OBB,椭球体,圆柱体,圆锥体,球移动体。<br />一,背面剔除。<br />这里的面指的是单侧面,即只有朝外的面可见,另一面朝向物体内侧(不透明物体),不可见。<br />1.基本思路。<br />假设平面的方程为,视点的世界坐标为E。则当平面法向量指离观察者时,点E位于平原创 2010-10-27 22:29:00 · 958 阅读 · 0 评论 -
chpter2图形系统2.3摄像机及几何管线
<br /><br />概述:<br />摄像机模型实际上是一个金字塔形的视景体,有近,远,左,右,上,下六个面。<br />几何管线是图形管线的一个部分,它的主要任务是变换,裁减和剔除。<br />变换包括世界变换,视点变换,裁减变换,透视除法,视口变换,窗口变换。<br />裁减是指对于与视景体相交的物体,计算物体与平面的交点,并返回新的物体点集。<br />剔除是指去掉完全位于视景体之外的物体以及背面剔除。<br /><br />一,摄像机模型。<br />此为俯视图:<br /><br /><br原创 2010-07-21 23:43:00 · 931 阅读 · 0 评论 -
chapter2 图形系统 2.1基础理论
<br />一,坐标系统。<br />常见的有笛卡尔坐标系,世界坐标系,物体坐标系,眼坐标系,裁减坐标系,和窗口坐标系。<br />后五个坐标系全部基于笛卡尔坐标系建立,该笛卡尔坐标就好像是一个绝对坐标系,所有其他坐标系的基向量都通过这个坐标系来定位,而没有比它更大的坐标系。<br /> 不同的引擎或图形API所采用的坐标系的坐标轴的朝向可能有所不同。有的坐标系X轴沿屏幕水平向右,Y轴向上,Z轴垂直指向屏幕内,有的则是前两者相同,而Z轴垂直指向屏幕外。<br /> 因此,在刚接触一款新的引擎时,我们原创 2010-07-19 00:35:00 · 813 阅读 · 0 评论 -
前言
<br />本书所用引擎为Wild Magic 4.0。图形系统基于shaer,Cg语言。VS2.0版本<br />跨平台。支持Microsoft,Linux和Macintosh。有Opengl和D3D版本。<br />支持VC++6,7,和8(VC++2005)原创 2010-07-17 10:43:00 · 551 阅读 · 0 评论 -
chapter2 图形系统 2.2变换
说明:本书中遵循的一些书写习惯为列向量,左乘,逆时针旋转为正方向(符合右手定则)。变换分为线性变换,仿射变换和投影变换。这三种变换表达式不同,但都可以形如Y=MX的式子表达,其中Y,X是齐次坐标,M是4阶方阵。一,线性变换符合线性规则的变换就叫线性变换。已知变换Y=L(X),若L(cU+V)=cL(U)+L(V),则称变换Y=L(X)为线性变换。线性变换的矩阵表达形式为Y=MX,显然,M(cU+V)=cMU+cV,符合显性规则。常见的显性变换有旋转(绕原点),对映,缩放和切变。1,旋转。二维空间中旋转矩阵R原创 2010-07-19 18:49:00 · 1066 阅读 · 1 评论 -
4.7 Scene Graph Compilers
<br /><br />说明:Scene Graph最终是以数据结构的形式呈现的,此种数据结构是为了方便场景的管理,即为了方便从3D建模工具导出这样的结构,以方便游戏的开发。但有得必有失,管理的方便使得这种数据结构并不适合计算机的图形系统,如内存上的分散,不能很好的支持chche等。因此有必要使用一些工具对数据结构进行优化以适应各种各样的要求。这些工具统称<br />Scene graph compilers。<br /> <br /> <br />Compiler有多种用途,现简述如下:<br />(原创 2010-10-27 22:40:00 · 667 阅读 · 0 评论