学习所有关于2D游戏物理学背后的理论和数学,并使用C++从头开始创建一个简单的刚体物理引擎。

这门课程是对2D游戏物理世界的初步介绍!我们将回顾所有美妙的数学知识,这些知识为大多数物理引擎提供了基础,从强大的向量、矩阵、基本三角学、刚体碰撞开始,还会涉及一点微积分。
讲座旨在从第一原理教授所有概念。在我们的旅程中,我们将回顾物理学的几个主题,如速度、加速度、积分、质量、力、重力、阻力、摩擦力、刚体动力学、碰撞检测、约束等。

我们还将通过使用C++编写一个非常简单的2D物理引擎来将理论付诸实践。

我们将首先编写一个粒子物理模拟,这对我们来说是一个很好的开始,可以让我们讨论运动、力、位移和积分等概念。2D Game Physics Programming

然后,我们将通过向我们的物体添加形状(如圆形、矩形和多边形)来处理刚体。我们还将学习如何编写刚体之间的碰撞检测和碰撞解决方案的代码。
最后,我们将通过向我们的物理引擎添加约束来完成我们的C++实现,这将帮助我们向引擎添加不同类型的对象,如关节和布娃娃。最终,约束将帮助我们提高引擎的稳定性,也是一个让我们讨论微积分中一些有趣想法的绝佳机会。

MP4 | 视频:h264,1920X1080 | 音频:AAC,44.1千赫,2声道
类型:电子学习 | 语言:英语 | 时长:191课时(35小时8分钟)| 大小:6.96 GB 含课程文件

课程目录:
001. 介绍与学习成果
002. 如何学习本课程
003. 什么是游戏物理学
004. 向量数学快速回顾
005. 向量与标量量
006. 使用P5js网络编辑器
007. 在网络编辑器中可视化错误
008. 编写一个Vec2类
009. 向量大小
010. 向量加法和减法
011. 向量加法和减法的方法
012. 向量相等性
013. 缩放向量
014. 静态方法
015. 向量加法和减法的应用
016. 点积
017. 点积是否满足交换律
018. 叉积
019. 编写叉积方法
020. 练习垂直2D向量
021. 垂直2D向量
022. 练习Vec3方法
023. Vec3方法
024. 向量归一化
025. 编写归一化方法
026. 缩放、平移和旋转向量
027. 正弦和余弦快速回顾
028. 向量旋转证明(x分量)
029. 向量旋转证明(y分量)
030. 编写Vec2旋转方法
031. 结束我们的JavaScript向量类
032. Vec2 C++头文件
033. 快速查看C++ Vec2语法
034. Vec2运算符重载
035. 技术和依赖关系
036. 文件夹结构
037. 初始项目文件
038. 使用GCC和Linux编译
039. Makefile
040. 在Windows上配置Visual Studio
041. 粒子物理学介绍
042. 粒子类
043. 粒子速度
044. 使用+运算符添加向量
045. 控制我们的帧速率
046. 帧速率独立移动
047. 限制无效的DeltaTime值
048. 以恒定速度移动
049. 更改粒子速度
050. 保持粒子在窗口内
051. 恒定加速度
052. 离散与连续
053. 积分和运动模拟
054. 不同的积分方法
055. 粒子整合函数
056. 对粒子施加力
057. 添加力的函数
058. 具有不同质量的粒子
059. 重力作用力
060. 质量的倒数
061. 使用键盘施加力
062. 阻力
063. 阻力函数
064. 使用SDL处理鼠标点击
065. 意外的阻力行为
066. 摩擦力
067. 摩擦力函数
068. 引力吸引力
069. 引力吸引力函数
070. 弹簧力
071. 弹簧力函数
072. 练习弹簧力
073. 多粒子链
074. 多粒子软体
075. 软体和Verlet积分
076. 刚体
077. 形状
078. 形状类
079. 形状类实现
080. 圆形
081. 角速度和角加速度
082. 扭矩和惯性矩
083. 圆形角运动
084. 盒子顶点
085. 本地空间与世界空间
086. 体更新函数
087. 为什么没有形状绘制函数
088. 形状类中没有绘制方法
089. 圆形-圆形碰撞检测
090. 圆形-圆形碰撞类
091. 圆形-圆形碰撞实现
092. 碰撞联系信息
093. 碰撞信息代码
094. 广义相位和狭义相位
095. 投影方法
096. 具有无限质量的物体
097. 冲量方法和动量
098. 冲量
099. 推导线性冲量公式
100. 简化冲量方法公式
101. 编写线性冲量方法
102. 线性碰撞响应是否足够
103. AABB碰撞检测
104. SAT分离轴定理
105. 使用SAT找到最小分离距离
106. 多边形-多边形碰撞代码
107. 查找SAT最小分离距离的代码
108. 重构SAT分离函数
109. 使用SAT找到额外的碰撞信息
110. 多边形-多边形碰撞信息
111. 点处的线性和角速度
112. 碰撞后点处的速度
113. 计算线性和角冲量
114. 碰撞距离向量Ra-Rb
115. 2D叉乘简化
116. 沿法线编写冲量
117. 沿切线的冲量练习
118. 沿切线的摩擦冲量
119. 移除窗口边界检查
120. 圆形-多边形碰撞检测
121. 找到多边形与圆的最近边缘
122. 圆形-多边形边缘区域练习
123. 圆形-多边形碰撞信息
124. 圆形-多边形碰撞解决
125. 具有多个顶点的多边形练习
126. 具有多个顶点的多边形
127. 加载SDL纹理
128. 渲染圆形纹理
129. 世界级
130. 实现世界函数
131. 重构更新顶点函数
132. 本地求解器与全局求解器
133. 一个天真的迭代位置校正
134. 约束刚体物理
135. 位置与速度约束
136. 示例速度约束和偏差因子
137. 示例距离约束和偏差因子
138. 约束力和约束运动
139. 基于力与基于冲量的约束
140. 约束类
141. VecN类
142. 实现VecN函数
143. VecN运算符重载
144. 矩阵
145. MatMN类
146. 矩阵转置
147. 矩阵乘法
148. 矩阵乘法函数
149. 超越矩阵
150. 广义速度约束
151. 解决违反的速度约束
152. 约束类继承
153. 距离约束
154. 关节约束类
155. 将世界空间转换为局部空间
156. 约束列表
157. 重构身体更新
158. 推导距离雅可比矩阵
159. 填充距离雅可比矩阵
160. 解决方程组(Ax=b)
161. 高斯-赛德尔方法
162. 约束摆
163. 迭代解决约束系统
164. 热启动
165. 添加偏差项
166. 具有关节约束的布娃娃
167. 防止NaN错误
168. 渗透约束
169. 推导渗透雅可比矩阵
170. 渗透约束类
171. 解决渗透约束
172. 渗透热启动
173. 渗透约束摩擦
174. 限制摩擦力大小值
175. 渗透约束弹性
176. 不稳定的箱子堆叠
177. 允许多个接触点
178. 参考和入射边
179. 查找入射边
180. 准备进行剪辑
181. 剪辑函数
182. 测试多接触箱
183. 测试多个对象和约束
184. 接触缓存
185. 连续碰撞检测
186. 广义与狭义分割
187. 欧拉积分回顾
188. 中点和RK4积分器
189. Verlet积分
190. 约束
191. 结论与下一步步骤

发表回复

后才能评论