Unity-Technologies / arfoundation-samples

Example content for Unity projects based on AR Foundation
Other
3.07k stars 1.15k forks source link

HumanBodyTracking3D gives Undefined symbols error on xcode #149

Closed LuisCRSousa closed 5 years ago

LuisCRSousa commented 5 years ago

Undefined symbol: _OBJCCLASS$_ARCollaborationData Undefined symbol: _OBJCCLASS$_ARSkeletonDefinition Undefined symbol: _OBJCCLASS$_ARBodyAnchor Undefined symbol: _OBJCCLASS$_ARBodyTrackingConfiguration Undefined symbol: _OBJCCLASS$_ARMatteGenerator Undefined symbol: ___isPlatformVersionAtLeast

Last AR foundation version 2.2 with arkit 3 support and Unity 2019.1.5f1

dmbfm commented 5 years ago

Same thing happens here, with AR Foundation 1.5.0-p5, ARKit 2.2.0-p1 and Unity 2018.3.14f1.

tdmowrer commented 5 years ago

Those are all iOS 13 types, which requires Xcode 11. Our use of these types is protected by

if (@available(iOS 13.0, *))
{
   ...
}

Which means you should be able to compile with Xcode 10 (and just not have access to ARKit 3 features). I will double check.

In the meantime, what version of Xcode are you using? If 10 or less, does upgrading to 11 fix the issue?

LuisCRSousa commented 5 years ago

Those are all iOS 13 types, which requires Xcode 11. Our use of these types is protected by

if (@available(iOS 13.0, *))
{
   ...
}

Which means you should be able to compile with Xcode 10 (and just not have access to ARKit 3 features). I will double check.

In the meantime, what version of Xcode are you using? If 10 or less, does upgrading to 11 fix the issue?

I'm using xcode 10.2.1. Will check with 11

tdmowrer commented 5 years ago

I've just confirmed this does happen in Xcode 10; will have to investigate as to why.

ARFoundation 2.1 will not have this problem (but the samples are now only 2.2-compatible). ARFoundation 2.2 requires Xcode 11 for now.

dorkbot commented 5 years ago

Does that mean that even if we aren't using ARKit 3 stuff, if we use ARFoundation 2.2 we will have to use Xcode 11 to build to a device not running iOS 13?

tdmowrer commented 5 years ago

Does that mean that even if we aren't using ARKit 3 stuff, if we use ARFoundation 2.2 we will have to use Xcode 11 to build to a device not running iOS 13?

For now, yes. The difference between 2.1 and 2.2 is the addition of ARKit 3 features.

dorkbot commented 5 years ago

So just to be clear, the only addition in 2.2 is ARKit 3 support/features?

tdmowrer commented 5 years ago

So just to be clear, the only addition in 2.2 is ARKit 3 support/features?

From https://docs.unity3d.com/Packages/com.unity.xr.arkit@2.2/changelog/CHANGELOG.html there are also a couple of minor changes:

  • Use relative paths for Xcode asset catalogs. This allows the generated Xcode project to be moved to a different directory, or even a different machine. Previously, we used full paths, which prevented this.
  • Conditionally compile subsystem registrations. This means the subsystems wont't register themselves in the Editor (and won't generate warnings if there are other subsystems for other platforms).
magik-chorne commented 5 years ago

Different - but similar enough I figured I should add it here - ARKit Face Tracking 1.1 fails on 2019.2.0b3 on XCode 10 with:

10401: ▸ ARKitXRFaceProvider::OnSessionPreUpdate(SessionPreUpdatePayload*) in libUnityARKitFaceTracking.a(ARKitXRFaceProvider.o) 10402: ▸ _UnityARKit_FaceProvider_GetSupportedFaceCount in libUnityARKitFaceTracking.a(ARKitXRFaceProvider.o) 10403: ▸ _UnityARKit_FaceProvider_SetMaximumFaceCount in libUnityARKitFaceTracking.a(ARKitXRFaceProvider.o) 10404: ▸ ld: symbol(s) not found for architecture arm64

ARKit Face Tracking 1.0 works just fine

tdmowrer commented 5 years ago

Different - but similar enough I figured I should add it here - ARKit Face Tracking 1.1 fails on 2019.2.0b3 on XCode 10 with:

