当前课程知识点:游戏程序设计 >  第十二章 《游戏物理模拟》 >  12.3 物理引擎原理(下) >  12.3 物理引擎原理(下)

返回《游戏程序设计》慕课在线视频课程列表

12.3 物理引擎原理(下)在线视频

下一节:12.4 游戏中的物理体

返回《游戏程序设计》慕课在线视频列表

12.3 物理引擎原理(下)课程教案、知识点、字幕

这个包括就是

碰撞检测的一个就是这种流程呢

其实就是

它应该是分两部

一部分的是

就是说那个粗略阶段

就是说我们先拿

拿这些物理体的包围盒

或者包围球来做一个快速的相交测试

这个呢

这个在这张图里面呢

其实讲到其中的一个就是一个步骤

就是说把他

在一个轴上进行一个快速的过滤

这个过滤的就是

把他们的那个

这个球投到投影到一个轴上

通过这个轴来快速去

去判断它

它并不能绝对判断它一定相交

但是它可以判断它是否一定不相交

这个含义就是说

就是说我不能判断它一定相交

但是我判断不相交通过这个方式来

去筛掉一部分

就是说其实我们之前讲了些算法

一些优化的这个过程也是这样

就是说你在

你要做很多事情

但是呢

我可以

我可以通过某种方法判断这些事情

一定不做对吧

那我就没必要做

那其实

这就是一个优化的一个过程

和一个方法

刚才讲的是那个就是粗略阶段

然后呢

这个讲一个就是NarrowPhase

这个精确阶段

就是这里面要讲一个就是说物理引擎里面

非常重要的东西

就是那个碰撞检测矩阵

碰撞检测矩阵它其实是说把

不同物体之间

或不同Shape之间的碰撞方法

对吧然后呢

组成一张二维表就是二维关系

在这里边的这个是Bullet

它给出的

就是说它有box

然后sphere

然后convex

还有以及就是说简单的

这种就是说

那个像Capsule这种(几何体)

那种我带曲面的那个几何体

还有这个compound的呢

其实是组合体其实也

也是由一些基本的

就是图元组成的

还有最后就是复杂的

就是像triangle mesh这种

这里面其实也包含这个

刚才讲的那个Heightfield

就是那个

物理引擎的那个地形的那个东西

在这里面的就是你通过它的X和Y呢

就是你可以选定

就是可以找到对应的算法

这里面你看像这个我们就是说

带曲面的这个像convex cylinder

然后cone以及capsule

它其实之间的碰撞的都是用的是

GGK就是我上堂课讲到的东西

像这种就是比如说任意的一个包围体呢

比如说像box啊

sphere

这种它跟trangle mesh 去

去那个碰撞

它用的是

他这里面叫concaveconvex方法

实际上你可以简单理解就是我讲的

之前就是

讲的就是这种

就是说几何体与三角形碰撞虽然没讲

但是其实他们本质上也可以

用GGK来代替的

所以这个GGK其实

是你简单可以理解是其实是也是

整个就是说

物理引擎和3D几何碰撞里面的一个

非常核心的一个

所以说呢

如果大家后面

如果要从事这方面的工作的话

其实是可以

我觉得建议去

还是深入去了解下这个GGK里面的方法

我写的代码里面其实只是GGK一个

非常简单的一个实现

没有做太多的优化

我现在就是

对物理引擎的一点了

它其实就是说

就说

其实碰撞检测呢

它其实是刚才讲的

那个就是说

那个场景管理里面呢

其实也是只是一种加速方法而已

它其实并没有说

就是说改变它那个

整个物理的那个

计算的那个结果

他只是一个加速

我有个问题

就是说其实在我们做

不管做游戏还是在做那个物理引擎里面

它其实有一个问题

就是说

当很多物体聚在一起的时候

他那个

它的算法复杂度

就是说

一般来说算法辅助都说其实是N方的

