zoukankan      html  css  js  c++  java
  • Unity3D for VR 学习(6): 再次温故知新-3D数学

     一年前,系统学习过3D数学,并记录了一篇博客《C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型》。 一年后,再次温习之。

    坐标系:Unity3D使用左手笛卡尔坐标系(Descartes coordinate system)

    • 世界坐标系(world space):在一个游戏场景中,唯一。
    • 物体坐标系局部坐标系(localObject space):每个物体有各自的独立的坐标系。如桌子的物体坐标系中,扶手相对桌子腿位置。有时候,不需要对外暴漏太多细节。
    • 摄像机坐标系: 特殊的物体坐标系,用于定义物体在摄像机视野范围内,即那些物体会被摄像机绘制出来。
    • 惯性坐标系 (Intertial):一个“临时”坐标系,为了方便从世界坐标系到物体坐标系的转换,引入的新坐标系。原点和物体坐标系重合,坐标轴平行于世界坐标系。

    image

    Unity3D提供的有用的坐标系转换工具:

    1 RectTransformUtility

    Vector2 WorldToScreenPoint(Camera cam, Vector3 worldPoint)

    Ray ScreenPointToRay(Camera cam, Vector2 screenPos)

    2 《Unity3D项目实战笔记(1):prefab的插件方式

    下面代码可以使得:a.prefab被加载到了A的子节点下面,要使得a显示b点位置,一个办法是把a挂接到B下; 另外一个办法是用transform提供的2个方法,转换局部坐标为世界坐标,实现动态定位。

    Vector3 pos = A.transform.TransformPoint(a.localPostion);

    b.localpostion = B.transform.InverseTransformPoint(pos);

    向量(Vector):  有大小和方向,没有位置

    任意一点,都可以从原点开始用向量来表达,这个也是点和向量非常容易为初学者搞混的地方。同时,因为向量和位置无关,故向量可以在坐标系中任何地方使用。

    • 向量数乘,添加通过标量和向量相乘来实现力的系数调节
    • 向量标准化,大小为1的向量。亦称”法线”
    • 负向量,和原向量大小相等,方向相反的向量
    • 向量加法,向量a和向量b收尾向量,从a的尾到b的头的向量。
    • 向量减法,雷同向量加法。
    • 向量点乘(内积),结果为标量,描述了两个向量的”相似”程度,点乘结果越大,向量越接近。

    a.b >0: [0, 90), 方向相同

    a.b = 0 :90°   向量正交

    a.b<0: (90,180] 方向相反

    • 向量叉乘(叉积), 结果为一个垂直于原来的两个向量。

    矩阵(Matrix), 这里主要是2*2, 3*3, 4*4方阵

    DirectX使用的是行向量,Ope6nGL使用列向量。方阵的行可被解释为基向量

    线性变换保持直线和平行线,原点未移动;包含平移的变换称作仿射变换。

    变换物体和变换坐标系区别:变换物体,如旋转20°,意味着物体上所有的点都需要进行重新计算,被移动到新的位置。而旋转坐标系时,物体上的点实际未移动,只是在另外一个坐标系中描述他的位置而已;有时候使用变换坐标系,可以节约底层计算量。(例如碰撞检测,需要涉及的物体在同坐标系中)

    线性变换,不会导致平移(原点位置不会发生改变);放射变换在线性基础上接着进行平移。

    矩阵的行列式,结果为一个标量。

    正交矩阵,如果矩阵是正交的,则与它的转置矩阵相乘,结果为单位矩阵。同时,也可知正交矩阵的转置矩阵为逆矩阵。

    正交投影(降维操作),也称作平行投影。3D投影到2D屏幕上,该平面称作投影平面。

    透视投影,投影线不再平行而是相交于一点–投影中心。类似“小孔成像”,投影是倒着的。

    欧拉角,使用三个角度来保存方位:heading,Y轴,(-180,180);pitch, X轴, (-90, 90); bank, Z轴,(-180,180).

    四元数(Quation),用4个数字表达方位,避免了欧拉角的”万向锁”、Slerp球形差值问题。

    参考书籍:

    赞一下,暴风魔镜4 + 小米Note顶配2K屏,具有里程碑意义,能连续玩VR 20分钟以上

    分辨率好、陀螺仪好。

    相比之下,千元机魅蓝Note 2就是个渣渣:远离千元机,如果你玩VR的话。

    VR未来,或许能圆一个小小的遗憾:5年前曾多次出差哈尔滨,刚好有冰雪大世界,心里还是蛮想看的,但是因为畏惧寒冷(-35°的长时间户外活动),故未能出行。如果能通过VR远程看,则再好不过了,呵呵。

  • 相关阅读:
    bootstrap modal 移除数据
    bootstrap modal 点击头部移动
    js 四舍五入
    js 函数问题
    bootstrap 模态框事件
    Java自定义注解
    JAVA中的System.in
    java 流
    让Mustache支持简单的IF语句
    方法允许多个返回值(.Net Core最新特性,.Net Framework4.7.1版本也有)
  • 原文地址:https://www.cnblogs.com/czaoth/p/5364885.html
Copyright © 2011-2022 走看看