10401: ▸ ARKitXRFaceProvider::OnSessionPreUpdate(SessionPreUpdatePayload*) in libUnityARKitFaceTracking.a(ARKitXRFaceProvider.o) 10402: ▸ _UnityARKit_FaceProvider_GetSupportedFaceCount in libUnityARKitFaceTracking.a(ARKitXRFaceProvider.o) 10403: ▸ _UnityARKit_FaceProvider_SetMaximumFaceCount in libUnityARKitFaceTracking.a(ARKitXRFaceProvider.o) 10404: ▸ ld: symbol(s) not found for architecture arm64

ARKit Face Tracking 1.0 works just fine

ARKit Face Tracking 1.1 includes iOS 13 beta features. There is an issue with Xcode 11 beta which breaks backward compatibility with Xcode 10, so this is expected. The only difference between 1.0 and 1.1 are the new iOS 13 features (i.e., being able to track multiple faces simultaneously).

fantasydigit commented 5 years ago

Hi tdmowrer, different problem, I am really interested in your ar-foundation samples. so I have exported iOS build from this repo. but xcode 11 beta crashes whenever I open a existing iOS project or create new one. It's making me crazy for a week so far. I uses Mac Mojave 10.14.5.

how was you able to run xcode 11 beta version?

thanks, in advance

tdmowrer commented 5 years ago

Hi tdmowrer, different problem, I am really interested in your ar-foundation samples. so I have exported iOS build from this repo. but xcode 11 beta crashes whenever I open a existing iOS project or create new one. It's making me crazy for a week so far. I uses Mac Mojave 10.14.5.

how was you able to run xcode 11 beta version?

thanks, in advance

I have not had Xcode 11 beta crash for me. You might check the release notes for known issues related to this.

fantasydigit commented 5 years ago

what's your mac os and it's version please?

tdmowrer commented 5 years ago

what's your mac os and it's version please?

macOS Mojave Version 10.14.5, same as you, I'm afraid.

fantasydigit commented 5 years ago

is there any way to use ARKit 3.0 in Xcode 10.2.1? I am really looking forward to the face-blender-shape scene you created!

tdmowrer commented 5 years ago

is there any way to use ARKit 3.0 in Xcode 10.2.1? I am really looking forward to the face-blender-shape scene you created!

No; the use of ARKit 3 features requires Xcode 11 and iOS 13. However, ARKit blendshapes are an iOS 11 feature. If you copy the ARKitFaceBlendShapes scene into your project, you only need Xcode 9 to run it.

fantasydigit commented 5 years ago

-I did attach only one scene ARKitFaceBlendShapes as you mentioned but the issued errors are occurred during compiling in xcode 10.2.1. should I remove any relevant plugins to disable iOS 3 features like human body tracking?

tdmowrer commented 5 years ago

-I did attach only one scene ARKitFaceBlendShapes as you mentioned but the issued errors are occurred during compiling in xcode 10.2.1. should I remove any relevant plugins to disable iOS 3 features like human body tracking?

  • And the old ARKit version (1.5, 2.0) will work on my ipad 11?

It sounds like you are on ARKit XR Plugin version 2.2. You should revert to 2.1 if you are not using Xcode 11/iOS 13.

fantasydigit commented 5 years ago

okay and

And the old ARKit version (1.5, 2.0) will work on my ipad 11?

tdmowrer commented 5 years ago

okay and

And the old ARKit version (1.5, 2.0) will work on my ipad 11?

Sorry, I skipped over your question. ARKit face tracking relies on the TrueDepth camera, which is not present in every device. The iPhone X series (Xs, Xr) have them, as well as the newer iPads. If it supports Face ID, then it should work.

fantasydigit commented 5 years ago

https://blogs.unity3d.com/2019/06/06/ar-foundation-support-for-arkit-3/ It is said that older arkit versions support only iphone X, so ARKit 3 expanded for latest iOS devices in my understanding.

"Face tracking enhancements ARKit 3 has expanded its support for face tracking on iPhone XS, iPhone XR, iPhone XS Max and the latest iPad Pros in a couple of significant ways."

please let me know if I am wrong. thanks.

tdmowrer commented 5 years ago

It is said that older arkit versions support only iphone X

It used to be that the iPhone X was the only such device. I believe the new iPad should support face tracking without Xcode 11/iOS 13; however, I haven't tried, so I can't confirm that.

fantasydigit commented 5 years ago

@tdmowrer , you are right!! my new ipad pro 11 was working well with all old version's ARKit. Thanks for your consistent comment.