当前位置: 首页 > news >正文

辽宁建设官方网站汕头人才网

辽宁建设官方网站,汕头人才网,温州网络公司前十名,上海建设检测网上登记网站1 空间 1.1 左右手坐标系及其法则 1.1.1 左右手坐标系 左手坐标系与右手坐标系Unity 局部空间、世界空间、裁剪空间、屏幕空间都采用左手坐标系#xff0c;只有观察空间采用右手坐标系。 左右手坐标系除了坐标系朝向#xff08;旋向性#xff09;不同#xff0c;还存在以…1 空间 1.1 左右手坐标系及其法则 1.1.1 左右手坐标系 左手坐标系与右手坐标系Unity 局部空间、世界空间、裁剪空间、屏幕空间都采用左手坐标系只有观察空间采用右手坐标系。 左右手坐标系除了坐标系朝向旋向性不同还存在以下差异  左手坐标系下旋转正方向的定义遵循左手法则右手坐标系下旋转正方向的定义遵循右手法则左手坐标系下向量叉乘遵循左手法则右手坐标系下向量叉乘遵循右手法则。 1.1.2 左右手法则 左手坐标系和右手坐标系下旋转正方形定义  左手旋转法则与右手旋转法则左手坐标系和右手坐标系下向量叉乘方向定义  左手叉乘法则与右手叉乘法则1.2 四维空间 在三维空间中将向量 u 变换到向量 v如果该变换是一个线性变换一般可以使用一个不依赖于 u、v 的 3x3 的矩阵描述即 A·uv其中 A 是描述该线性变换的变换矩阵。但是并不是所有线性变换都能使用 3x3 矩阵描述如平移变换和对称变换对于这些变换需要将空间扩展到四维空间中再使用 4x4 矩阵描述。 Unity 模型变换主要有平移、旋转、缩放、对称其中旋转和缩放变换可以使用 3x3 矩阵描述平移和对称变换必须使用 4x4 矩阵描述为了统一描述这些变换将三维空间扩展到四维空间中扩展方法如下 三维空间中的坐标原点 [0, 0, 0] 映射到四维空间中的 [0, 0, 0, 1] 点三维空间中的 x、y、z 轴正方向单位向量 [1, 0, 0]、[0, 1, 0]、[0, 0, 1] 分别映射到四维空间中的 [1, 0, 0, 0]、 [0, 1, 0, 0]、 [0, 0, 1, 0] 向量新添加的 w 轴 正方向单位向量为 [0, 0, 0, 1]。注意三维空间中的原点 [0, 0, 0] 并没有映射到四维空间中的原点 [0, 0, 0, 0]而是映射到 [0, 0, 0, 1]。 由以上空间映射关系可知 三维空间中的任意点 [x, y, z]对应的四维空间坐标为[x, y, z, 1]三维空间中的任意向量 [x, y, z]对应的四维空间坐标为[x, y, z, 0]。 1.3 Unity 空间 1.3.1 Unity 空间变换过程 从模型空间到裁剪空间的变换过程在顶点着色器中完成顶点着色器输入模型局部坐标输出裁剪空间中的坐标 从裁剪空间到屏幕空间的变换过程由系统控制用户不能控制该阶段变换。 1.3.2 Unity 空间变换示意图 模型空间、世界空间、 观察空间观察空间说明近平面和远平面间棱台称为视锥体表示可见区域范围视锥体以外的顶点数据将被裁剪丢弃。  裁剪空间说明裁剪空间中的点满足条件-w x w-w y w-w z w不满足该条件的点将被踢出掉将满足条件的点 x、y、z 坐标除以 w齐次除法、透视除法就会得到归一化设备空间该空间中的点满足条件-1 x 1-1 y 1-1 z 1。 屏幕空间2 变换 2.1 模型变换 2.1.1 平移变换 对于任意点 [x, y, z, 1]将其平移 [a, b, c, 0]可以使用以下矩阵运算描述平移变换 对于任意向量 [x, y, z, 0]将其平移 [a, b, c, 0]平移后仍然是 [x, y, z, 0]如下 2.1.2 旋转变换 绕 x 轴旋转 α 度对应的旋转矩阵如下 绕 y 轴旋转 α 度对应的旋转矩阵如下 绕 z 轴旋转 α 度对应的旋转矩阵如下 当旋转角度为 [α, β, γ] 时对应的复合旋转矩阵为 2.1.3 缩放变换 对于缩放系数 [kx, ky, kz]对应的缩放矩阵如下 当 kx ky kz 时该缩放变换称为统一缩放uniform scale否则称为非统一缩放nonuniform scale。 2.1.4 对称变换 对于任意点 [x, y, z, 1]关于点 [a, b, c, 1] 对称的点可以使用以下矩阵运算描述对称变换 2.2 观察变换 将世界坐标系按照 1.2 节映射方法扩展到四维空间中假设 x、y、z、w 轴正方向的的单位向量分别为 e1、e2、e3、e4相机在世界坐标系下的坐标为 [a, b, c, 1]其向右、向上、向前方向的单位向量分别为r、u、f则向量 r、u、-f、e4 在一组基向量 e1, e2, e3, e4 下的表示如下f 取负是因为观察坐标系是右手坐标系其 z 轴的正方向与相机的前方方向相反 由于向量 r、u、-f、e4 两两垂直并且都是单位向量因此由这 4 个向量组成的矩阵是正交矩阵即 A-1 A。由此可知向量 e1, e2, e3, e4 在一组基向量 r、u、-f、e4 下的表示如下 右侧的矩阵就是坐标轴的旋转变换矩阵另外还需要进行坐标原点的平移变换由 1.2.1 节平移变换矩阵可知观察变换矩阵如下 2.3 投影变换 2.3.1 透视投影 1透视投影相机参数 Unity 提供给用户调整透视投影矩阵的参数如下  Near近平面距离相机的距离Far远平面距离相机的距离Field of View视锥体在竖直方向上的张角以下简称 FOVViewport Rect视口起点和宽高左下角为原点向右宽度增加向上高度增加根据 Near、Far、FOV 的值可以计算近平面和远平面高度分别为 近平面和远平面的宽度由相机或屏幕宽高比决定假设相机或屏幕宽高比为 Aspect则近平面和远平面的宽度计算如下 2透视投影矩阵推导 投影的目的是将模型顶点投影到近平面上如下将观察坐标系下的任意顶点 [x0, y0, z0] 投影到近平面上投影后的坐标为 [x1, y1, z1]’z1 -Near。 根据三角形相似原理存在以下函数关系 为了方便后续进行屏幕映射需要将 [x1, y1] 进行标准化即将 x1、y1 映射到区间 [-1, 1]当前 -nearClipPlaneWidth / 2 ≤ x1 ≤ nearClipPlaneWidth / 2-nearClipPlaneHeight / 2 ≤ y1 ≤ nearClipPlaneHeight / 2假设归一化后的坐标为 [x2, y2]因此存在以下关系 将 x1、y1、nearClipPlaneWidth、nearClipPlaneHeight 使用 x0、y0、z0、Aspect、FOV 替换得 x2、y2 已标准化但是当前 -Far ≤ z0 ≤ -Near我们期望将 z0 也标准化假设标准化后的变量为 z2则 -1 ≤ z2 ≤ 1。x2 与 x0、y2 与 y0 的关系式中都存在 (-1 / z0)我们期望 z2 与 z0 的关系式中也存在 (-1 / z0)因此我们假设 z2 与 z0 的关系如下 将 [-Far, 1]、[-Near, -1] 代入求解得注意这里不能代入 [-Far, -1]、[-Near, 1]因为裁剪坐标系的 z 轴和 观察坐标系的 z 轴方向相反 将 k、b 代入 z2 与 z0 的关系式中得 整理 x2、y2、z2 与 x0、y0、z0 的关系如下 由于 z0 是变量在矩阵前面乘以 (-1 / z0)使得透视变换不是线性变换因此我们将原本的透视变换拆分为以下两步 对 [x0, y0, z0, 1] 左乘透视矩阵将第一步的结果除以 (-z0)。为保证透视变换的线性性质我们将第二步变换移到屏幕映射中处理并将其定义为齐次除法或透视除法而将第一步变换作为透视变换其对应的矩阵如下 说明P(4, 3) 定义为 -1 是为了将观察坐标系中顶点的深度信息 (-z) 传递给下一步齐次除法或透视除法处理用 w 存储即 w -z避免深度信息丢失。经透视变换后顶点坐标的 x、y、z 分量将约束在 [z, -z] 区间即 [-w, w]在该区间外的顶点将被丢弃。 经过透视变换后观察空间和裁剪空间视锥体的对比如下 2.3.2 正交投影 1正交投影相机参数 Unity 提供给用户调整正交投影矩阵的参数如下  Size视锥体在竖直方向上的高度的一半Near近平面距离相机的距离Far远平面距离相机的距离Viewport Rect视口起点和宽高左下角为原点向右宽度增加向上高度增加2正交投影矩阵推导 投影的目的是将模型顶点投影到近平面上如下将观察坐标系下的任意顶点 [x0, y0, z0] 投影到近平面上投影后的坐标为 [x0, y0, -Near]‘。  为了方便后续进行屏幕映射需要将 [x0, y0, z0] 进行标准化即将 x0、y0、z0 映射到区间 [-1, 1]当前 -Aspect · Size ≤ x1 ≤ Aspect · Size-Size ≤ y1 ≤ Size-Far ≤ z0 ≤ -Near假设归一化后的坐标为 [x1, y1, z1]因此存在以下关系 说明正交投影变换后w 分量的值仍然是 1从而保证 [x1, y1, z1] 经齐次除法除以 w1后仍然是标准化坐标即值域为 [-1, 1]这样做的好处是下游不用区分上游传递过来的数据是透视投影还是正交投影处理后的数据。经正交投影变换后顶点坐标的 x、y、z 分量将约束在 [-1, 1] 区间在该区间外的顶点将被丢弃。 经过正交投影变换后观察空间和裁剪空间视锥体的对比如下 2.4 齐次除法和屏幕映射 2.4.1 齐次除法 经透视投影或正交投影后将坐标 [x, y, z, w] 中的 x、y、z 分量都除以其 w 分量的值使得 x、y、z 都约束在 [-1, 1] 区间该过程称为齐次除法或透视除法得到的坐标称为归一化的设备坐标NDC。 2.4.2 屏幕映射 经齐次除法后将坐标的 x、y 值映射到屏幕像素位置该过程称为屏幕映射。映射前 x、y 的值域为 [-1, 1]映射后 x 的值域为 [0, pixelWidth]y 的值域为 [0, pixelHeight]屏幕左下角坐标为 [0, 0]右上角坐标为 [pixelWidth, pixelHeight]。屏幕映射公式如下 2.5 法线变换 假设模型变换为 M模型空间中某点法线向量为 n如果模型变换中包含非统一缩放即 x、y、z 的缩放系数不全相等 此时若按照 M · n 计算法线的世界坐标就会出现变换后的法线与切面不垂直如下图。 法线由切线计算而来在模型空间中 A 点的切线向量为 v1法线向量为 n1经过模型变换矩阵 M后切线向量为 v2法线向量为 n2假设法线向量的变换矩阵为 G因此存在以下关系  Unity 中线性变换主要有平移、旋转、缩放由于向量不受平移变换影响因此对于法线向量而言只受旋转和缩放影响。 当 M 只包含旋转变换时M 是正交矩阵因此 G M当 M 只包含统一缩放变换时M k·E因此 G 1/k·E 1/(k^2)·M由于法线向量只需要方向后面会进行归一化因此可以简写 G M当 M 只包含旋转变换和统一缩放变换时G 1/(k^2)·M由于法线向量只需要方向后面会进行归一化因此可以简写 G MUnity 中法线变换源码如下 UnityCG.cginc // 局部空间-世界空间 float3 UnityObjectToWorldNormal(float3 norm) { #ifdef UNITY_ASSUME_UNIFORM_SCALING // 统一缩放(x、y、z分量缩放系数一致)return UnityObjectToWorldDir(norm); // normalize(mul((float3x3)unity_ObjectToWorld, norm)) #elsereturn normalize(mul(norm, (float3x3)unity_WorldToObject)); // mul(IT_M, norm) mul(norm, I_M) #endif }
http://www.tj-hxxt.cn/news/226439.html

