AR Camera GYRO — Unity Asset that uses camera and gyroscope on the player’s mobile device to display 2D or 3D objects as though they were in real world.
Cross-platform mobile gyroscopic camera implements markerless augmented reality (AR) by using a gyroscope sensor (like Pokemon GO).
- 1. AR Camera GYRO and ARKit, ARCore
- 2. Features of AR Camera GYRO
- 3. Package is a part of Unity Assets
- 4. Package Contains
- 5. Gyro vs. Accelerometer
- 6. Limitations
- 7. Tested with Devices
- 8. Tutorial
- 9. Known issues
- 10. Support
- 11. Changelog
AR Camera GYRO and ARKit, ARCore
There is no integration with ARKit & ARCore.
Unity AR Camera GYRO operates with gyroscope without surface detection to cover a wider range of mobile devices than ARKit & ARCore.
Read more about Top AR Engines for Unity.
Features of AR Camera GYRO
Bring the enchanting Power of Augmented Reality into your amazing Game or App:
- 2 modes with Auto Rotation: Portrait, Landscape.
- 3-minute installation for your own AR Scene.
- Same AR as in Pokemon GO game.
- Covering a wide range of mobile devices.
- No using of other AR Engines like ARCore, ARKit, Vuforia, etc.
- Real-Time AR Shadows (docs).
Package is a part of Unity Assets
All modules are designed independently to keep this asset extendable & easy to understand:
Gyro vs. Accelerometer
90% of all mobile devices have an accelerometer and video camera but only 20% have a gyroscope.
You can also try to use both cameras for different cases.
Different devices have different gyroscopes, and therefore different deviations and drifts.
Drift is natural for mobile gyroscope sensor.
Tested with Devices
- iOS on iPhone 6.
- Android on Samsung Galaxy S7, Lenovo A606.
- UWP on Microsoft Surface Pro 5, Acer Switch 5.
How to transform your scene into Augmented Reality with AR Camera GYRO?
I used Unity 2018.3 & iOS 12 for this tutorial.
But you can also build it for Android.
- Create New Unity Project.
- Import AR Camera GYRO (docs).
- Import Your Scene.
- Switch to a Target Platform.
- Open Your Scene.
- Prepare Your Scene.
- Create Game Object called “GameWorld” to conveniently move the environment of your scene.
- Move all environment into “GameWorld” Game Object.
- Delete the Main Camera.
- Drag new instances of prefabs into “GameWorld” Game Object: “ARDirectionalLight” & “ARGround”.
- Delete your “ground”, position and scale “ARGround” for AR Shadows.
- Delete your main Directional Light.
- Drag a new instance of prefab into the scene: “ARCameraGYRO”.
- Position & Rotate “GameWorld” Game Object so that the environment could be seen in the Game View.
- Customize Quality Settings.
- Edit > Project Settings > Quality > Default Quality > High.
- Pixel Light Count = 1.
- Realtime Reflection Probes = false.
- Billboards Face Camera Position = false.
- Shadow Resolution = Very High Resolution.
- Shadow Projection = Close Fit.
- Shadow Distance = 400.
- Customize Player Settings.
- Bundle Identifier = your.own.name.
- Camera, Location & Microphone descriptions > Any.
- Target minimum iOS Version > convenient for your phone.
- Build And Run.
- If you faced the problem in Xcode then indicate your Team for successfully deploying.
AR Camera GYRO prefab & GyroCameraControl.cs
ARCameraGYRO prefab has main camera control script: GyroCameraControl.cs.
Gyroscope Camera for virtual world rotating depending on the gyro data.
Option: On Gyro Is Not Supported
You can assign a function (in the inspector) to be executed if the gyroscope is not supported by your smartphone. By default, you will see screen message: “Your device does not support gyroscope”.
Option: Is Gyro Disabled On Destroy
If it’s ‘true’ then Gyro’s “Y” Rotation is resetted on Scene Closing or Reloading.
Interface into the Unity Gyroscope. Use this variable to access gyroscope.
Is a gyroscope available on the device?
rotationFix = new Quaternion (0f, 0f, 1f, 0f);
Unity AR bugs: Gyroscope
- Fixed in Unity 2018.2: INPUT.GYRO is extremely laggy on Samsung Galaxy S6, S6 Edge and S8 with Android 7.0.
- Fixed in Unity 2017.2: INPUT.GYRO.ATTITUDE returns acceleration’s values.
- Hardware Issue: INPUT.GYRO.ATTITUDE returns zero values on Motorola Moto G4 and G5.
Vote on these issues and comment them.
It’s important for Unity Team, so users should pay them attention to the situation.
Black screen on iOS
You just need to fill Camera Usage Description in Unity Editor.
Go to Unity Editor > Player Settings > iOS > Other Settings > Camera Usage Description > Fill it (any note for your app).
Check the current version on Asset Store.
The latest versions will be added as soon as possible.
- Optional Flag: “Is Gyro Disabled On Destroy”. If it’s ‘true’ then Gyro’s “Y” Rotation is resetted on Scene Closing or Reloading.
- Unity Event “On Gyro Is Not Supported”, so you can easily assign your own functions in case that smartphone doesn’t have the gyroscope. By default, you will see screen message: “Your device does not support gyroscope”.
- Unity 2019.1 version;
- Unity 2018.3 version;
- AR Shadow 1.3 version (docs);
- Fix low FPS in Unity Editor;
- 2 modes with Auto Rotation: Portrait, Landscape.