unity还原three之旋转
http://www.360doc.com/content/16/0829/14/12282510_586760119.shtml
unity使用左手坐标系,另外在做旋转的时候必须弄清楚旋转坐标轴和旋转顺序。
一:edit中Transform组件
脚本重置:
transform.localEulerAngles = new Vector3(60,60,60);
绕父节点坐标轴旋转,旋转顺序z-x-y;
二:在脚本中使用Rotate()函数,参数为Space.Self
transform.Rotate(new Vector3(45,45,45),Space.Self);
绕本地坐标系坐标轴旋转,旋转顺序z-x-y;
注:每次使用Space.self进行rotate时,都是绕着调用时刻的坐标轴进行旋转的
三:在脚本中使用Rotate()函数,参数为Space.World
transform.Rotate(new Vector3(45,45,45),Space.World);
绕世界坐标系坐标轴旋转,旋转顺序z-x-y;
四:关于静态欧拉角和动态欧拉角
静态欧拉角,就是其旋转轴使用的是静止不动的参考系。
动态欧拉角,使用的是模型本身作为参考系,因而会随着模型的旋转而旋转。
因此,再看看前面的三种情况,使用Space.World旋转,以及 Editor 中的旋转,是静态欧拉角;使用Space.self,是动态欧拉角。
五:还原three的旋转
three使用右手坐标系,edit中,根对象绕本地坐标系坐标轴旋转,旋转顺序x-y-z;
子对象绕父对象的坐标轴旋转,旋转顺序x-y-z;(即除根对象外,其他全部绕父对象的坐标轴旋转)
(此处是个坑,当初真是too young too simple,最开始以为旋转坐标轴都是本地坐标轴。。。)
旋转在unity中的还原最直观方法(只适用于root):
gameObject.transform.Rotate(new Vector3(matrixParse.GetAngles.x,0,0),Space.Self);
gameObject.transform.Rotate(new Vector3(0,matrixParse.GetAngles.y,0),Space.Self);
gameObject.transform.Rotate(new Vector3(0,0,matrixParse.GetAngles.z),Space.Self);
非root:
transform.localEulerAngles = matrixParse.GetAngles;//这样写讲道理是有问题的,没考虑旋转顺序.
找到解决办法:
Vector3 ang = matrixParse.GetAngles;
gameObject.transform.localRotation = Quaternion.AngleAxis(ang.x, Vector3.right)
* Quaternion.AngleAxis(ang.y, Vector3.up)
* Quaternion.AngleAxis(ang.z, Vector3.forward);
始终遵循的原则:旋转顺序和旋转方式与three统一。
特殊化,平面和摄像机初始时与three存在差异,采用进一步旋转进行补偿:
transform.Rotate(new Vector3(90,0,0),Space.Self);//平面
transform.Rotate(0,180,0),Space.Self);//摄像机
六:左右反转
由于左右手坐标系的差异,导致unity中看到的场景与three相比左右颠倒。
解决办法:
1.缩放无效的模型,例如摄像机
//反转
Vector3 pos = transform.position;
transform.position = new Vector3(-pos.x,pos.y,pos.z);
Vector3 angs = transform.eulerAngles;
gameObject.transform.Rotate(new Vector3(0,-2 * angs.y,0),Space.World);
2.可以调整缩放的模型
//反转
Vector3 pos = transform.position;
transform.position = new Vector3(-pos.x,pos.y,pos.z);
Vector3 scale = transform.localScale;
transform.localScale = new Vector3(-scale.x,-scale.y,-scale.z);
transform.Rotate(new Vector3(180,0,0),Space.World);
其中缩放可根据显示需要调整正负。
unity还原three之旋转的更多相关文章
- unity还原three导出的json——基本模型,位移,旋转,缩放
GameObject.CreatePrimitive(PrimitiveType.Cube); GameObject.CreatePrimitive(PrimitiveType.Plane); Gam ...
- maya和Unity中的坐标系旋转
maya软件是用的右手坐标系,默认旋转顺序是ZYX,即先绕Z轴旋转,再绕Y轴旋转,最后绕X轴旋转. 比如在maya软件中,右侧的旋转顺序是可选的,默认的选择是“XYZ”,其实物体旋转顺序是倒着念,即上 ...
- Unity摄像机围绕物体旋转两种实现方式
第一种,使用Transform 函数 RotateAround. 代码如下: public Transform target;//获取旋转目标 private void camerarotate() ...
- unity鼠标拖动物体旋转
using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> / ...
- unity还原three——顶点,三角面,uv
public class Geometry { public Geometry(string name, Data data, Hashtable hash) { Debug.Log("解析 ...
- Unity 相机平移、旋转、缩放
内容不多,一个脚本,直接上代码 using System.Collections; using System.Collections.Generic; using UnityEngine; publi ...
- unity之让obj旋转自转等操作
1.让cube沿着矩形四个点运动 using System.Collections; using System.Collections.Generic; using UnityEngine; publ ...
- 实现Unity编辑器模式下的旋转
最近在做一个模型展示的项目,我的想法是根据滑动屏幕的x方向差值和Y方向的差值,来根据世界坐标下的X轴和Y轴进行旋转,但是实习时候总是有一些卡顿.在观察unity编辑器下的旋转之后,发现编辑器下的旋转非 ...
- 【Unity技巧】四元数(Quaternion)和旋转
四元数介绍 旋转,应该是三种坐标变换--缩放.旋转和平移,中最复杂的一种了.大家应该都听过,有一种旋转的表示方法叫四元数.按照我们的习惯,我们更加熟悉的是另外两种旋转的表示方法--矩阵旋转和欧拉旋转. ...
随机推荐
- 11.15 Daily Scrum
今天是假期回来的第一个周末,也是我们团队的又一次进度汇总总结和调试工作开展,鉴于一周以来大家的工作有了很大的成果,所以,本次召开的会议主旨在于解决一些开发方面的细节问题,达成共识,为日后进一步的功能方 ...
- 20162314 Experiment 2 - Tree
Experiment report of Besti course:<Program Design & Data Structures> Class: 1623 Student N ...
- 团队作业8——测试与发布(Beta阶段)之展示博客
展示博客 1. 团队成员的简介和个人博客地址,团队的源码仓库地址. a.陈福鹏 擅长技术:java.web等网站方面技术: 博客:http://www.cnblogs.com/royalchen/b. ...
- 信安实践——自建CA证书搭建https服务器
1.理论知识 https简介 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HT ...
- 关于Keil C51中“ERROR L107: ADDRESS SPACE OVERFLOW ”的总
最近写一个关于单片机播放音乐的程序,出现如下错误: *** ERROR L107: ADDRESS SPACE OVERFLOW ... ... Program Size: data=167.6 xd ...
- 微信小程序组件 自定义弹出框
<!-- 点击立即抢拼弹出框 --> <view class='add-rob' bindtap="setModalStatus" data-status=&qu ...
- 使用Fiddler后谷歌浏览器访问https不安全
今天初次接触java爬虫,师兄给了一个软件加一个demo,软件是Fiddler,在网上找资料稍微学习了一下,自己一顿乱配...然后gg,谷歌浏览器访问https协议时都提示不安全,“您的链接不是一个私 ...
- typescript 不用import?
如果你想用ts文件,而又不想import,export,怎么办呢? 感谢开发者提供的工具. https://github.com/domchen/typescript-plus. 感想: 仅 ...
- wai
外键的过滤是怎么做的, 一个class有两个外键A和B,其中A又是B的外键,在这种情况下,比如A选择了学校之后,可否在B中过滤出A学校的所有的专业?也就是说在选择的时候能不能按照已经填好的一个选项来选 ...
- iPhoneX设计尺寸和适配
被iPhone X刷了一天屏,到下午实在受不了各种假帖.标题写着“iPhone X 适配.指南.设计稿” 内容却是发布会回顾和手机介绍.索性自己去官网找素材写一篇只针对iPhone X适配的贴子,与设 ...