场景里坐标轴图标的位置:Tool Handle Position
Tool Handle Position选Pivot时,一个物体坐标轴在它的中心。
Tool Handle Position选Center时:一个物体有子物体时,该物体的坐标轴图标不是在它的位置,而是根据它和它的子物体做某种加权平均算出来的位置。如果一个物体是空物体,它在它的坐标轴图标位置的加权平均中没有权重,坐标轴显示的位置是由它的子物体共同决定的。如果它只有一个子物体,则它的坐标轴图标在它的子物体处。
关于Rotation和欧拉角
实验发现,在任一旋转状态下,改变Y,是绕世界的Y轴旋转;改变Z,是绕此物体的Z轴旋转;改变X,是绕不明轴(可能是世界Y轴和自己Z轴组成的平面的法向)旋转。
查资料知道,欧拉角需要指定旋转的轴的父子关系,父级轴旋转会改变子级轴的方向。这里不管怎么旋转,改变Y都是绕世界Y轴,说明Y在下图的最外层,不管怎么旋转改变Z都是绕自身的Z轴,说明Z在下图的最内层,X就是中间层。就是说Unity旋转轴的父子是Y-X-Z。
解决方法:使用Rotate Tool,就是沿圆弧的方向旋转了。
关于四元数Quaternion
从别处抄来的基础
四元数是由3个不同虚数i、j、k和1个实数组成的复数。分量(x,y,z,w)其中w是实数。四元数相乘是像多项式相乘那样,二者的分量两两相乘,根据ij=k,jk=i,ki=j,ii=-1,jj=-1,kk=-1计算新的分量,再合并同类项。
个人理解
(0,0,0,1)代表零旋转,就是三个轴和父级的三个轴重合。给一个旋转状态做一个旋转变化是把四元数相乘。一个四元数既可以表示一个从(0,0,0,1)开始的旋转状态,也可以表示一个旋转变化。
四元数底层原理:任何旋转状态可以由零旋转绕某个向量(x1,y1,z1)旋转某个角度θ得到。w就是这个旋转角度θ的cos(θ/2),x、y、z是(x1,y1,z1)*sin(θ/2)。这就是为什么绕y轴(0,1,0)旋转90度是(0,√2/2,0,√2/2),绕y轴(0,1,0)旋转60度是(0,1/2,0,√3/2).因此调整四元数的时候改变一个分量,其他分量也会变,因为必须保证四个分量平方和为1.
Quaternion脚本API笔记
Quaternion.AngleAxis(float angle, Vector3 axis)
这里是axis是物体的局部坐标,官方文档里没说清楚。