![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
帧同步
文章平均质量分 54
帧同步详解
东北砍王
做游戏,是种梦想!
展开
-
碰撞算法需要的3D数学知识
在这里只做列举,关键点再详细举出1.矩阵行、列矩阵方阵对角矩阵单位矩阵上、下三角矩阵转置矩阵逆矩阵1.1.矩阵运算加法减法乘法,不满足交换律1.2.矩阵行列式意义:分别代表1D、2D、3D空间的长度、面积、体积其他计算方式:利用行列操作降低至三角矩阵,结果是主对角线的乘积2.坐标系和顶点顶点:空间中某一位置坐标系:描述顶点3.向量包含大小和方向3.1.向量运算加法减法乘法长度,模运算点积(两个非0向量,锐角点积为正;钝角点积为负;垂直为0)(几何意义:原创 2021-06-09 20:05:46 · 251 阅读 · 2 评论 -
3D数学之方位与角位移、欧拉角与四元数
3D物体如何描述方位:1.方向2.角位移3.旋转方位≠方向当向量自转时,不会改变向量的属性但是物体自转时,物体的方位就变化了表示方法:位置:使用相对于参考系的位移方位:相对于已知方位的旋转来描述的,也就是角位移使用矩阵形式描述方位:3D物体,描述坐标系中的方位的一种法就是列出这个坐标系的基向量基向量构成一个3x3矩阵,用这个矩阵表示方位也就是说:一个旋转矩阵可以把一个坐标系中的向量旋转到另一个坐标系中使用矩阵的优点:1.方便的计算向量旋转2.图形API都在用3.多个矩阵原创 2021-06-09 21:22:22 · 1030 阅读 · 0 评论 -
3D数学之矩阵
矩阵是啥?以 行 和 列 形式组织的矩形数字块(类似 二维数组)矩阵的维度和记法:r x c 矩阵代表:r行,c列1 x n:行向量n x 1:列向量矩阵第一行和第一列其实索引都是1(一般不用数组表达矩阵容易混)方阵:行数和列数相同的矩阵如果非对角线元素都是0,那么叫做对角矩阵单位矩阵:特殊的对角矩阵,对角线元素都是1,其他元素都是0转置:对角线翻折可以把行向量变成列向量,列向量称为行向量标量和矩阵的乘法:矩阵M和标量k相乘,用k乘以M每个元素,得到一个和M维度相同的矩阵原创 2021-04-05 15:30:53 · 459 阅读 · 0 评论 -
笛卡尔坐标系
1D数学:数轴实数包含:有理数和无理数(3.14159…)研究自然数和整数的领域叫做离散数学研究实数的领域乘坐连续数学计算机图形学第一准则:如果看上去它是对的那就是对的2D笛卡尔数学2D笛卡尔坐标系:原点、轴(无论x和y轴什么方向,保证旋转后x右为证y上为正)两个数 就可以定位一个点 (x,y)从2D到3D多了一个z平面,xz表示地面的2D平面通过旋转只能使两个轴和目标相同,第三个轴总是和目标方向相反拇指、食指和种猪分别代表:x、y、z轴的正方形左手坐标系:右手坐标系:约定原创 2021-04-05 15:29:23 · 1686 阅读 · 3 评论 -
3D向量类
好的类的设计需要关注的问题:1.这个类将提供什么操作?2.在哪些数据上执行这些操作?对于3D向量类的基本操作:1.存取向量的各分量2.向量间的赋值操作3.比较两个向量是否相同以及向量之间的操作:1.将向量置为零向量2.向量求负3.求向量的模4.向量与标量的乘除法5.向量标准化6.向量加减法7.计算两点间的距离8.向量点乘9.向量叉乘首先定义 Vector3 类: public class Vector3 { public static reado原创 2021-04-05 15:30:34 · 128 阅读 · 0 评论 -
向量
向量对数学家是数字列表向量对程序员是数组数学上区分向量和标量速度和位移是向量,速率和长度是标量向量的维度:数的个数写法:横着写行向量,竖着写列向量几何意义大小:向量的长度方向:空间中的指向向量没有位置,只有大小和方向(零向量是惟一一个没有方向的向量)点用来描述位置,向量用来表示位移专门研究向量的学科叫做:线性代数3D数学主要关心:向量和向量运算的几何意义向量运算负向量:得到一个和原向量大小相等,方向相反的向量向量的长度:各分量平方和的平方根标量与向量的乘法:以标量为单原创 2021-04-05 15:29:47 · 21229 阅读 · 1 评论 -
射线和AABB相交测试
(其他轴的类型,就是吧minX换成 maxX、minY、maxY)绿色左右分别是x最大和最小值的交点(如果不在边界内需要延伸)2.使用加法,origin+ dir * 长度,就是坐标。然后判断交点是否在AABB内,这个就简单了。1.求射线和 AABB 各个轴极值的交点。起始点:origin(Vector2)2.看交点是否在 AABB 范围内。定义方式有很多种,此处就用边界值。方向:dir(Vector2)起始就是一个等比例转换的关系。黄色是y最大和最小值的交点。只需要和xy比较即可。原创 2023-08-02 23:05:10 · 178 阅读 · 0 评论 -
包围体之AABB、球体的定义+相交测试
包围体是啥?我们直观觉得碰撞往往是两个多边形相交,但是在计算机中这么算是很复杂的,特别是边很多的物体时为了减少计算,就需要把几何体用一个简单的体空间包围起来(简单体是指:长方体、球体)PS:包围体的英文名叫:BV如图所示:(来自百度图片)注意:包围体具有低消耗的相交测试的好处同时,也会占用额外的内存(需要存储包围的数据),不过影响不大在游戏开发中,一般都会对其进行简化Unity里面也提供了集中包围体的Collider,比如BoxCollider、ShpereCollider等,同时官方也并原创 2022-02-09 20:44:21 · 2982 阅读 · 0 评论 -
定点数运算(乘以10000方式)(二)
继续上一篇的内容:传送门1.显式/隐式转换在项目内无缝接入定点数,就需要支持其与float、int等常用类型进行计算如下演示:float a = 0.1f;int b = 3;float result = a * b;//如果支持转换的话,可以快速修改代码FP a = (FP) 0.1f;//(FP) 是编辑器自动加的,写出来只是为了演示int b = 3;FP result = a * b;这里逻辑比较简单,但是如果是项目内复杂的逻辑,只需要把【float】替换成【FP】就好原创 2022-01-12 20:42:23 · 374 阅读 · 0 评论 -
定点数运算(乘以10000方式)(一)
为什么浮点数计算结果不一致?(指的是帧同步里,两个客户端计算结果可能不一致)因为整数是有限的,小数是无限的,每一位精度都表示不同的小数比如某个无限不循环小数,0.1524512345454564…那么计算机如何表示这样的小数呢?通过 IEEE二进制浮点数算术标准,在不同的CPU可能标准不一致,所以会导致计算结果不一致也可以理解为:某个计算机存储的是0.15245 另一个存的是0.1524512345这样计算出来的结果肯定有误差了什么是定点数?就是小数点的位置不变,比如:永远表示小数点后四位原创 2022-01-12 19:49:15 · 448 阅读 · 0 评论 -
Unity使用Entitas开发逻辑显示分离Demo(二)
继续上一章说:传送门目的:添加完TickUpdateSystem后,我们希望把游戏内的TickCount显示在UI上那么应该怎么做呢?思路:想到添加逻辑的需求,就要添加一个System解决大体的逻辑就是通过收集游戏所有的TickComponent(这里只有一个),检测逻辑实体变化后,通知所有的 渲染实体所以1.先创建一个监听Tick的数据组件:TickListenerComponetpublic interface ITickListener{ void OnTick(int c原创 2021-05-20 23:52:08 · 846 阅读 · 1 评论 -
Unity使用Entitas开发逻辑显示分离Demo(一)
前言:本文使用Entitas插件,开发一个逻辑表现分离的小Demo好多教程都是写个HelloWorld的,毫无营养后续会根据这个一点一点开发,补充功能:预测or回滚这次要做什么?很简单,逐帧update,然后显示在UI上逻辑系统:一直在update增加帧数渲染系统:当帧数变化时,同时UI更新显示(可有可无,不影响逻辑运行)1.导入插件本次用到的插件目录:传送门点击右边的Release,下载 1.13.0 这个版本(最新)然后解压,把Assets目录下的文件都导入到Unity工程中,原创 2021-05-20 00:09:52 · 1776 阅读 · 7 评论 -
Unity游戏开发中ECS思想介绍
ECS是啥?ECS是一种编程思想,和传统的面向对象有区别有一篇文章说的挺好,大家可以看看,这里只简要概括一下!浅谈《守望先锋》中的ECS架构ECS:E(Entity)实体C(Component)组件S(System)系统这个是一种编程思想,也算是一种游戏内容的开发框架游戏里任何对象都可以抽象成 Entity ,我们也可以理解的 Entity=游戏对象举个例子:一个技能实体算是Entity、一个特效实体、一个玩家实体等等。游戏对象上的任何一个数据,就是一个Component,可以理解为原创 2021-05-19 23:22:35 · 2863 阅读 · 2 评论 -
碰撞算法的设计问题
这是我在《实时碰撞检测算法技术》看的,记录一下~设计碰撞检测系统时,多种因素将会影响设计的选择,包括一下几类:1.应用程序中对象的表达方式计算机图形硬件一般都是用三角形作为基本的渲染图元对于场景中物体一般多为多边形几个概念:多边形汤(Polygon Soup):一组无序的多边形构成的集合,并且不包含确定多边形相互关系的连接信息多边形网格:多边形通过公共边可以连接成一个大型的多边形平面2.碰撞与几何渲染设计时最好将渲染系统和碰撞系统分离(也确实是这么做的)原因:a).图形平台上的集合体渲原创 2021-05-17 19:27:38 · 412 阅读 · 1 评论 -
帧同步核心逻辑要点
要点1.逻辑层和表现层分离核心战斗逻辑不用依赖任何表现层对象,完全通过消息驱动2.所有运算逻辑的确定性a)浮点数b)随机数c)计时d)线程/协程e)第三方库3.表现层不能直接控制核心战斗逻辑优势:1.战斗和渲染分别在不同线程,充分利用CPU2.逻辑解耦,架构更清晰,调试更方便...原创 2021-05-17 18:54:31 · 383 阅读 · 0 评论 -
帧同步介绍
1.帧同步游戏的起源:来自RTS游戏(星际、war3、帝国时代等等)游戏客户端按照帧的概念来同步执行,要保证确定性不同的客户端只要每帧的输入相同,就一定会产生一致性的结果介绍几种帧同步解决方案:a)传统的Lock-Step帧同步解决方案:适合游戏:RTS,局域网内格斗类游戏,模拟器联机,追求公平性的比赛模式优点:同步性+一致性,保证游戏公平缺点:游戏卡顿取决于网络环境最差的玩家,表现为如果玩家卡则会卡住所有玩家,恶意玩家可模拟网络差,对游戏环境进行破坏b)纯Step帧同步解决方案原创 2021-05-17 17:08:43 · 570 阅读 · 2 评论