就不考虑树形加速的优化

刚才讲的Octree(一种场景管理结构)去优化的话

它其实是那个N方

也就是说

如果说你的那个物体增加了十倍

在一个封闭空间内增加十倍那你的

计算量的很可能是增加的

是十的平方就是一百倍

就是这个它的那个是相当于几何

几何级数的增长

也就说你再强的计算机

你都会很容易去触摸它的瓶颈

其实在这里面物理里面也存在这个问题

所以你发现很多时候大家在玩游戏的过程中

也发现很多时候就是那个角色一多了之后

它可能就变卡了

其实我们做游戏呢

就是可能我觉得三分之一的时间

开发商的钱都在跟那个性能做赛跑

就是说不断的去优化

觉得可能加了一些东西

加了一些特效

加了一些角色加了一些可能

游戏场景的东西一下子就变卡了

因为游戏

他跟就是渲染这块跟那个

而他还

跟电影行业不一样

电影行业它可以通过

就是它相当于是离线的

他可以通过我加钱

我加设备来把他的结果预算出来

但是对于游戏来说

对游戏来说它

其实是对帧率非常敏感的

一但帧率差了之后

会对人的这个就是

玩家的体验非常差

然后就会觉得你这个技术能力啊

或者说做的非常糟 体验会非常糟糕

然后呢

整个那个游戏的那个

就是每一帧给到物理这边的时间

也非常短

可能我

我们预估基本上可能就是

应该是不要超过五毫秒

或者说十几毫秒

因为在五毫秒内其实要解决

解决大量的物理问题

其实这个呢

也是其实也是就是

我觉得作为一个开发的一个难点

因为开发到后期的时候

你可能作为一个游戏开发或者说

或者说这种

游戏开发你出去的时候

你是在于实现功能

但后期时候你发现都是在去

想办法去优化不断的去优化性能

优化过程中的就是

不损效果优化(无损优化)

还有一种就是说

我大不了用更差一点效果

比如说我角色的碰撞模拟

我实现不了角色

身上每一个

手啊手臂的碰撞

那我就用一个球

或者说用一个胶囊体来作为代替吧

就是类似

就是说

怎么说呢

就是说

有点像是

JPG里面的压缩方法对吧

就是说我尽量的去压缩

或者去删除掉一些

就是对于人类来说

对于人类的那种理解

它不太敏感的东西

不太敏感的东西

去把它删掉

对碰撞来说可能穿差一点点啊

然后也没有关系

只要角色别浮在空中对吧

然后角色正常的移动啊

这可能玩家也能接受

这个也是整个

这个也是一个就是说

整个这个行业

或者这个技术在发展中的一个一条路吧

就是会不断的

从就是说

会从一个简单的效果

逐步逐步

效果越来越好

越来越好

然后呢

功能就可能越加的深入

然后涉及的技术就会越来越深

其实物理学里边呢

其实这里面分了一个就是

运动学

就是动力学和运动学就是

让角色那个胶囊体呢

其实它其实是一个运动学

因为它其实仅仅只有碰撞

然后呢

它其实你们在玩游戏的时候呢

其实是感觉不出角色的质量的

一般来说

角色与角色之间它们

不能说你推我我推你

就是说没有说我的质量比你大

然后呢

我推你比较容易

就是说一般现在的游戏还做不到这样子

基本上都是我碰到你就停止

或者怪物直接把你推开

但是你不能推开怪物

就是说还做不到

就是说更真实的效果

最简单的其实就是一个质点

就是我们可以从

我现在可以从质点开始讲起就是质点的

其实就是质量

有他的那个

质量其实是这个物体的

或者这个质点的一个

一个质点固有属性

然后它涉及到它的那个加速度

就影响到它那个

比较受力之后加速度的大小

在游戏里面去模拟质点其实

一般来说是用于

比如说一些粒子特效的效果

比如说仙女散花

或者说一些就是仙女棒她发出了一些

星星点点啊

那这些星星点点

其实就是用最简单的质点模拟就是

初始给它一个速度

然后呢

不断的迭代

然后呢

到一定时间消亡

然后这个实际上会成这个运动轨迹

运动轨迹的那就是一个这个

有很多个这样的粒子组成的效果

那就成了一个特效

在这里面呢

可能这些那个

视频和那个图片我就没有准备了

就简单讲一下

比如说你要实现一个简单的这个质点模拟呢

其实很简单

这个代码呢

也就这几行就是

就是你在它每一帧

运行的时候能去设置一下它的力

然后通过力求出加速度

然后通过加速度去

求他的▲的那个速度的改变量

然后通过它的速度

再去求着它下一站的那个

位置的改变量

这样子就可以模拟一个简单的质点了

对刚体来说呢

其实刚体呢

他不仅有

就是说一般来说呢

我们在处理时候呢

就是运动学上的会把它

做成

就是就是说

基于那个质量和速度

还有未知的一个质点啊

但是呢

因为他是刚体

他是一个几何体

它还具有就是三维空间中

另外一个

就是你觉可以就叫定向

定向也可以解释也就它有旋转

它有它的姿势

这个姿势是指着它旋转的姿势

然后那个

这刚体的碰撞之后

它还有一些弹性示数啊

类似于

就是完全弹性碰撞

完全非弹性以及

介乎于两者之间的那种碰撞效果

其实刚体就是在空中的运动

其实是比较简单的

然后

这个代码里面无非就是把他的那个

角速度以及那个角度啊

这种

预算来给加进去

真正那个比较复杂

就是复杂的的预算的就是就是

就是讲到上一课相关的这个碰撞检测

就是说如何去求解两个刚体

它们之间是否有发生了碰撞

然后呢

碰撞了之后呢

还有一件事情就是

你不能说碰撞你不管了

你碰撞了之后呢

你不能简单的直接把它那个

比如说碰撞的方向反一下

因为它可能会碰撞的比较复杂

有很多物体连在一起

这时候你要去

做一个约束约束就是

就是碰撞的约束

就是说我这个约束呢

是希望它刚好能碰到

刚好能接触

但是呢

也不是简单的弹开

因为有的时候可能

物体叠在一起之后

它可能会

就是会被类似于叫错开的那种

或者说这叫slider、sliding,就是滑行的一些效果

这时候呢

就是物理里面

其实做一个这种约束

就是说我

我两个之间的那个

物体之间的就是

在当前状态下加上一个约束

通过约束来求解它们的相对位置

游戏程序设计课程列表:

第一章 《游戏开发导论》

-1. 1什么是游戏(上)

--1.1 什么是游戏(上)

--选择题

-1.2 什么是游戏(下)

--1.2 什么是游戏(下)

--选择题

-1.3 游戏是如何开发出来的

--1.3 游戏是如何开发出来的

-1.4 游戏引擎(上)

--1.4 游戏引擎(上)

-1.5 游戏引擎(下)

--1.5 游戏引擎(下)

--单选题

-1.6 如何成为一个游戏开发者

--1.6 如何成为一个游戏开发者

--多选题

第二章 《游戏服务器概述 》

-2.1 什么是游戏服务器

--2.1 什么是游戏服务器

--单选题

-2.2 游戏服务器的和分类发展

--2.2 游戏服务器的和分类发展

--单选题

-2.3 核心技术和实现难点

--2.3 核心技术和实现难点

--单选题

-2.4 设计原理与方法论

--2.4 设计原理与方法论

--单选题

第三章 《《三维几何学基础》 》

-3.1 三维坐标系统

--3.1 三维坐标系统

--多选题

-3.2 向量与运算

--3.2 向量与运算

--单选题

-3.3 矩阵与线性变换

--3.3 矩阵与线性变换

--双选题

-3.4 四元数

--3.4 四元数

--多选题

第四章 《游戏循环及实时模拟》

-4.1 游戏循环概述(上)

--4.1 游戏循环概述(上)

--多选题

-4.2 游戏循环概述(下)

--4.2 游戏循环概述(下)

--单选题

-4.3 《无尽之路》的实现

--4.3 《无尽之路》的实现

--单选题

-4.4 支撑游戏的功能

--4.4 支撑游戏的功能

--选择题

-4.5 支撑游戏的机制与系统

--4.5 支撑游戏的机制与系统

--多选题

第五章 《随机数在游戏中的应用》

-5.1 基本介绍

--5.1 基本介绍

--单选题

-5.2 随机数生成器

--5.2 随机数生成器

--单选题

-5.3 随机数分布与应用

--5.3 随机数分布与应用

--单选题

第六章 《游戏性系统》

-6.1 什么是游戏玩法开发

--6.1 什么是游戏玩法开发

--单选题

-6.2 建立愿景 Vision

--6.2 建立愿景 Vision

--单选题

-6.3 划定边界 Scope

--6.3 划定边界 Scope

-6.4 迭代 Iteration

--6.4 迭代 Iteration

--单选题

-6.5 迭代 Iteration+抛光Polish

--6.5 迭代 Iteration+抛光Polish

--单选题

第七章 《实时图形渲染管道》

-7.1实时图形渲染管道 宏观渲染系统

--7.1实时图形渲染管道 宏观渲染系统

--单选题

-7.2实时图形渲染管道 应用阶段

--7.2实时图形渲染管道 应用阶段

--单选题

-7.3实时图形渲染管道 几何阶段

--7.3实时图形渲染管道 几何阶段

--单选题

-7.4实时图形渲染管道 光栅化阶段

--7.4实时图形渲染管道 光栅化阶段

--单选题

-7.5实时图形渲染管道 总结 参考

--7.5实时图形渲染管道 总结 参考

第八章 《材质着色与光照》

-8.1 物理回顾1

--8.1 物理回顾1

--单选题

-8.2 物理回顾2

--8.2 物理回顾2

--单选题

-8.3 材质 1

--8.3 材质 1

-8.4 材质 2

--8.4 材质 2

-8.5 材质3

--8.5 材质3

-8.6局部光照

--8.6局部光照

--单选题

-8.7 全局光照

--8.7 全局光照

--单选题

第九章 《游戏动画》

-9.1 动画介绍

--9.1 动画介绍

--多选题

-9.2 游戏动画介绍

--9.2 游戏动画介绍

-9.3 动画技术类型

--9.3 动画技术类型

--多选题

-9.4 骨骼蒙皮动画

--9.4 骨骼蒙皮动画

--多选题

-9.5 动画流水线

--9.5 动画流水线

--多选题

-9.6 动画前沿趋势

--9.6 动画前沿趋势

--多选题

第十章 《网络同步技术》

-10.1 .基本概念

--10.1 .基本概念

--多选题

-10.2 设计目标

--10.2 设计目标

--多选题

-10.3 传输数据分析

--10.3 传输数据分析

--多选题

-10.4 常用同步方案 1

--10.4 常用同步方案 1

-10.4 常用同步方案 2

--10.4 常用同步方案 2

-10.4 常用同步方案 3

--10.4 常用同步方案 3

-10.4 常用同步方案 4

--10.4 常用同步方案 4

--多选题

-10.5 方案对比

--10.5 方案对比

--多选题

第十一章 《游戏常用几何学》

-11.1 基本图元

--11.1 基本图元

--单选题

-11.2 图元距离(上)

--11.2 图元距离(上)

--单选题

-11.2 图元距离(下)

--11.2 图元距离(下)

--单选题

-11.3 图元相交测试+ 其他几何方法

--11.3 图元相交测试+ 其他几何方法

--单选题

第十二章 《游戏物理模拟》

