zoukankan      html  css  js  c++  java
  • unreal3的坐标系统和vector/rotator

    unreal3的坐标系有点奇葩,属于【z轴向上的左手坐标系】:

    1、左手食指指前方,x正向

    2、大拇指指上方,z正向

    3、中指指右方,y正向

    若以我们人头摆正时来参考:

    1、目视的是前方,x正向

    2、头顶的是上方,z正向

    3、右边是右方,y正向

    特殊的地方在于:

    通常在d3d这样的系统里,地平面上是x、z两个轴,且“向着屏幕里面”的那个轴是z轴正向,而在unreal3里地平面上是x,y轴,且y轴负向指向屏幕。

    关于Vector:

    1、这是3维向量,另外还有Vector2D和Vector4

    2、dot、cross、*(星号)都是是操作符,分别表示点乘、叉乘、各分量乘

    3、常用函数:Sqrt,VSize,VSizeSq,VSize2D,Normal,IsZero,ClampLength,VRand,MirrorVectorByNormal,ProjectOnTo

    4、坐标系变换:CamRot是一个Rotator,表示一次空间变换,则 V>>CamRot,从局部空间转到全局空间; V<<CamRot,从全局空间转到局部空间

    关于Rotator:

    struct Rotator
     {
        var() config int Pitch, Yaw, Roll;
     };

    1、3个分量的应用顺序其实是:Yaw,Pitch,Roll,并且Roll是相对于自身的,对一纯vector而言,roll并没有意义

    2、因为类型为int(而非传统的float),所以范围和精度有限制,用65536来表示2pi,其它常用值参考:

    /********************
    *****Reference*******
    *********************
    * 65536 = 360 degrees
    * 32768 = 180 degrees
    * 16384 = 90 degrees
    * 8192 = 45 degrees
    * 182 = 1 degree
    *********************/

    3、可以和Vector互相转换,但从Vector转回来的Rotator,roll分量为0

    local rotator myRot;
    local vector myVec;
    ...
    myVec = vector(myRot);
    ...
    ...
    myRot = rotator(myVec);
    ...

    最后,在代码里定义一个Vector或Rotator时可以写成:

    myVec=vect(0,0,0)

    myRot=rot(0,100,100)

    这是因为vect和rot是unrealscript特别定义的“literals”,就像true和false一样

    
    
    
  • 相关阅读:
    Linux useradd 命令介绍
    lsscsi
    安装MegaCli,查看linux服务器raid信息
    ipmitool命令详解
    python 收发邮件
    angularjs 高级玩法 创建递归的模板
    我的Android进阶之旅------&gt;Android Activity的singleTask载入模式和onActivityResult方法之间的冲突
    Git实战(三)环境搭建
    使用Samba实现Linux与Windows文件共享实践
    设计模式个人备忘(享元模式,strategy, templete strategy)
  • 原文地址:https://www.cnblogs.com/wellbye/p/5344117.html
Copyright © 2011-2022 走看看