Unity3D中四元数
2015-10-23 15:51
405 查看
我觉得要真正地理解四元数是把Unity3D里四元数函数都上手测试一下其功能。
四元数在Unity3D中的作用就是拿来表示旋转。
AngleAxis
创建一个旋转,绕着某个轴旋转,返回结果是一个四元数。
跟ToAngleAxis实现的是相反的功能。
Angle
返回两个旋转值(四元数)之间的角度,返回值是float类型的角度值。
(不知道这个值算出来后有什么用)
Dot
点乘,我也不太理解其意义。
参见
eulerAngles
返回表示旋转的欧拉角度(Vector3 即3个值)
(如果调用的是某个物体,则表示该物体当前位置是从原始位置怎么旋转过来的,
其实就是Inspector里的Rotation的3个值)
Euler
感觉跟eulerAngles是相反的操作(经测试,确实是)
输入的是欧拉角的3个值,返回的是一个旋转(四元数)
FromToRotation
参数是两个Direction(Vector3),返回一个Quaternion
我觉得主要是用在要把A物体的朝向转成跟B物体的朝向一样时所需要的旋转值(Quaternion)
然后再调用Transform.Rotate就可以把A旋转成跟B一样了。
identity
可以理解为单位四元数
Inverse
就是一个旋转的反旋转,其实就是把刚才的那个旋转转回去。
Lerp
插值,可以理解为可以把一个物体的朝向转向跟另一个物体一样,跟时间配合可以慢慢地旋转。
LookRotation
可以让A物体一直朝向B物体。
参照下面这篇文章的做法,导入ThirdPersonController
http://blog.csdn.net/lijing_hi/article/details/7272089
Quaternion
构造函数,参数是4个float值
RotateTowards
跟Slerp类似
SetFromToRotation
跟FromToRotation功能一样,只是调用方式不一样。
SetLookRotation
跟LookRotation功能一样,只是调用方式不一样。
Slerp
旋转一个角度从from到to。
this[int index]
像数组那样调用x, y, z, w,感觉还不如直接用.x来调用。
可能是为了循环方便。
ToAngleAxis
把一个rotation 转成 angle-axis 形式。跟AngleAxis实现的是相反的功能。
用引用的方式传入 angle和 axis 。
这跟transform.localEulerAngles很类似。
输入:transform.localEulerAngles=(0,0,0);
输出:angle=0, axis=(1,0,0);
输入:transform.localEulerAngles=(0,90,0);
输出:angle=90,axis=(0,1,0);
输入:transform.localEulerAngles=(270,0,0);
输出:angle=90,axis=(-1,0,0)
ToString
格式化成一个字符串
参考:http://blog.csdn.net/yustarg/article/details/8623687
四元数在Unity3D中的作用就是拿来表示旋转。
AngleAxis
创建一个旋转,绕着某个轴旋转,返回结果是一个四元数。
跟ToAngleAxis实现的是相反的功能。
Angle
返回两个旋转值(四元数)之间的角度,返回值是float类型的角度值。
(不知道这个值算出来后有什么用)
Dot
点乘,我也不太理解其意义。
参见
eulerAngles
返回表示旋转的欧拉角度(Vector3 即3个值)
(如果调用的是某个物体,则表示该物体当前位置是从原始位置怎么旋转过来的,
其实就是Inspector里的Rotation的3个值)
Euler
感觉跟eulerAngles是相反的操作(经测试,确实是)
输入的是欧拉角的3个值,返回的是一个旋转(四元数)
FromToRotation
参数是两个Direction(Vector3),返回一个Quaternion
我觉得主要是用在要把A物体的朝向转成跟B物体的朝向一样时所需要的旋转值(Quaternion)
然后再调用Transform.Rotate就可以把A旋转成跟B一样了。
identity
可以理解为单位四元数
Inverse
就是一个旋转的反旋转,其实就是把刚才的那个旋转转回去。
Lerp
插值,可以理解为可以把一个物体的朝向转向跟另一个物体一样,跟时间配合可以慢慢地旋转。
LookRotation
可以让A物体一直朝向B物体。
参照下面这篇文章的做法,导入ThirdPersonController
http://blog.csdn.net/lijing_hi/article/details/7272089
Quaternion
构造函数,参数是4个float值
RotateTowards
跟Slerp类似
SetFromToRotation
跟FromToRotation功能一样,只是调用方式不一样。
SetLookRotation
跟LookRotation功能一样,只是调用方式不一样。
Slerp
旋转一个角度从from到to。
this[int index]
像数组那样调用x, y, z, w,感觉还不如直接用.x来调用。
可能是为了循环方便。
ToAngleAxis
把一个rotation 转成 angle-axis 形式。跟AngleAxis实现的是相反的功能。
用引用的方式传入 angle和 axis 。
这跟transform.localEulerAngles很类似。
输入:transform.localEulerAngles=(0,0,0);
输出:angle=0, axis=(1,0,0);
输入:transform.localEulerAngles=(0,90,0);
输出:angle=90,axis=(0,1,0);
输入:transform.localEulerAngles=(270,0,0);
输出:angle=90,axis=(-1,0,0)
ToString
格式化成一个字符串
参考:http://blog.csdn.net/yustarg/article/details/8623687
相关文章推荐
- Unity Alpha融合参数(便查)
- Unity Animator动画
- Unity 坐标系笔记
- unity3d抛物线的脚本
- 【Unity3D游戏开发学习笔记】(五)灵魂降临—Unity脚本的简单运用
- Unity - 优化(二)
- 游戏开发设计模式之状态模式 & 有限状态机 & c#委托事件(unity3d 示例实现)
- 游戏开发设计模式之状态模式 & 有限状态机 & c#委托事件(unity3d 示例实现)
- 整合Unity游戏引擎和 Visual Studio Code 代码编辑器 第二弹
- UNITY 5.2.2 发行说明 中文版
- UNITY 5.2.1 发行说明 中文版
- UNITY 5.1.4 发行说明 中文版
- UNITY 4.6.9 发行说明 中文版
- List 移除时要注意的问题
- Unity3D中的系统调用方法
- Unity人工智能学习—高级随机运动
- Unity之线性渲染器
- 【NGUI】Unity中ScrollView3D滚动效果
- [原]unity5 AssetBundle打包
- Unity插件BehaviorDesigner学习资料