-12.1 著名物理引擎介绍

--12.1 著名物理引擎介绍

--单选题

-12.2 物理引擎原理(上)

--12.2 物理引擎原理(上)

--单选题

-12.3 物理引擎原理(下)

--12.3 物理引擎原理(下)

--单选题

-12.4 游戏中的物理体

--12.4 游戏中的物理体

--单选题

-12.5 物理引擎使用入门

--12.5 物理引擎使用入门

--单选题

第十三章 《开发工具 》

-13.1开发语言

--13.1开发语言

--单选题

-13.2 开发环境

--13.2 开发环境

--单选题

-13.3 腾讯开发组件介绍

--13.3 腾讯开发组件介绍

--单选题

-13.4 网络通信+业务框架介绍

--13.4 网络通信+业务框架介绍

--多选题

第十四章 《分布式系统设计 》

-14.1 进程间通信(上)

--14.1 进程间通信(上)

-14.2 进程间通信(下)

--14.2 进程间通信(下)

-14.3 通信格式

--14.3 通信格式

-14.4 并发模型

--14.4 并发模型

-14.5 超时处理

--14.5 超时处理

-14.6 大系统小做(上)

--14.6 大系统小做(上)

--多选题

-14.7 大系统小做(下)

--14.7 大系统小做(下)

-14.8 架构层面的技术支持(上)

--14.8 架构层面的技术支持(上)

--单选题

-14.9 架构层面的技术支持(下)

--14.9 架构层面的技术支持(下)

-14.10 分布系统的关键能力

--14.10 分布系统的关键能力

--多选题

第十五章 《游戏人工智能》

-15.1 游戏人工智能综述

--15.1 游戏人工智能综述

-15.2 人工智能在游戏中主要方法 上

--15.2 人工智能在游戏中主要方法 上

--多选题

-15.3人工智能在游戏中主要方法 (下)

--15.3人工智能在游戏中主要方法 (下)

-15.4 人工智能在游戏制作中的应用领域1

--15.4 人工智能在游戏制作中的应用领域1

--多选题

-15.5 人工智能在游戏制作中的应用领域2

--15.5 人工智能在游戏制作中的应用领域2

-15.6 人工智能在游戏制作中的应用领域3

--15.6 人工智能在游戏制作中的应用领域3

--多选题

-15.7 人工智能在游戏运营中的应用实践(上)

--15.7 人工智能在游戏运营中的应用实践(上)

-15.8 人工智能在游戏运营中的应用实践(下)

--15.8 人工智能在游戏运营中的应用实践(下)

--多选题

第十六章 《游戏支撑系统 》

-16.1 游戏支撑系统(1)

--16.1 游戏支撑系统(1)

--单选题

-16.2 游戏支撑系统(2)

--16.2 游戏支撑系统(2)

--单选题

-16.3 游戏支撑系统(3)

--16.3 游戏支撑系统(3)

--单选题

-16.4 游戏支撑系统(4)

--16.4 游戏支撑系统(4)

--单选题

-16.5 游戏支撑系统(5)

--16.5 游戏支撑系统(5)

第十七章 《游戏逻辑服务器和反外挂》

-17.1 游戏逻辑服务器(上)

--17.1 游戏逻辑服务器(上)

--单选题

-17.1 游戏逻辑服务器(下)

--17.1 游戏逻辑服务器(下)

-17.2 外挂与反外挂(上)

--17.2 外挂与反外挂(上)

-17.2 外挂与反外挂(下)

--17.2 外挂与反外挂(下)

--多选题

第十八章 《运行环境和运维 》

-18.1运行环境

--18.1运行环境

--多选题

-18.2物理部署

--18.2物理部署

--多选题

-18.3系统的可运维性

--18.3系统的可运维性

--多选题

-18.4运维案列分析

--18.4运维案列分析

--多选题

12.3 物理引擎原理(下)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。