相关文章:

  • 四川建设网网站软件开发培训学校驾校宝典
  • php在线做网站永久免费网站系统
  • 苏网站建设网站显示速度的代码是什么意思
  • 创建吃的网站怎么做佛山seo扣费
  • 网站标志的原则领英如何创建公司主页
  • 苏州网站关键字优化wordpress用户访问频率
  • 比格设计官网西安百度seo排名软件
  • 网站建设谈单技巧WordPress推送百家号
  • 商务定制网站自己电脑如何做网站服务器
  • 做餐饮店铺哪个网站深圳做生鲜食材的网站叫什么
  • 淄博三合一网站开发友情链接代码美化
  • 吉林天宇建设集团网站手机软件开发公司
  • 域名出售网站宁波网站建设公司哪有
  • 北京cms建站系统十大网红电商
  • 无锡免费建设网站美妆网页设计代码大全
  • 访问数据库的网站开发语言网站接电话
  • 哪个网站银锭专业做银锭的公众号链接电影网站怎么做
  • 保定网站优化公司站长工具seo优化建议
  • 黑龙江网站建设巨耀网络企业如何制作网站管理系统
  • 自己做的网站怎样让百度搜到广州专业拓客团队联系方式
  • 做网站需要什么许可证大连网站开发培训班
  • 上海智能网站建设wordpress并发
  • 网站建设汇编材料建设什么网站可以赚钱
  • 网站设计有限公司怎么样东莞市莞城建筑工程有限公司
  • 学校校园网站使用湛江做网站的网站
  • 门户网站建设工作制度建立情况免费定制开发软件
  • 广州市住房和城乡建设局官方网站wordpress 主题 汉化
  • 怎么制作网站网页seo关键词智能排名
  • 广州那里有学做拼多多网站的wordpress教程安装教程
  • 如何建设自己的企业网站网络规划设计师希赛