Multi-AR Examples for AR-Core, AR-Kit and HoloLens

Multi-AR Examples provides an easy way to deal with the specifics of several AR platforms, and separate the platform-specific details from the scene development. Currently the Multi-AR Examples-package supports AR-Kit on iOS, AR-Core on Android, as well as HoloLens & Windows Mixed Reality on UWP. Support for more AR platforms may be added later.

There are over ten demo-scenes in the package. The anchoring demos show how to anchor and control virtual objects in the AR scenes, collider demo – how to utilize the AR surface collisions, network demo – how to share world anchors in multi-user AR experiences, image-anchoring demo – how to utilize image anchors in the world, etc.

You can find short descriptions of all demo-scenes in the online documentation. The Multi-AR package works with all versions of Unity editor – Personal, Plus and Pro.

Deprecated on Asset Store:
The package is deprecated on Unity asset store, but you can find its repository on GitHub.

How to Run the Demo Scenes:
1. Download and import the Multi-AR Examples package into new Unity project.
2. Please don’t import any AR platform-specific packages.
3. Open a demo-scene from the MultiAR/DemoScenes-folder.
4. Build and run the scene on the target platform – iOS for AR-Kit, Android for AR-Core or UWP for HoloLens (Windows MR).
5. Look at the settings of the MultiARManager-component in the scene. Try to change some of them and then re-run the scene on the target AR platform, to see the effect.

The setup instructions for AR-Kit, AR-Core and HoloLens (Windows-MR) are in the ‘Readme-MultiAR-Examples.pdf’-file in the package.

Troubleshooting:
* If you get compilation errors, make sure you use Unity v2018.0.2f2 or later.
* Make sure your device supports the respective AR-platform.
* Check, if you have followed all setup steps for the respective AR-platform.
* On Unity 2019.x make sure that ‘Unity UI’, ‘Multiplayer HLAPI’ & ‘XR Legacy Input Helpers’-packages are installed.

Documentation:
* The Multi-AR online documentation is available here.
* Many AR-related tips, tricks and examples are available here.

Downloads:
* The official release of the Multi-AR package is available at Unity Asset Store.

What’s new in version 2.6.x:
1. Updated AR-Core interface to check for AR-Core availability, to prevent crashes on older devices.
2. Added MAR-Manager API to get the background camera texture (experimental).
3. Converted problematic AR-Kit image anchors in the image-anchor demo from PNG to JPG format.
4. Updated AR-Core interface to AR-Core 1.5.0.
5. Updated AR-Kit plugin to AR-Kit 2.0.
6. Upgraded project to Unity 2018.2.0.
7. (v2.6.1) Added two utility methods to MultiARManager, to get the nearest or currently visible image anchor only (thanks to joescott).
8. (v2.6.1) Added ‘Use point cloud data’-setting to MultiARManager, to indicate whether the point cloud estimation is needed by the user.
9. (v2.6.2) Updated AR-Core Unity plugin to v1.8.0.
10. (v2.6.2) Updated AR-Kit Unity plugin to v2019-04-07.

Videos worth more than 1000 words:
Here is a video, courtesy of Quanterall Ltd., utilizing the image-anchor demo for ordering a cup of coffee:

And here is a video, courtesy of Satwant Singh, created for the ‘Multi-AR Examples’ package:

 

