关于Unity的坐标系】的更多相关文章

前言 本篇文章主要是参考<Unity API 解析>---陈泉宏. 这是本人在学校图书馆找到一本书,主要介绍的就是常用的类,比较实用,没有冗余的地方.在此推荐一下这本书! 一.ScreenToViewportPoint方法 1.函数原型 public Vector3 ScreenToViewportPoint(Vector3 position); 其中参数position为屏幕参考点. 2.功能说明 可以实现坐标点position从屏幕坐标系向摄像机视口的单位化坐标系转换.参考点positio…
1.坐标系分为左手坐标系和右手坐标系 2.用手从X轴旋到Y轴画一个弧,如果大拇指所指的方向是Z轴,那么这个坐标系就是这只手的坐标系 3.Unity是左手坐标系,OpenGl是右手坐标系 Unity坐标系中可以分3种 1.世界坐标系,场景视图整个世界的坐标系 2.模型坐标系,某个物体自己的坐标系 3.摄像机坐标系,通过公式换算,把三维世界里面的物体坐标,投影到游戏视图的二维视图上的时候,转换来的坐标,根据公式Z1/Z=X1/X=Y1/Y…
坐标空间 1:物体空间: 3D物体自己的坐标空间 一般设计时几何体以中心为原点,人物以双脚为原点; 2: 世界空间: 3D物体在场景中的世界坐标, 整个游戏场景的空间; 3: 摄像机空间: 以观察摄像机为原点的坐标系下的坐标空间; 4: 投影成像 3D坐标转换到屏幕空间;…
世界坐标: transform.position获取的是世界坐标 屏幕坐标: 单位像素 屏幕左下角(0,0)右上角(Screen.width,Screen.height) Screen.width = Camera.main.pixelWidth; Screen.height = Camera.main.pixelHeight; 可通过Input.mousePosition获取屏幕坐标 视口坐标: 屏幕左下角(0,0)右上角(1,1) 视口坐标是一个3D坐标,z轴是相对于相机而言. GUI坐标:…
从昨天开始遇到一个看似很小,但令我苦恼的问题,由于对Unity的坐标系没有直接搞清楚,所以导致一个shader没看懂,于是发了个贴:http://game.ceeger.com/forum/read.php?tid=11367&fid=2,结果到晚上终于搞明白了,心情大好,趁热分享. 因为实在是懒得再重新写一遍了,我就把原帖子抄一遍: 一楼: 大家好,我是unity新手,在研究ShadowGun提供的shader,其中建筑使用的高光shader:“MADFINGER-Lightmap- Unli…
Unity引擎时非常成熟的,引擎内部运用了很多的数学知识,他对开发者来说是不可见的,而且他已经封装好的算法也不是很全面.此外,要是使用引擎封装好的算法也要明白其实现的原理. 写过一些代码,也参考了一些博客,书籍,想就此记录总结一下的自己所学到的东西,也给大家分享一下. 而我主要想从这五个方面来简要说说,分别是Unity坐标系,向量,矩阵,四元数,欧拉角.这篇先来介绍第一个. 在介绍Unity的坐标系钱,我想先谈谈3D坐标系,表示的是三维空间,它存在着三个坐标轴,分别是X轴,Y轴,Z轴.3D坐标系…
遇到一个想做的功能,但是实现不了,核心原因是因为对U3D的3D数学概念没有灵活吃透.故再次系统学习之—第三次学习3D数学. 本次,希望实现的功能很简单: 如在小地图中,希望可以动态画出Player当前的位置.z的朝向:用3条线.z轴正向.30°旋转.-30°旋转. 问题是:0点可以获得,P1点? P2点是未知的. 我尝试了2个小时,结果不竟如人意,少于沮丧. 不得不,再次花点时间系统的学习3D数学: 1 位移–向量和点: 点: 点和向量在数学上是一致的,实际生活中点的概念比较好理解,坐标点来定位…
写在前面 Unity3D虽然是个非常方便的游戏引擎,但还是有一些地方会产生一些让人莫名其妙的问题,而且debug半天也不知道到底哪里错了.往往在经过了大量的log之后,也许我们才顿悟,原来Unity内部是这样做的啊.这里旨在总结这些容易被忽略.但是又经常会给开发造成麻烦的问题,欢迎补充. 随时更新. 备忘录 1.  StartCoroutine和StopCoroutine Coroutine,即协同程序,如果使用的语言是C#,那么我们必须使用StartCoroutine去指明开启一个协同程序.S…
game_root节点下右一个Cube子节点,和一个Sphere节点,脚本挂载在game_root下 四元数:(1)Quaternion rot (2)this.cube.rotation 欧拉角:Vector3类型的数据 Vector3的x,y,z是按照Unity的坐标系的顺序,所以不能像数学里面,把Unity的z当成了y,Unity的y当成了z. 一.使用欧拉角做旋转(欧拉角) private Transform cube; void Start () { this.cube = this.…
线纹理的代码非常简单,但是我们有必要在这之前首先了解它们背后的实现原理. 深度纹理实际上就是一张渲染纹理,只不过它里面存储的像素值不是颜色值而是一个高精度的深度值.由于被存储在一张纹理中,深度纹理里的深度值范围是[0,1],而且通常是非线性分布的.那么,这些深度值是从哪里得到的呢?总体来说,这些深度值来自于顶点变换后得到的归一化的设备坐标(Normalized Device Coordinates, NDC).一个模型要想最终被绘制在屏幕上,需要把它的顶点从模型空间变换到齐次裁剪坐标系下,这是通…
摘录自 冯乐乐的<Unity Shader入门精要> 笛卡尔坐标系 1)二维笛卡尔坐标系 在游戏制作中,我们使用的数学绝大部分都是计算位置.距离.角度等变量.而这些计算大部分都是在笛卡尔坐标系下进行的. 一个二维的笛卡尔坐标系包含了两个部分的信息: 一个特殊的位置,即原点,它是整个坐标系的中心. 两条过原点的互相垂直的矢量,即X轴和Y轴.这些坐标轴也被称为是该坐标的矢量. OpenGL 和 DirectX 使用了不同的二维笛卡尔坐标系.如下图所示: 2)三维笛卡尔坐标系 在三维笛卡尔坐标系中,…
写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 查找更为方便的版本见:https://alg4.ikesnowy.com/ 这一节内容可能会用到的库文件有 Quick,同样在 Github 上可以找到. 善用 Ctrl + F 查找题目. 习题&题解 2.3.1 解答 2.3.2 解答 2.3.3 解答 N / 2 在快速排序中,一个元素要被交换,有以下两种情况 1.该元素是…
写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 查找更为方便的版本见:https://alg4.ikesnowy.com 这一节内容可能会用到的库文件有 Merge,同样在 Github 上可以找到. 善用 Ctrl + F 查找题目. 习题&题解 2.2.1 解答 2.2.2 解答 2.2.3 解答 2.2.4 解答 是的,必须要两个子数组都有序时归并才能得到正确结果.如果…
写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 这一节内容可能会用到的库文件有 Measurement 和 TestCase,同样在 Github 上可以找到. 善用 Ctrl + F 查找题目. 习题&题解 1.5.1 解答 quick-find 的官方实现:QuickFindUF.java. 只要实现相应并查集,然后输入内容即可. 增加一个记录访问数组次数的类成员变量,在…
写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 这一节内容可能会用到的库文件有 Measurement 和 TestCase,同样在 Github 上可以找到. 善用 Ctrl + F 查找题目. 习题&题解 1.4.1 解答 即为证明组合计算公式: C(N, 3) = N! / [(N - 3)! × 3!]= [(N - 2) * (N - 1) * N] / 3!= N…
万向锁 一直困惑我很久....原因出在这里,我以为欧拉角旋转是以模型坐标(齐次坐标系)为旋转轴.问题就来了,无论旋转那个轴,其它两个轴也会相应的变化,下面看图: 根据上面的说明两个旋转面(圆圈)怎么会共面,让我迷糊.假设共面,那这两个旋转面的法线应该是旋转轴,要想两个面共面,那旋转轴肯定平行的.但问题是以模型坐标(齐次坐标系)为旋转轴,无论旋转那个轴,其它两个轴也会相应的变化,而且相互垂直.就不会发生共面,不会出现万象锁??? 网上说欧拉角坐标轴旋转是按顺序旋转的,即父子关系,如下图 还是不明白…
@[TOC] 1. 顶点的坐标空间变换过程 我们知道,在渲染流水线中,一个顶点要经过多个坐标空间的变换才能最终被画在屏幕上.一个顶点最开始是在模型空间中定义的,它最后会被变换到屏幕空间中,得到真正的屏幕像素坐标.因此接下来我们将解释顶点要进行的各种空间变换的过程. 为了帮助大家理解这个过程,我们将建立在农场游戏的实例背景下,每讲到一种空间变换,我们都会解释如何应用到这个案例中. 在我们的农场游戏中,妞妞很好奇自己是如何渲染到屏幕上的.它只知道自己和一群小伙伴快乐的在农场里吃草,而前面一直有一个摄…
maya软件是用的右手坐标系,默认旋转顺序是ZYX,即先绕Z轴旋转,再绕Y轴旋转,最后绕X轴旋转. 比如在maya软件中,右侧的旋转顺序是可选的,默认的选择是“XYZ”,其实物体旋转顺序是倒着念,即上面所说的ZYX旋转顺序. 有兴趣的朋友可以进行验证. Unity软件是用的左手坐标系,旋转顺序是YXZ(貌似不能更改),即先绕Y轴旋转,再绕X轴旋转,最后绕Z轴旋转. 在上面的两个图中,由MAYA的模型导出FBX格式,然后再导入到Unity中,选中的是同一个关节:Jamie_R_Thumb_1 其在…
分类:Unity.C#.VS2015 创建日期:2016-04-20 一.简介 在虚拟的游戏世界中,与3D有关的数学知识决定了游戏引擎如何计算和模拟出开发者以及玩家看到的每一帧画面.学习或者回想一下基础的3D有关的数学知识,可以帮助开发者对游戏引擎产生更深刻的了解. 二.坐标系 在游戏开发中,经常会用到不同的坐标系来描述空间中的位置,常用的坐标系有: 1.世界坐标系(World) 用于描述游戏场景内所有物体位置和方向的基准,也称为全局坐标系. 2.局部坐标系(Local) 每个物体都有其独立的物…
分类:Unity.C#.VS2015 创建日期:2016-04-20 一.简介 这一张主要介绍3D坐标系的基础知识以及各种形状的天空盒. 二.示例 本章的示例都在ch05Demos工程下.…
1, World Space(世界坐标): 我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的.transform.position可以获得该位置坐标. 2, Screen Space(屏幕坐标): 以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的. 注:鼠标位置坐标属于屏幕坐标,Input.mousePosition可以获得该位置坐标,手指触摸屏幕也为屏幕坐标,Input.Ge…
说明: 注意几点: 0 行向量右乘矩阵与列向量左乘矩阵,两个矩阵互为逆矩阵 1 法线转换与mul,mul函数左乘矩阵当列矩阵计算,右乘当行矩阵计算 2 叉乘与左右手系,左手系用左手,右手系用右手,axb四指指向a,向b旋转(沿小与两个角度180的方向转),拇指的方向是叉乘方向 3 unity观察系的z方向,unity观察系是右手系,其他都是本地坐标,世界坐标,投影坐标都是左手系,所以观察系轴反向 4 投影系中w与uv伸展方向关系,w=1或-1 uv伸展正向或反向 http://blog.csdn…
当调用别人的接口时,经常会有获取位置或向量的接口.遇到这些数据时,先要弄清楚现在获取的数据在哪个坐标系下的. 是否需要进行坐标系变换,一般提供的位置和向量都是在世界坐标系的,此时需要注意: ①对方的坐标系是左手坐标系还是右手坐标系 因为Unity是左手坐标系,如果接口提供的数据是基于右手坐标系的话,我们需要把z值取反后,看起来的效果才是正常的. ②如果我们通过接口拿到的数据,我们想把它跟随场景中“Camera Rig”物体移动和旋转 为了实现“Camera Rig”物体移动我们拿到的位置也跟着移…
  全局坐标系 描述游戏场景内所有物体位置和方向的基准,也称为世界坐标系.在Unity场景中创建的物体都是以全局坐标系中的坐标原点(0,0,0)来确定各自的位置的. 局部坐标系 每个物体都有其独立的坐标系,并且随物体进行相同的移动或者旋转,也称为模型坐标系或物体坐标系.模型mesh的Transform保存的Position.Rotation和Scale都是相对于父类GameObject,父子物体的坐标系是关联的,此时子物体会以父物体的坐标点为自身的坐标原点.…
