从零开始物理引擎(六)- 重构完成与MVP理解
完成重构,搭建起物理引擎基础框架,包含碰撞检测与移动方式以及物理量基类。
本篇借助重构进一步探索MVP矩阵理解(model->view->projection)
重构
Common
该项目以dll形式注入启动项目,主要包含通用操作如全局上下文,配置类,日志以及引擎所需接口如窗口接口,控制台接口,渲染类接口等
Console
控制台实现项目,以dll形式注入,通过实现Common
中createConsole
供主启动类创建出控制台。借助imgui实现
MainWindowUi
窗口实现项目,以dll形式注入,通过实现Common
中createWindow
供主启动类创建出主窗口。借助win32api实现
Renderer
渲染器,由dx11负责渲染,主要封装了dx11渲染操作。通过实现Common
中createDx11
供主启动类创建出渲染器实例。
这里不过多介绍代码实现,主要针对渲染器重构部分详解MVP矩阵概念。
渲染器重构
原有渲染是将每个形状作为渲染的主体,例如圆形
、三角形
等分别做成不同的类,类中包含位置
数据与移动所需movement
对象。
现有渲染将位置
数据搭配movement
对象作为渲染主体,其中movement
对象包含速度
、加速度
与质量
,通过其他物理量计算出’物体’受力,进而计算出加速度
,借助半隐式欧拉积分
根据加速度
计算出速度
从而改变物体位置
。
再次回顾物体如何被渲染到屏幕上,渲染管线部分此处不赘述,从实现角度来讲,我们需要配置顶点
数据将形状绘制出来。那么顶点
与MVP
矩阵的含义与关系分别是什么。
可以这么理解,以我们现实世界来看,顶点
代表一个物体的形状
,这个形状
存在于概念
层面,即我们想象中的形状
。举个例子,我们想象一个人,那么它的形状会在脑海中浮现,这个就是顶点
,它定义出了物体在抽象意义上的形状
。但要将抽象意义中的物体放在现实世界中,我们需要它的位置
、大小
、姿态
(旋转)。