32 thoughts on “Multi-AR Examples for AR-Core, AR-Kit and HoloLens

  1. Hi Rumen, The link to the AssetsStore is broken. Also, a search for MultiAR does not return anything… H

    On Wed, Oct 4, 2017 at 9:36 PM, RFilkov.com – Technology, Health and More wrote:

    > Rumen F. posted: “Multi-AR package provides an easy way to deal with the > specifics of different AR platforms. This way the developer may concentrate > on the creation of the Unity scenes, set up each scene only once, and leave > the platform-specific stuff to the Multi-AR comp” >

  2. Hi Rumen.

    I am using your Multi AR Asset, it amazing and working fine.
    But, in Object Controller Demo if i apply some rotation and scaling to Current Selected Model and than if i touch some where else on the detected plane, its rotation is getting reset as of original, scaling remain same as i applied but rotation is getting reset.

    Any idea how to solve this issue?

    • Hi, the rotation of the model is set in the SetCurrentModelWorldPos()-method of ObjectController.cs-script. Please comment out ‘currentModel.LookAt(…)’ and ‘currentModel.rotation = …’ lines, if you want to set the object rotation in your method or script.

      • Hi Rumen,

        I have some question about this Plug-in,
        1. Where is the Android Main Fest File?
        2. How you managing the Android Permissions?

        Because i am trying to Save the screen shot to a Gallery but is is showing as “Access Denied”.
        Any Idea?
        The same code is working fine in other Apps with Android Main fest file.
        But i cant able to see the Android main fest file. Still i generated the main fest file and when i added that file in my app, the app gets installed on device but its crashed immediately.

        Waiting for your quick reply.

        Thanks.

      • Hi, I suppose you mean the Android manifest-file. As far as I remember, Unity creates the manifest automatically based on the API you use, when you build for Android platform. I also think there is a major bug in Unity 2017.2.0, when ‘AR-Core support’ is enabled. I had similar experience like yours, but with other permissions. Here is my workaround: Disable the MultiARController-object in the scene and ‘AR Core supported’ in XR-settings. Uninstall the current app on the phone, just in case. Then build and run the updated app on the phone and it will ask you for the “missing” permissions. Then re-enable AR-Core support and MultiARController-object in the scene, build and run it again on the phone. It may ask you for additional camera permission for AR-Core this time. Then you will have all needed permissions.

  3. Hey Rumen , I need to discuss the Surface Saver and loader scenes . Maybe you could help me out in a chat . I have some paid project for you which will need minor adjustments in your surface saver and loader scenes . Kindly guide me even if you don’t want to do the project .

    • I’m busy with multiple projects at the moment, feel a bit exhausted and don’t have time to do anything external. Feel free to ask your questions here or on Skype, and I’ll try to answer them, the best way I can.

      • I want to make an indoor navigation application . So basically I want to use savesurface demo of yours to save my indoor area and anchors I touched and then replace those anchor points with custom objects like navigation arrows to guide user where he wants to go . I also messaged you on skype if you can help me around this Ill be grateful

  4. Hi Rumen,

    Can I Turn ON / OFF AR Camera in the same unity Scene?
    I want to do this because when user is in Information section of the app which is completely UI and there is no use of Camera there. And there is feature in the app that user can go anytime in the information section. So to reduce the battery consumption of mobile device i want add this feature. I tried to enable and disable the “MultiARController” object but it doesn’t work as expected. So is it possible to do this with your MultiAR plugin? And will it support on ARCore and ARKit both?

    Thanks.

    • Hi, thank you for this question! Pausing and resuming AR is not yet available in the Multi-AR API. But as far as I’ve read, both AR-Core 1.0 & AR-Kit 1.5 provide this feature. So, if they do, I’ll add it to the next release of ‘Multi-AR Examples’, as well.

      • Hi, thanks for your Quick Reply.
        Any idea when you are going to release next version of “Multi-AR”?
        So that we can plan our project accordingly.

  5. Hey After updating to ARCore 1.2 the apps which was built on ARCore 1.1 are stopped working (It does not detect the floor at all).
    I updated the ARCore plugin in your assets, but still It does not detect the floor.
    Any idea on this?

    • Hi, the next update of Multi-AR asset will include support for AR-Core 1.2. If you are in a hurry, please e-mail me to get the current version of the asset, with AR-Core 1.2 included.

  6. Hello Rumen.

    I’am using your MultiAR asset and it is really great !

    Just a simple question, i’d like to get the first plane scanned (either on android or IOS) to be an infinite plane like this video :https://www.youtube.com/watch?v=dpgoLNnkMr0

    But i can’t find a way to do it using your asset.

    Can you help me ?

    • Hello Nicolas, the detected planes always have boundaries. Anyway, there is a hidden setting of MultiARManager called ‘hitTrackedSurfacesOnly’. If is enabled by default, but if you disable it the ray-casts will take into account the infinite planes (i.e. out of the displayed boundaries). To see this setting in the Inspector, open CoreScripts/MultiARManager.cs, find ‘hitTrackedSurfacesOnly’ and comment out ‘[HideInInspector]’ on the previous line.

      • Hello Rumen and thank you for your answer.

        Even if i put it to false the bool hitTrackedSurfacesOnly is never used inside the RaycastToWorld Function. I don’t understand what i should do with it .

        Can you explain ?

      • This setting is used in the RaycastToWorld()-functions of the respective platform-specific interfaces. See the code of ARCoreInterface.cs & ARKitInterface.cs, to see what it does.

      • Thank you Rumen for your answers !

        I have finally decided not to use this option and stay with the tracked plane visualization to help the user.

        I’d like to know if there is a way to stop the plane visualisation once the user set up the 3D model ?

      • Awsome, Thank you. It works perfectly !

        As for your info, the condition you use to check if finger is over UI Element in MultiARManager.cs, wasn’t working for me either on Android or IOS. when i touch a UI element if the plane under it was tracked, it moved the 3D object under the UI element.

        So I had to use :

        if (EventSystem.current.IsPointerOverGameObject(touch.fingerId))
        return;

        This work perfectly on android.

        But it doesn’t work on IOS, any idea ?

Leave a Reply to Rumen F.Cancel reply