Unity Transform笔记

本文讨论了在场景中,物体坐标轴图标位置的选择(Pivot和Center),以及当物体具有子物体时其坐标轴位置的变化。同时,解释了旋转操作中的Y、Z、X轴对应的世界轴和自定义轴的区别,以及如何避免万向节死锁问题。
摘要由CSDN通过智能技术生成

场景里坐标轴图标的位置: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是物体的局部坐标,官方文档里没说清楚。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值