位置: 编程技术 - 正文

Unity3d-旋转Quaternion、Matrix4x4、 Euler(unity3d物体旋转)

编辑:rootadmin

推荐整理分享Unity3d-旋转Quaternion、Matrix4x4、 Euler(unity3d物体旋转),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity旋转物体的方法,unity ui旋转,unity3d 旋转,unity3d 旋转,unity ui旋转,unity ui旋转,unity ui旋转,unity3d 旋转,内容如对您有帮助,希望把文章链接给更多的朋友!

矩阵:Matrix4x4

变换后点的(X’,Y’,Z’)= (x,y,z) * ( 4*4矩阵)

‍scale:模型的大小变化,在透视投影中用来产生场景深度效果

translate:物体沿着三个坐标轴的任意一个到另一个位置的移动

rotate:顶点的每个坐标&#;乘上θ角(物体旋转的角度)的sin或cos&#;就得到了旋转后的坐标

当点P(x,y,z)绕X轴旋转α度时,点P的x坐标&#;不变,其旋转前后的坐标关系为:

当点P(x,y,z)绕Y轴旋转β度时,点P的y坐标&#;不变,其旋转前后的坐标关系为:

当点P(x,y,z)绕Z轴旋转γ度时,点P的z坐标&#;不变,其旋转前后的坐标关系为:

得出的变换矩阵如下

