ARFoundation v3.0

2019-10-22
ARFoundation 3.0.0-preview.4 is now available. Notable improvements:

  • Fixed an issue with the ARSessionOrigin which could produce incorrect behavior with non-identity transforms, particularly when using scale.

  • ARKit

  • Support for plane classification

  • Fixed an issue which prevented building on non macOS platforms due to inability to detect the target Xcode version.

  • Fixed incorrect reporting of tracking state for ARHumanBodies

  • ARKit Face Tracking

  • Fixed an incorrect face rotation when using the rear camera feed.

  • Correctly report the supported number of simultaneously tracked faces. Previously, ARFaceManager.supportedFaceCount would always return the supported number of tracked faces in front-facing camera mode. The value reported now depends on the current configuration since, in rear-facing camera mode, the number could be different.

  • ARCore

  • Updated to ARCore 1.12

  • Support 60 fps devices

  • Fixed an issue where generating a reference image library could fail with “Access denied” on macOS and Linux. This was because spaces in project paths were not handled when setting execution privileges for arcoreimg on macOS and Linux.

  • The GPU camera texture dimensions were incorrectly reported as the current screen dimensions. This has been fixed.

  • The build could fail if reference images used for image tracking had a non-lowercase extension. This has been fixed.

  • Fixed a potential crash when changing image libraries.

2019-09-27
ARFoundation 3.0.0-preview.3 is now available. Notable improvements:

  • Improved synchronization between Unity’s frame and the AR frame.

  • Support both linear and gamma color spaces

  • ARKit

  • Xcode 11 (released, non-beta) support

  • ARCore

  • Fixed image tracking when building with IL2CPP

2019-09-06
ARFoundation 3.0.0-preview.2 is now available. Notable improvements:

  • We’re trying to keep all package versions in sync to reduce confusion, even if nothing has changed in that particular package. That means ARFoundation, ARKit, ARKit Face Tracking, ARCore, and ARSubsystems are all at 3.0.0-preview.2.

  • ARFoundation

  • Fixed an issue where the screen would flash green before the first camera frame

  • Removed dependency on the Legacy Input Helpers package. The ARFoundation samples used the Tracked Pose Driver to update the camera’s position according to the device pose. This is still supported, but no longer required (there’s a new “AR Pose Driver” component included in ARFoundation).

  • ARKit

  • Supports ARCoachingOverlayView

  • Compatible with Xcode 10+ (previously it required 10.3+)

  • Some issues with linker errors and bitcode have been fixed

  • ARKit Face Tracking

  • No change

  • ARCore

  • No change

  • ARSubsystems

  • No change

2019-08-28
ARFoundation 3.0.0-preview.1 is now available. Some notable improvements:

  • We’ve bumped the version numbers of all packages to 3.0.0-preview.1

  • There are a couple of very minor breaking changes (see the migration guide)

  • Added support for LWRP and UniversalRP (finally!). Click here for step-by-step instructions.

  • ARKit

  • The ARKit XR Plugin and ARKit Face Tacking packages now support both ARKit 2 and ARKit 3 simultaneously. We still have separate libs, but we select the appropriate one based on the version of Xcode selected in your Build Settings. This should eliminate the confusion over which package version is compatible with which Xcode version.

  • Added support for ARParticipantAnchors.

  • Added support for camera exposure duration and offset

  • Added support for adding new image tracking reference images at runtime

  • Added support for eye tracking

This version requires 2019.2+. Older versions that are compatible with 2018.4 Long-Term-Support will continue to receive bug fixes, but new features will not be back-ported.

6 Likes

Tracking reference images at runtime - just what I needed, thanks!
Does the eye tracking only work on iOS?

1 Like

Yes, only on iOS.

Thanks, also - I read somewhere that both cameras cannot be used simultaneously. So can eye tracking be only used with the selfie camera, or is it possible to use the gaze data to raycast with the main camera?

In iOS 13 beta, it is possible to enable face tracking with the rear camera providing the camera feed and world tracking, so yes, I think that should be possible.

Hi! Are there any plans to implement camera calibrated post processing effects like the ones introduced with RealityKit? (Depth of field, motion blur, grain and color grading).

Are there plans to support ARKit 3 ARCoachingOverlayView?

Thanks!

Yes, we’re looking at those. They are difficult to implement purely in a package and may require some changes to Unity core, so it may take a bit longer to get these in.

Yes, we’re working on that next.

Awesome to hear, Thanks!

For newcomers like me!
if you struggle to find the new ARFoundation 3.0.0 preview version, From Window > Package Manager, select “Advanced” and enable Preview versions.

Are there plans for webgl support with AR Foundation?

AR Foundation works only with ARKit and ARCore.

Just tried to build the ARFoundation Samples git repo w/ ARFoundation 3.0 preview, and Unity 2019.2.2f1, just a vanilla TogglePlaneDetection.unity scene. Getting this on build:

/clang:-1: linker command failed with exit code 1 (use -v to see invocation)

Doesn’t give me more specific details. Any suggestions for how to debug further? XCode 10.1.

Edit: To test, rolling back to ARFoundation 2.1 and 2.1 samples, it still works. Presumably I didn’t misunderstand- isn’t the ARFoundation 3 preview intended to work with iOS 12 devices / / XCode 10 as well?


As per the image attached, if we put off the highlighted options then we are able to augment the 3D object(Face) but blend shape doesn’t work. And it’s vice versa.

Early I post my question in below link

Yes, it works for me on Xcode 10.3. If you updated a previous version of the samples, you will need to rebuild the Xcode project (“Replace” not “Append”).

What exactly are the linker errors?

@tdmowrer

I’m working to connect Unity with my Kotlin-based computer vision code for an Android application. To do this, I need to:

  • Access and configure an ARCore.ARSession object in Unity
  • Pass this same ARSession object to my Unity plugin (an aar written in Java/Kotlin).

Question: how can I get ARCore.ARSession to share the reference between my C# code and my Kotlin code?

Solutions I’ve considered or tried:

  • Passing the address of an ARSession instance created in Kotlin over to Unity and overriding the nativePtr value in ARReferenceObject.cs. I have not had success with this approach. (I can post the seg-fault log if you’re curious)
  • Porting my whole Java/Kotlin code to C# - super painful and would impact performance
  • One thought - For ARKit I was able to extend objective-c code in the ARKit Unity plugin (ARSessionNative.mm) with extern "C" functions that allow passing the Unity Session from the C# files to Objective-C in ARSessionNative.mm. Is there a way to do something similar using C code and the JNI?

Any advice/tips/stories of either accessing ARCore.ARSession in Unity and/or passing an ARSession reference from Unity to Kotlin/Java would be MUCH appreciated :slight_smile:

I think you’re on the right track with nativePtr. Please see the docs covering ARFoundation Extensions which explains how to interpret the pointer.

1 Like

You are awesome guys! Thanks :slight_smile:

doesn’t say! just fails with the above error. I’m on Xcode 10.1 not 10.3 though.

You have to click the thingy to the right of the error message in the “Report navigator”:
4916030--476063--Screen Shot 2019-08-30 at 1.35.02 PM.png
It will then expand to something like this:
4916030--476060--Screen Shot 2019-08-30 at 1.35.11 PM.png

Whoops. Yep. Was looking at the wrong screen. @tdmowrer

"UnityARKit.a(EventSystem.o) compiled with newer version of Swift language (unknown ABI version 0x07) than previous files (unknown ABI version 0x06) for architecture arm64

clang: error: linker command failed with exit code 1 (use -v to see invocation)"

So, looks like you compiled UnityARKit.a with Swift 5.0 or something, which doesn’t exist in my version of Xcode.