maya和Unity中的坐标系旋转
来源:互联网 发布:淘宝设计师助手官网 编辑:程序博客网 时间:2024/05/16 15:26
maya软件是用的右手坐标系,默认旋转顺序是ZYX,即先绕Z轴旋转,再绕Y轴旋转,最后绕X轴旋转。
比如在maya软件中,右侧的旋转顺序是可选的,默认的选择是“XYZ”,其实物体旋转顺序是倒着念,即上面所说的ZYX旋转顺序。
有兴趣的朋友可以进行验证。
Unity软件是用的左手坐标系,旋转顺序是YXZ(貌似不能更改),即先绕Y轴旋转,再绕X轴旋转,最后绕Z轴旋转。
在上面的两个图中,由MAYA的模型导出FBX格式,然后再导入到Unity中,选中的是同一个关节:Jamie_R_Thumb_1
其在MAYA中的旋转数据是:
1
2
关节方向:(55.921,-47.560,-62.725)
旋转:(0.000,22.600,17.700)
其在Unity中的旋转数据是:
1
2
3
4
Rotation:(7.885523,46.28201,17.52884)
Quaternion:(x,y,z,w) = (0.122229,0.377853,0.113074,0.9107697)
// 查看对象的四元数属性,可以在Inspector上单击右键,选择Debug模式即可
// 这里的Rotation和Quaternion值相当于脚本中对象的transform.localRotation和transform.localEulerAngles的属性值
下面进行分析验证,并说明为什么在两个软件中同样的关节状态出现的属性数值会不同(用到MATLAB工具):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//以下MATLAB代码
//把maya中关节方向欧拉角数据转换成四元数
//这里旋转顺序是写成“ZYX”,而且需要把角度值转换成弧度值
>> q1 = angle2quat(-62.725*pi/180,-47.560*pi/180,55.921*pi/180,
'ZYX'
)
q1 =
0.7886 0.1810 -0.5274 -0.2592
//把maya中旋转欧拉角数据转换成四元数
//这里旋转顺序是写成“ZYX”,而且需要把角度值转换成弧度值
>> q2 = angle2quat(17.700*pi/180,22.600*pi/180,0.000*pi/180,
'ZYX'
)
q2 =
0.9689 -0.0301 0.1936 0.1509
//两个四元数进行乘法运算,在Unity的脚本中的*运算符也表示这个意思,
//这表示物体先做q1旋转运动,再做q2的旋转运动,得出两次运动后的四元数状态
//这里已经可以把q3和Unity中此关节的四元数数值进行比较,看有什么不同
>> q3 = quatmultiply(q1,q2)
q3 =
0.9108 0.1222 -0.3779 -0.1131
//继续把得到的q3值转换成欧拉角
//但这里的旋转顺序已经是Unity中的“YXZ”了
>> [pitch,roll,yaw] = quat2angle(q3,
'YXZ'
)
pitch =
-0.8078
roll =
0.1376
yaw =
-0.3059
//弧度值转换成角度值,并且把角的顺序调整过来
>> a = [roll,pitch,yaw] * 180/pi
a =
7.8860 -46.2822 -17.5285
最后得出的欧拉角度是:(7.8860 -46.2822 -17.5285)
而Unity中的Rotation数据是:(7.885523,46.28201,17.52884)
至于绕Y轴旋转和绕Z轴旋转的数值正负号的区别,是因为在MAYA和Unity中所采用的左右手坐标系的不同所造成的,可以参考:
http://answers.unity3d.com/questions/355897/orienting-an-object-the-same-in-maya-and-unity.html
1 0
- maya和Unity中的坐标系旋转
- Unity中的旋转和缩放
- Unity 中的坐标系
- Unity 中的坐标系
- Unity中的坐标系转化
- unity中的四种坐标系
- Unity Shader中的坐标系转换
- 8.7.1 旋转和坐标系
- Unity 中的旋转
- Unity 中的旋转
- Unity 中的旋转
- Unity中的复合旋转
- unity中的旋转
- 如何让Maya中的相机和Unity相机的FOV(Angle of View)对上
- 如何让Maya中的相机和Unity相机的FOV(Angle of View)对上
- Unity _坐标系_与旋转的关系
- Unity 中的容易搞混的坐标系
- Unity中的各种坐标系深入剖析
- Linux获取外网IP
- 浅谈算法和数据结构(10):平衡查找树之B树
- View事件的传递之一_单独看Button的传递
- linux命令详解之useradd命令使用方法
- 浅谈算法和数据结构(11):哈希表
- maya和Unity中的坐标系旋转
- java 实现中文转化为拼音代码 汉字转化为拼音源码分享
- IOS横竖屏切换
- Combination Sum II
- 利用反射机制实现servlet的分派功能
- 公司自动打卡与考勤作弊
- hdu1237简单计算器
- 在xcode上把你的app多语言国际化(NSLocalizedString)
- gerrit reindex错误