四元数:Quaternion = (xi &#; yj &#; zk &#; w ) = (x,y,z,w).

四元数是最简单的超复数。 复数是由实数加上元素 i 组成,其中i^2 = -1。 相&#;地,四元数都是由实数加上三个元素 i、j、k 组成,而且它们有如下的关系: i^2 = j^2 = k^2 = -1 , 每个四元数都是 1、i、j 和 k 的线性组合,即是四元数一般可表示为w &#; xi &#; yj &#; zk,其中x、y、z 、w是实数

四元数中的方向由三个旋转轴(x、y、z)和一个旋转角 (w) 确定q = cos(A/2)&#;sin(A/2)*(x*i&#;y*j&#;z*k)

Q.w = cos (angle / 2)

Q.x = axis.x * sin (angle / 2)

Q.y = axis.y * sin (angle / 2)

Q.z = axis.z * sin (angle / 2)四元数可提供平滑差&#;,没有Euler旋转的万向锁。

Unity3d-旋转Quaternion、Matrix4x4、 Euler(unity3d物体旋转)

四元数到矩阵

public void SetTRS(Vector3 pos, Quaternion q, Vector3 s)

矩阵到四元数

public void SetLookRotation(Vector3 view, [DefaultValue("Vector3.up")] Vector3 up)

这个函数建立一个旋转使z轴朝向view y轴朝向up

然后大家拖动obj1和obj2就可以看到物体永远保持z轴朝向obj1, 并且以obj2的位置来保持y轴的倾斜度。

欧拉角:Euler

欧拉旋转,我们最常用的旋转方法应该是使用yaw, roll和pitch。

yaw是在XZ轴平面上围绕Y轴左右旋转,当开车时使用的是yaw。

pitch在YZ轴平面上围绕X轴上下旋转,喷气机飞行或爬坡时用pitch向上或向下。

roll是在XY轴平面上绕Z轴倾斜旋转,

从字面意思上说,当你驾驶汽车高速急转弯时,你的汽车会出现roll运动,表现一个方向就可以通过三个欧拉角 (α,β,γ) 来定义。

游戏物体的属性视图中调整的角度就是欧拉角

上面的代码可以得到q3和qxyz3&#;一样。从这里可以看出unity中旋转顺序也是按先绕x轴旋转,然后y,最后z。unity中对向量应用旋转量使用的是向量右乘,即如下:

Vector3 newV = qxyz3*v=qz3*qy3*qx3*v;

欧拉角eulerAngles在Unity3D是一个Vector3类的变量,官方约定俗成的层级关系是ZXY,即最里层是Z轴先旋转,中间层是X轴,最外层是Y轴。unity中的欧拉角有两种方式可以解释:1,当认为顺序是yxz时(其实就是heading - pitch - bank),是传统的欧拉角变换,也就是以物体自己的坐标系为轴的。2,当认为顺序是zxy时(roll - pitch - yaw),也是官方文档的顺序时,是以惯性坐标系为轴的。后者比较直观一些,但其实两者的实际效果是一样的,只是理解不一样。

无论以何种方式旋转三个轴,都会有出现万向锁的情况,万向锁主要在动画里面旋转时出现我们不希望见到的旋转路径,所以官方以ZXY顺序来旋转的时候可以最大程度上避免普通情况下会出现的万向锁。

对比:

各方法比较Matrix4x4EulerQuaternion 在坐标系间(物体和惯性)旋转点能不能(必须转换到 矩阵) 不能(必须转换到矩阵) 连接或增量旋转能能,但经常比四元数慢,小心矩阵蠕变的情况不能能,比矩阵快插&#;基本上不能 能,但可能遭遇万 向锁或其他问题 Slerp提供了平滑插&#;易用程度难易难在内存或文件中存储9个数3个数4个数 对给定方位的表达方式是否唯一是不是,对同一方位 有无数多种方法不是,有两种方法可能导致非法矩阵蠕变任意三个数都能构成合法的欧拉角可能会出现误差积累,从而产生非法的四元数

&#;&#;

&#;&#;&#;&#;&#;&#;&#;&#;&#;&#;&#;&#;

UGUI 设置Text控件文本颜色 在UGUI的text组件中,没有直接设置颜色的接口,我们可以通过直接在Text内容中指定Color项来设置颜色。例如我们添加一个Button到游戏中,然后选择Text,

Unity3D修改模型的网格数据 【狗刨学习网】模型导入unity后,可以使用unity的Inspector面板对模型在某个坐标轴上进行平移、旋转和缩放操作(如图1)。图1Inspector面板提供功能是所

Unity3d中BlinnPhong光照模型注解 【狗刨学习网】/**版本:0.1最后修改:--撰写:李现民Unity3D中主要用到的shader(着色器)有三种,除了常规的vertexshader与fragmentshader外,还有一类称

标签: unity3d物体旋转

本文链接地址:https://www.jiuchutong.com/biancheng/380226.html 转载请保留说明!

上一篇:Unity通过鼠标或者手势实现拉进拉远,旋转等操作的常用方法(unity获取鼠标)

下一篇:UGUI 设置Text控件文本颜色(ugui scrollview)

  • 房地产开发企业资质等级有几个
  • 增值税普通发票和电子普通发票的区别
  • 2021年9月个税申报截止时间
  • 社保基数在哪里调整
  • 农业机耕开发票税收分类编码是什么
  • 税率降低怎么算降税额
  • 运输公司租赁车辆开几个点的发票
  • 资产负债表上的资产是原值还是净值
  • 汇算清缴中研发费用中其他费用可抵扣的比例是多少
  • 出现销项负数
  • 月末哪些科目需要手动结转为成本
  • 挂靠管理费有收税前还是收税后?
  • 增值税发票是需要先对公转账吗
  • 房地产营改增后开票
  • 基本户发工资要交社保吗
  • 餐饮定额发票可以用吗现在
  • 未办预售证,企业取得这笔收入要缴增值税吗?
  • 缴纳滞纳金计入什么科目
  • 公司解散实收资本会计怎么处理
  • 外币应收账款汇兑损失计入
  • 简易计税开票开成了一般计税的税率会比对不通过吗
  • 交强险保单被保险人写谁都行?
  • 内部员工购买公司产品
  • 一寸照片尺寸是几乘几
  • xbox无法连接无线网络
  • windows缺失
  • an exit
  • vue打包vendor文件过大
  • php如何实现登录和注册
  • 事业单位成本核算制度
  • php取二维数组的一组内容
  • 电子发票记账清单入账
  • 数据库设计框架
  • 申请高新技术企业收入要多少
  • 创建javascript函数
  • php headers
  • hashmap 面试
  • 什么情况下要开外经证
  • 英文描述什么是利润表
  • 单位社保年底清算
  • 买一赠一的销售方式
  • 在php中声明变量时,变量名称以什么符号开头
  • 医疗报销发票是什么样的
  • 在什么情况下要切除子宫
  • 织梦相关文章调用
  • 长期股权投资初始投资成本的确定
  • 公司购进设备会计分录
  • 增值是指哪几点
  • 个体工商户税收起征点是多少?
  • 固定资产以什么资金形态存在
  • 企业跨区变更地址迁入地核验码怎么查询
  • 可供出售金融资产属于什么科目
  • 车间装修预算表
  • 对外担保产生诉讼费用吗
  • 基层工会经费收入来源包括
  • 股东以固定资产投资要交增值税?
  • 其他债权投资的特征有哪些
  • 新建厂房费用可以直接计入管理费用么
  • 生产出口退税企业有哪些
  • 企业财务费用属于
  • 发票遗失证明怎么写范文
  • 私车公用涉及的税种有哪些
  • 其他应付款的核算项目是什么
  • 公司向个人借款利息可以税前扣除吗
  • 在建工程账务处理问题有哪些
  • 管理费用属于什么成本
  • 7.0 Release i386 DVD iso 下载
  • win7 64位旗舰版系统运行游戏提示计算机丢失mxvcp120.dll的解决方法
  • win10自定义壁纸在哪个文件夹里
  • win7如何删除网络上的其它计算机
  • Win10 Mobile 10586无法更新应用怎么办 一招教你解决
  • android导入别人的程序报错
  • ubuntu搭建ftp服务器的步骤
  • python中yield用法
  • JavaScript中Number.MAX_VALUE属性的使用方法
  • jquery类型转换
  • python装饰器与递归算法详解
  • 环保税征收标准可以改吗
  • 河南电子税务局官网app
  • 黑龙江工商局网站官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设