在Unity中我们通常会用到以下几个坐标系下的点: 世界坐标系:World Space 简单来讲,我们通过 transform.position | transform.rotation 获取得到的位置和旋转信息都是基于世界坐标系的,可以说,我们的很大一部分操作都是基于世界坐标系. 观察坐标:Eye Space 我们在Unity的Game视图中观察的画面始终是由摄像机提供的,基于摄像机的一个坐标系也就是"Eye Space"(简单来讲就是把摄像机看作原点位置). 视口坐标:View P…
一.坐标系的概念 Unity 世界坐标系采用左手坐标系,大拇指指向X轴(红色),食指指向Y轴(黄色),中指向手心方向歪曲90度表示Z轴(蓝色),同时Z轴也是物体前进方向,下图表示Unity的四种坐标系: 其中GUI和Screen的单位是像素单位,什么是像素单位呢,这里可以先了解一下像素相关知识: 像素:简单地来说,可以理解成一个方块,它是图像的最小单元,不能再分割,但它并没有固定的大小. 屏幕分辨率:指的是由像素组成的点阵,比如说一台电脑的屏幕分辨率为1920*1080,那么该电脑屏幕在横向有1…
Unity 使用的是左手坐标系…
Unity 使用的是左手坐标系…
1. World Space(世界坐标系): 我们在场景中添加的物体(如:Cube),他们都是以世界坐标显示在场景中.transform.position 获取的便是这个 坐标数值. 2. Scene Space(屏幕坐标系): 以像素来定义的,一屏幕的左下角为(0,0)点,右上角为(Screen.with,Screen.height),Z轴的位置是以相机的世界单位来衡量的(个人感觉是世界坐标的Z值). 2.1 鼠标位置属于屏幕坐标,Input.mousePosition 可以获得该位置坐标.…
x轴:从左指向右 y轴:从下指向上 z轴:指向屏幕里的是左手坐标系,指向屏幕外的是右手坐标系 记忆小技巧:都是X轴朝右,Y轴向上,跟平时画坐标一模一样,区别只是Z的朝向.你用手试一下就知道了,当大拇指朝右食指朝上时,剩下三指是自然朝手心方向弯曲的,如果反的话很难受.如果忘了的话就想想平时画图,然后左右手比划一下就记起来了.…