maya和Unity中的坐标系旋转
maya软件是用的右手坐标系,默认旋转顺序是ZYX,即先绕Z轴旋转,再绕Y轴旋转,最后绕X轴旋转。
比如在maya软件中,右侧的旋转顺序是可选的,默认的选择是“XYZ”,其实物体旋转顺序是倒着念,即上面所说的ZYX旋转顺序。
有兴趣的朋友可以进行验证。
Unity软件是用的左手坐标系,旋转顺序是YXZ(貌似不能更改),即先绕Y轴旋转,再绕X轴旋转,最后绕Z轴旋转。
在上面的两个图中,由MAYA的模型导出FBX格式,然后再导入到Unity中,选中的是同一个关节:Jamie_R_Thumb_1
其在MAYA中的旋转数据是:
关节方向:(55.921,-47.560,-62.725)
旋转:(0.000,22.600,17.700)
其在Unity中的旋转数据是:
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工具):
//以下MATLAB代码
//把maya中关节方向欧拉角数据转换成四元数
//这里旋转顺序是写成“ZYX”,而且需要把角度值转换成弧度值
>> q1 = angle2quat(-62.725*pi/,-47.560*pi/,55.921*pi/,'ZYX') q1 = 0.7886 0.1810 -0.5274 -0.2592 //把maya中旋转欧拉角数据转换成四元数
//这里旋转顺序是写成“ZYX”,而且需要把角度值转换成弧度值
>> q2 = angle2quat(17.700*pi/,22.600*pi/,0.000*pi/,'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] * /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
maya和Unity中的坐标系旋转的更多相关文章
- Unity 中的坐标系
说明: 注意几点: 0 行向量右乘矩阵与列向量左乘矩阵,两个矩阵互为逆矩阵 1 法线转换与mul,mul函数左乘矩阵当列矩阵计算,右乘当行矩阵计算 2 叉乘与左右手系,左手系用左手,右手系用右手,ax ...
- 【Unity编程】Unity中的欧拉旋转
欧拉角的定义 在写这篇博客之前,我搜索了网上很多关于欧拉角的定义,发现大部分引用自维基百科的定义,我这里也引述一下: 维基百科定义 莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向.对于任何参 ...
- 从Maya中导入LightMap到unity中
导入步骤 1.在Maya中为每一个模型烘焙好帖图(tif格式),会发现烘焙好的图和UV是一一对应的 2.把模型和烘焙帖图导入到Unity中 3.选中材质,修改Shader为 Legacy Shader ...
- 解读Unity中的CG编写Shader系列三
转自http://www.itnose.net/detail/6096068.html 在上一个例子中,我们得到了由mesh组件传递的信息经过数学转换至合适的颜色区间以颜色的形式着色到物体上.这篇文章 ...
- unity中的欧拉角
unity中欧拉角用的是heading - pitch -bank系统(zxy惯性空间旋转系统):当认为旋转顺序是zxy时,是相对于惯性坐标系旋转.当认为旋转顺序是yxz时,是相对于物体坐标系旋转. ...
- 骨骼动画的原理及在Unity中的使用
制作骨骼动画 我们看看这几步操作后,我们得到了那些数据: 1.每个皮肤顶点的初始世界坐标. 2.每个骨骼关节顶点的初始世界坐标. 3.每个顶点被骨骼顶点的影响信息. 4.骨骼如何移动. 骨骼动画原理 ...
- unity中camera摄像头控制详解
目录 1. 缘起 2. 开发 2.1. 建立项目 2.2. 旋转 2.2.1. 四元数 2.3. 移动 2.3.1. 向量操作 2.4. 镜头拉伸 2.5. 复位 2.6. 优化 1 缘起 我们的产品 ...
- unity还原three之旋转
http://www.360doc.com/content/16/0829/14/12282510_586760119.shtml unity使用左手坐标系,另外在做旋转的时候必须弄清楚旋转坐标轴和旋 ...
- 游戏的物理和数学:Unity中的弹道和移动目标提前量计算
下载地址:https://www.jianguoyun.com/p/DZPN6ocQ2siRBhihnx8 弹道计算是游戏里常见的问题,其中关于击中移动目标的自动计算提前量的话题,看似简单,其实还是挺 ...
随机推荐
- 在Eclipse中安装m2e插件遇到的问题
最近自己想使用maven来搭建自动化测试框架,当中遇到了很多问题,其中之一就是安装m2e(Maven Integration for Eclipse). 其实原来的eclipse中已经安装好了m2e, ...
- SharePoint2013 Powershell script to get site Title, Site Owner, Site user count and usage
Powershell script to get site Title, Site Owner, Site user count and usage Add-PSSnapin microsoft.sh ...
- Communication System
poj1018:http://poj.org/problem?id=1018 题意:某公司要建立一套通信系统,该通信系统需要n种设备,而每种设备分别可以有m1.m2.m3.....mn个厂家提供生产, ...
- JSP出现中文乱码问题
今天纠结了好半天,本地运行程序后没有中文乱码,唯独发到服务器后运行出现了乱码. 究其原因,皆因eclipse环境默认的JSP编码是Iso-8859-1,需要将其改为utf-8,与JSP文件中的编码声明 ...
- h.264语法结构分析
NAL Unit Stream Network Abstraction Layer,简称NAL. h.264把原始的yuv文件编码成码流文件,生成的码流文件就是NAL单元流(NAL unit Stre ...
- C语言中如何使用宏
C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念).下面对常遇到的宏的使用问题做了简单总结. 宏使用中的常见的基础问题 #符号和##符号的使用 ...符号的 ...
- Struts 2 标签
注:要使用Strust 2标签需<%@ taglib prefix="s" uri="/struts-tags" %> 表单标签: .form标签 ...
- 网络流(最大流) CQOI 2015 BZOJ 3931 网络吞吐量
3931: [CQOI2015]网络吞吐量 Description 路由是指通过计算机网络把信息从源地址传输到目的地址的活 动,也是计算机网络设计中的重点和难点.网络中实现路由转发的硬件设备称为路由器 ...
- 部署ASP.Net项目 遇到总是启用目录浏览或者报HTTP 错误 403.14 - Forbidden 的原因
部署Asp.Net 网站总是报下面的问题 原因: 没有为网站指定默认文档,增加默认文档 1.选中“默认文档” 2.点击右边“打开功能” 点击右边“添加”按钮,把你想作为的默认页面添加就可以了,重启服务 ...
- 【最短路】埃雷萨拉斯寻宝(eldrethalas) 解题报告
问题来源 BYVoid魔兽世界模拟赛 [问题描述] 一万两千年前,当精灵还是在艾萨拉女王的统治下的时候,辛德拉就是是女王手下一名很有地位的法师了.他受任建造了一座城市,来保存女王的法师们进行魔法研究的 ...