先占坑,写一点保存一点,防止神作。
完成度:15%
先前的内容:
第2讲 3D投影算法
很多人以为3D投影是制作3D游戏最难的地方,当然如果你是自己造轮子,这确实是一个难点,但是真正的3D难点其实在后面,我自己瞎总结了一些3D游戏制作的难点(仅供参考)

这么一看,跟其它难点相比,3D投影还算比较简单的了。(狗头)今天我们就来捏这个软(硬)柿(骨)子(头)。
关于3d投影的算法网上有很多,我也写了两篇,大家可以参考学习一下:
物体的投影与3D图形的绘制
3D绘图中的透视原理
我自认为写的还算比较基础了,如果看不懂的话,现在弃坑还来得及(逃)。现在为了防止有的小伙伴理解不到位,当然,也为了后边方便写代码,我这边再来梳理一下。
按照yoyo的最初想法(F1中的内容),“正常”的3d投影算法将发生以下事情:

局部坐标就是vertex_submit
提交的顶点坐标,类比精灵编辑器,也就是说你建立的顶点绘制的模型的坐标系是在“精灵编辑器”里的坐标系。你看,精灵编辑器里可以设置原点,相当于就是在确定精灵本身的局部坐标系,实际绘制的时候只需给出x,y就可以根据局部坐标系在对应的世界坐标的位置绘制对应的精灵。对3d模型而言,理论上也应该这样才对。如何把在局部坐标系下的模型放在世界坐标系中呢?这就需要用到世界矩阵matrix_world
了。
- 关于单位:上图中的局部坐标、世界坐标、相机坐标、投影坐标、标准化坐标都是没有单位的,当然,你可以把局部、世界、相机坐标认为是有任意的相同的单位,因为后边的单位会被归一化,变成无单位,这样好变成纯数学问题。surface坐标的单位当然是像素了。
后边的内容看视频吧
已弃坑