游戏编程相关书籍读书笔记

编程入门 行业动态 更新时间:2024-10-13 12:24:22

《3D数学基础:图形与游戏开发》

这本书关于数学部分的讲解浅显易懂,不过最大的反常点是使用左手坐标系以及使用行向量来表示矩阵。按照代码出现的章节,可以将这本书的内容分成4部分:

  • 第1部分是三维向量,属于高中数学的内容。
  • 第2部分是矩阵,很多也都是基础知识。印象最深一点是讲清楚了为什么使用方阵描述线性变换。给出笛卡尔坐标系中的向量v和方阵M = [P Q R]T,则v' = v * M = xP + yQ + zR。如果P、Q和R线性无关,则可以看作一组基向量,那么在新坐标系中v的表示依然是(x, y, z),而在原笛卡尔坐标系的表示为v'。进一步如果v表示的是笛卡尔坐标系的基向量,那么v'就是转换后的基向量(P、Q或者R),因此基向量经过变换后仍然是基向量,根据这个原理,计算旋转、平移、缩放、切变和镜像时,通过对原基向量进行变换,就可以得到变换后的基向量,经过组合就可以得到变换矩阵了。另一点是如何将图形学中的透视投影也用矩阵进行表示,因为透视投影需要除法,而矩阵变换无法实现,所以引入的四维齐次坐标。最后一点是使用四元数描述描述物体自身的旋转。
  • 第3部分是基本几何图元的表示方法,包括射线、圆、球、矩形边界框AABB,三角形及其重心坐标、多边形,以及常见的相交性检测,基本都是高中的数学和物理。
  • 第4部分描述了一个图形管线。
setTheCamera();clearZBuffer();setLightAndFog();ObjList = highLevelVisibleDetection();//这可能是说绘制了哪些物体的意思???for(each obj in ObjList){if(!obj.BoundingVisibleDetection()) continue;//去掉视锥外的物体,通过包围盒的8个顶点进行检测for(each triangle in obj.surface) //假设图形表面由三角形网格组成{clipSpaceTriangle = transformAndLighting(triangle);//物体坐标系->世界坐标系->摄像机坐标系(视锥),并进行顶点光照计算if(clipSpaceTriangle.back()) continue;//背向剔除clippedTriangle = clip(clipSpaceTriangle);//边界裁剪projectionTriangle = project(clippedTriangle);//投影变换for(each pixel in projectionTriangle)//对于每一个保留的像素{if(!ZBufferTest()) continue;//深度测试if(!AlphaTest()) continue;//alpha测试color = shadePixel();//根据光照、纹理进行渲染writePixel(color, FrameBuffer, ZBuffer);//写入帧缓存,更新z缓存}}}
  • 0
  • 0
  • 0
  • 0
  • 0

更多推荐

游戏编程相关书籍读书笔记

本文发布于:2023-06-11 00:13:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/622006.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:读书笔记   书籍   游戏

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!