Unity _坐标系_与旋转的关系

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39710961/article/details/78171448

了解坐标系的特点是我们首要任务:
笛卡尔坐标系(Cartesian coordinates)(法语:les coordonnées cartésiennes)就是直角坐标系和斜坐标系的统称(特点是不同的坐标系经过一系列旋转我们都能重合)。
相交于原点的两条数轴,构成了平面放射坐标系。如两条数轴上的度量单位相等,则称此放射坐标系为笛卡尔坐标系。两条数轴互相垂直的笛卡尔坐标系,称为笛卡尔直角坐标系,否则称为笛卡尔斜角坐标系。

然而在游戏中我们你一般用的是三维坐标系(特点是不同的坐标系无论怎样旋转都不能完全重合):
这里写图片描述
这里写图片描述
左手定则(游戏世界坐标系)(决定旋向性(从Y轴转向X轴))(区别于二维坐标,三维坐标系分为左手和右手坐标(用手指模仿坐标轴即什么手))

在Unity中外部模型(FBX)在成像需要以下五个步骤:
工具(3dMax(右手定则)、Maya,)——资产调节(右手转左手(某轴负值化)(相对坐标))——应用程度(子物体会与父物体进行坐标减法最终再得到世界坐标(左手坐标))——几何(PU-GPU(视锥体剪裁(Camera右手法则(决定是什么现实在屏幕上(屏幕以左下为原点)(NGUI以左上为原点))(显卡驱动OpenGl(左下)、Dirext(右上)))))——光栅化()

以上的讲述就是为了便于理解物体旋转的因果,
这些映射到程序中是这样的,

    //正向旋转90度变为(1,0,0)
    Vector3 v = new Vector3(0, 0, 1);
    Quaternion q = Quaternion.identity;
    q.eulerAngles = new Vector3(0,90,0);
    //必须是q * v因为不支持v * q
    Vector3 result = q * v;

    Quaternion q = Quaternion.identity;
    q.eulerAngles = new Vector3(0,90,0);
    this.transform.rotation =q*this.transform.rotation ;
展开阅读全文

没有更多推荐了,返回首页