US2S1L8——缩放矩阵
US2S1L8——缩放矩阵 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 部分始终为零矩阵 矩阵的 右下角元素 始终为...
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 部分始终为零矩阵 矩阵的 右下角元素 始终为...
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} &...
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 维来表示 为什么要使用齐次坐标进行矩阵运算 明确的区分向量和点 能够表示出平移变换 为什么要使用齐次坐标进行矩阵运算 主要原因有: 通过齐次坐标,我们可以明确的区分向量和点 刚才的例子讲解: 三维空间中的 (x,y,z)(x , y , z)(x,y,z) ,它既可以表示点,也可以表示向量。那么我们可以利用齐次坐标给它加一维,变成 (x,y,z,w)(x , y ,...
US2S1L4——矩阵的几何意义
US2S1L4——矩阵的几何意义 几何意义 要了解矩阵的几何意义,我们必须知道几何意义是什么意思 几何意义: 在数学中,几何意义指数学概念、对象或运算在几何学中的直观解释或视觉表达。 可以将抽象的数学概念与我们对空间和形状的感知联系起来。 通过几何意义,我们可以用直观的方式理解和描述数学概念,使其更据实际意义 比如:点和向量都可以在图像中画出来, 他们的几何意义涉及到它们在几何学中的位置、形状、结构、关系等方面的解释和理解, 通过可视化,可以更好的研究和应用。 说人话:几何意义就是帮助我们用简单的语言和图像来解释数学概念,使其更具实际意义 矩阵的几何意义 —— 变换(Transform) 点和向量能在图像中画出来,那么矩阵可以吗? 答案是肯定的,矩阵的可视化结果就是:变换(Transform) 在游戏开发中,如果你看到了一个矩阵,那么基本上你可以认为你看到的是一个变换,这些变换一般包含:平移、旋转、缩放 比如:我们想要将一个点、一个向量进行一种变换(平移、旋转、缩放),...
P1L9——【程序准备工作】Github注册登录 Gitbub Desktop的下载安装
P1L9——【程序准备工作】Github注册登录 Gitbub Desktop的下载安装 更好的体验github的一种方式 由于某些原因,github的直接使用体验不甚理想,想要稳定流畅使用需要借助加速工具, 这里可以使用羽翼城大佬制作的steamcommunity 302,它是免费的,在这里下载:steamcommunity 302 – Dogfight360 该工具虽然主要用于加速Steam社区的浏览,但该工具内置了很多网页的加速选项,其中就包括github,且笔者实测效果显著 在下载安装并打开该工具后,点击设置 在本地反代选择处选择Github访问,保存设置重启软件即可 加速Github的访问有多种方式,本方式仅供参考 Github注册登录 **1. 访问github网站:**GitHub 2....
P1L8——【程序准备工作】为何要使用版本管理软件
P1L8——【程序准备工作】为何要使用版本管理软件 版本管理软件 版本管理软件 是用来 跟踪、记录、管理 项目文件(如代码、文本、图像、音频等)变化的 主要是用来帮助我们进行:版本控制、团队协作、并行开发、代码审查、备份和恢复 它可以帮助我们 提高团队协作效率,保护数据安全,跟踪项目变化 版本管理软件主要功能是可以用来随时记录工程的修改(代码、文本、资源等) 使用者每同步上传一次自己的修改,它就会将其记录在案 因此,我们可以利用它完成以下工作: 团队协作、并行开发:当不同人员开发完对应功能后上传,通过版本管理软件合并他们的代码 代码审查:方便程序主管审核代码,通过版本管理软件可以看到对方上传的代码,进行审核 版本控制、备份和恢复:由于版本管理软件记录了所有节点上传的数据,可以准确的控制版本信息,随时随地的进行数据备份和恢复 版本管理软件是用来做什么的 帮助我们进行版本控制、团队协作、并行开发、代码审查、备份和恢复 常用的版本管理软件有哪些 Git、SVN、Perforce、Mercurial、Plastic...
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 列矩阵和行矩阵 —— 列矩阵就是只有一列的矩阵;行矩阵就是只有一行的矩阵。他们一般用于表示向量 方块矩阵 方块矩阵简称方阵,它的特点是**行列数相等**,比如...
P1L7——【程序准备工作】技术栈选择
P1L7——【程序准备工作】技术栈选择 技术栈 技术栈的意思是:用于开发 软件(游戏)使用的**技术和工具的集合** 比如: 前后端程序技术 —— 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(虚幻)...
P1L6——游戏开发前后端程序区别
P1L6——游戏开发前后端程序区别 游戏开发前后端程序方向选择 对于学生和转业人员,要明确自己的定位,选择以 前后端程序的哪种身份进入行业。 针对性地进行学习、突破、专精,当自己的技能达到一定水平后,可以前后端全方面发展。 但是对于初学者的建议,一定是选择前后端其中一条路线进行学习, 如果双管齐下,由于时间、精力、专注度种种因素往往会得不偿失。 游戏开发前后端程序的定义 游戏 客户端程序员 = 前端程序员 工种主要包括: Unity程序员 UE程序员 Cocos程序员 Egret程序员 Laya程序员 Flash程序员 等等 游戏 服务端程序员 = 后端程序员 工种主要包括: C++程序员 Java程序员 Go程序员 C#程序员 等等 前后端核心技能点 前端核心技能点 编程语言 c#、c++、TypeScript、as 脚本语言 lua 常用数据结构和算法 常用设计模式 游戏引擎工具使用(Unity、UE、Cocos等等) 渲染原理,动画原理,着色器编程 3D游戏数学基础 多线程编程 游戏AI编程 等等 后端核心技能点 编程语言...