US2S1L7——旋转矩阵
US2S1L7——旋转矩阵
4×44 \times 44×4 矩阵的基本构成规则为:
[M11M12M13txM21M22M23tyM31M32M23tz0001]\begin{bmatrix}
M_{11} & M_{12} & M_{13} & tx \\
M_{21} & M_{22} & M_{23} & ty \\
M_{31} & M_{32} & M_{23} & tz \\
0 & 0 & 0 & 1
\end{bmatrix}
M11M21M310M12M22M320M13M23M230txtytz1
矩阵的 M3×3M^{3 \times 3}M3×3 部分用于表示旋转和缩放变换
矩阵的 t3×1t^{3 \times 1}t3×1 部分用于表示平移
矩阵的 01×30^{1\times3}01×3 部分始终为零矩阵
矩阵的 右下角元素 始终为 1
旋转矩阵
旋转操作需要指定一个旋转轴(不一定是空间中的坐标轴)
...
US2S1L6——平移矩阵
US2S1L6——平移矩阵
知识回顾
三维空间中的点或向量,我们使用齐次坐标进行矩阵运算
(x,y,z,w)(x , y , z , w)(x,y,z,w),其中 w=1w = 1w=1 时 代表是一个点,w=0w = 0w=0 时 代表一个向量
在Unity的Shader开发中
我们采用列矩阵的形式进行向量计算,利用结合律,我们可以从右往左阅读
CBAv=C(B(Av))CBAv = C(B(Av))CBAv=C(B(Av))
基础变换矩阵的构成规则
通过上节课齐次坐标的学习,我们知道:4×44 \times 44×4 的矩阵为仿射矩阵
它不仅可以表示出线性变换(缩放、旋转等),还可以表示出平移变换。
因此,我们将要学习的平移、缩放、旋转相关的变换,将会使用 4×44 \times 44×4 的矩阵来进行计算
4×44 \times 44×4 矩阵的基本构成规则为:
[M11M12M13txM21M22M23tyM31M32M23tz0001]\begin{bmatrix}
M_{11} & M_{12} & M_{13} & tx \\
M ...
US2S1L5——齐次坐标
US2S1L5——齐次坐标
齐次坐标
齐次坐标是一种在计算机图形学中常用的表示坐标的方式。
它是通过引入一个额外的维度来扩展传统的笛卡尔坐标系,就是将一个原本是 nnn 维的向量或矩阵用 n+1n + 1n+1 维来表示,
让我们可以更方便的进行几何变换和矩阵运算。
举例:
三维空间中有一个向量或点 (x,y,z)(x , y , z)(x,y,z),它对应的齐次坐标就是给它加一维,变成 (x,y,z,w)(x , y , z , w)(x,y,z,w) ,
其中 www 值的改变可以让它有具有不同的含义。
齐次坐标是什么
就是将一个原本是 nnn 维的向量或矩阵用 n+1n + 1n+1 维来表示
为什么要使用齐次坐标进行矩阵运算
明确的区分向量和点
能够表示出平移变换
为什么要使用齐次坐标进行矩阵运算
主要原因1:通过齐次坐标,我们可以明确的区分向量和点
刚才的例子讲解:
三维空间中的 (x,y,z)(x , y , z)(x,y,z) ,它既可以表示点,也可以表示向量。
那么我们可以利用齐次坐标给它加一维,变成 (x,y,z,w)(x , y , z , ...
US2S1L4——矩阵的几何意义
US2S1L4——矩阵的几何意义
几何意义
要了解矩阵的几何意义,我们必须知道几何意义是什么意思
几何意义:
在数学中,几何意义指数学概念、对象或运算在几何学中的直观解释或视觉表达。
可以将抽象的数学概念与我们对空间和形状的感知联系起来。
通过几何意义,我们可以用直观的方式理解和描述数学概念,使其更据实际意义
比如:点和向量都可以在图像中画出来,他们的几何意义涉及到它们在几何学中的位置、形状、结构、关系等方面的解释和理解,
通过可视化,可以更好的研究和应用。
说人话:几何意义就是帮助我们用简单的语言和图像来解释数学概念,使其更具实际意义
矩阵的几何意义 —— 变换(Transform)
点和向量能在图像中画出来,那么矩阵可以吗?
答案是肯定的,矩阵的可视化结果就是:变换(Transform)
在游戏开发中,如果你看到了一个矩阵,那么基本上你可以认为你看到的是一个变换,这些变换一般包含:平移、旋转、缩放
比如:
我们想要将一个点、一个向量进行一种变换(平移、旋转、缩放)
那么我们可以利用矩阵来进行数学计算,从而达到变换的目的
变换的种类
矩阵的几何意思是变换,在数学中常用的几何变换有两种 ...
P2L9——【程序准备工作】Github注册登录 Gitbub Desktop的下载安装
P2L9——【程序准备工作】Github注册登录 Gitbub Desktop的下载安装
更好的体验github的一种方式
由于某些原因,github的直接使用体验不甚理想,想要稳定流畅使用需要借助加速工具,
这里可以使用羽翼城大佬制作的steamcommunity 302,它是免费的,在这里下载:steamcommunity 302 – Dogfight360
该工具虽然主要用于加速Steam社区的浏览,但该工具内置了很多网页的加速选项,其中就包括github,且笔者实测效果显著
在下载安装并打开该工具后,点击设置
在本地反代选择处选择Github访问,保存设置重启软件即可
加速Github的访问有多种方式,本方式仅供参考
Github注册登录
**1. 访问github网站:**GitHub
2. 点击右上角登录
3.若没有账号,则注册
4.注册流程
邮箱输入
密码输入
用户名输入
邮箱是否接收产品更新和公告,根据需求选择
防机器人验证
回答问题即可
登录注册用的邮箱,收取验证码后输入
5.登录
6.首次 ...
P2L8——【程序准备工作】为何要使用版本管理软件
P2L8——【程序准备工作】为何要使用版本管理软件
版本管理软件
版本管理软件 是用来 跟踪、记录、管理 项目文件(如代码、文本、图像、音频等)变化的
主要是用来帮助我们进行:版本控制、团队协作、并行开发、代码审查、备份和恢复
它可以帮助我们 提高团队协作效率,保护数据安全,跟踪项目变化
版本管理软件主要功能是可以用来随时记录工程的修改(代码、文本、资源等)
使用者每同步上传一次自己的修改,它就会将其记录在案
因此,我们可以利用它完成以下工作:
团队协作、并行开发:当不同人员开发完对应功能后上传,通过版本管理软件合并他们的代码
代码审查:方便程序主管审核代码,通过版本管理软件可以看到对方上传的代码,进行审核
版本控制、备份和恢复:由于版本管理软件记录了所有节点上传的数据,可以准确的控制版本信息,随时随地的进行数据备份和恢复
版本管理软件是用来做什么的
帮助我们进行版本控制、团队协作、并行开发、代码审查、备份和恢复
常用的版本管理软件有哪些
Git、SVN、Perforce、Mercurial、Plastic 等等
我们之后主要使用Mercurial(水银),Git通 ...
US2S1L3——特殊矩阵
US2S1L3——特殊矩阵
特殊矩阵
方块矩阵 —— 行列数相等的矩阵
对角矩阵 —— 只有主对角线有值,其余元素全为零的 方阵
单位矩阵 —— 主对角线上的元素均为1 的 对角矩阵
数量矩阵 —— 主对角线上的元素为同一值 的 对角矩阵
转置矩阵 —— 将原始矩阵的行和列互换得到的 新矩阵
矩阵转置的转置等于原矩阵 (MT)T=M(M^T)^T = M(MT)T=M
矩阵串接的转置,等于反向串接各个矩阵的转置 (AB)T=BTAT(AB)^T =B^TA^T(AB)T=BTAT
逆矩阵 —— MM−1=M−1M=I(单位矩阵)MM^{−1} = M^{−1}M = I(单位矩阵)MM−1=M−1M=I(单位矩阵)
正交矩阵 —— 一个方阵和它的转置矩阵相乘为单位矩阵,那么它就是正交矩阵:MMT=MTM=IMM^T = M^TM = IMMT=MTM=I
列矩阵和行矩阵 —— 列矩阵就是只有一列的矩阵;行矩阵就是只有一行的矩阵。他们一般用于表示向量
方块矩阵
方块矩阵简称方阵,它的特点是**行列数相等**,比如 3×33\times33×3、4× ...
P2L7——【程序准备工作】技术栈选择
P2L7——【程序准备工作】技术栈选择
技术栈
技术栈的意思是:用于开发 软件(游戏)使用的**技术和工具的集合**
比如:
前后端程序技术 —— C++、C#、Java、Lua 等语言
开发工具 —— Visual Studio、VSCode、Unity引擎、UE引擎、Cocos引擎 等
也就是说我们在正式开发之前,需要根据项目的实际情况
考虑好应该用什么样的技术和工具来进行开发,做好开发准备
什么是技术栈
用于开发 软件(游戏)使用的技术和工具的集合
游戏开发(前端)常规技术栈分类
Unity、UE、Cocos、Flash、Laya等
Unity 技术栈选择
Unity 2022.3.28f1、 VS、 Unity程序基础小框架、 数据持久化四部曲之2进制 等
在正式开发前就应该选择好技术栈,才能更好的应对后续的实际开发
游戏开发(前端)常见技术栈分类
由于目前 游戏开发前端 主要都是 基于 游戏引擎 进行开发
因此,技术栈基本都基于游戏引擎来划分。
目前市面上常见的技术栈分类有以下几种:
Unity —— 适合移动端游戏、主机端游戏等
UE(虚幻) —— 适 ...
P2L6——游戏开发前后端程序区别
P2L6——游戏开发前后端程序区别
游戏开发前后端程序方向选择
对于学生和转业人员,要明确自己的定位,选择以 前后端程序的哪种身份进入行业。
针对性地进行学习、突破、专精,当自己的技能达到一定水平后,可以前后端全方面发展。
但是对于初学者的建议,一定是选择前后端其中一条路线进行学习,
如果双管齐下,由于时间、精力、专注度种种因素往往会得不偿失。
游戏开发前后端程序的定义
游戏 客户端程序员 = 前端程序员
工种主要包括:
Unity程序员
UE程序员
Cocos程序员
Egret程序员
Laya程序员
Flash程序员
等等
游戏 服务端程序员 = 后端程序员
工种主要包括:
C++程序员
Java程序员
Go程序员
C#程序员
等等
前后端核心技能点
前端核心技能点
编程语言 c#、c++、TypeScript、as
脚本语言 lua
常用数据结构和算法
常用设计模式
游戏引擎工具使用(Unity、UE、Cocos等等)
渲染原理,动画原理,着色器编程
3D游戏数学基础
多线程编程
游戏AI编程
等等
后端核心技能点
编程语言 c++、java、Go ...
UH5——HybridCLR热更新解决方案
UH5——HybridCLR热更新解决方案
HybridCLR
HybridCLR是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生c#热更方案。
HybridCLR扩充了il2cpp的代码,使它由纯AOT runtime变成 AOT+Interpreter 混合runtime,进而原生支持动态加载assembly,
使得基于il2cpp backend打包的游戏不仅能在Android平台,
也能在IOS、Consoles等限制了JIT的平台上高效地以AOT+interpreter混合模式执行,从底层彻底支持了热更新。
HybridCLR首页:HybridCLR | HybridCLR (code-philosophy.com)
HybridCLR的Github:focus-creative-games/hybridclr (github.com)