Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by doomprodigy · May 06, 2016 at 01:04 AM · rotationiosgyroscopequaternionstilting

Gyroscope Tilting Rotation. Quaternions T_T Help.

Hi there, I'm using the gyroscope to get rotation data so I can find out when my mobile is being tilted up/down & left/right. This works well. But as soon as you lets say rotate to the left in your chair. Up and Down Become the Left and Right tilt and Left and Right tilt become the up and down. If you did a 180 in your chair everthing becomes inverted. Up becomes down. vice versa.

I need Up and Down to always be up and down, and left and right to always be left and right tilt.

My current code:

 private Gyroscope gyro;
     public Quaternion rotation = Quaternion.identity;
     private Quaternion initialGyroRotation;
     private Quaternion initialRotation;
     private Quaternion baseRotation;
 
     void Start ()
     {
         gyro = Input.gyro;
         gyro.enabled = true;
         initialRotation = transform.rotation;
         baseRotation = transform.rotation;
         initialGyroRotation = Quaternion.identity;
         transform.rotation = gyro.attitude;
         Screen.orientation = ScreenOrientation.Portrait;
     }
 
     void Update ()
     {
         #if UNITY_IOS
         Quaternion attitudeFix = new Quaternion (gyro.attitude.x, gyro.attitude.y, gyro.attitude.z, gyro.attitude.w);
         #endif
         #if UNITY_ANDROID
         Quaternion attitudeFix = new Quaternion (gyro.attitude.x, gyro.attitude.y, -gyro.attitude.z, -gyro.attitude.w);
         #endif
         Quaternion offsetRotation = Quaternion.Inverse (initialGyroRotation) * attitudeFix;
         rotation = initialRotation * offsetRotation;
         transform.rotation = rotation;
 }
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by raynertanxw · May 06, 2016 at 01:48 AM

I think you need an additional quaternion rotated 90˚ in the x - axis.

 rotation = initialRotation * Quaternion.Euler(90.0f, 0.0f, 0.0f) * offsetRotation;
 transform.rotation = rotation;

Try that, it should solve that issue where the axis screws up when you turn left or right.

Comment
Add comment · Show 4 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image doomprodigy · May 06, 2016 at 01:58 AM 0
Share

Didn't work $$anonymous$$eep in $$anonymous$$d that I need it to work in all directions. That code I posted is complete. If you have an andoird or IOS give it a test. Put a light or something (lights easiest) in with this script. $$anonymous$$ake it the child of a gameobject rotated 90* on x. and have a camera that is looking down at the zx axis and youll have the same scene as I do.

avatar image raynertanxw doomprodigy · May 06, 2016 at 02:02 AM 0
Share

Well you didn't say that you had a parent transform with the 90˚ on x, so I wouldn't have known. Anyways, for me that 90˚ solved it.

Hope someone else can help you.

avatar image doomprodigy raynertanxw · May 06, 2016 at 03:38 AM 0
Share

Unsure how you solved it. I put the line in my code. And the light went all screwey. I just need the rotations to stay the same not based on the phones position in the world.

avatar image gustmes · May 22, 2018 at 12:03 PM 0
Share

This worked for me! I was having the same problem as OP's, and adding that additional quaternion solved it here.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

62 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Gyro Sensor based on Euler angles? 0 Answers

Headlight rotation issue when moving the camera 0 Answers

How to use gyrostabilizer to rotate the camera 0 Answers

quaternion - rotate camera based on original facing at scene start? 0 Answers

Gyroscope smooth transitions (minimizing jerk from tiny movements) 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges