Unity-Technologies / arfoundation-samples

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

No occlusion happening in build #538

Closed Sterling-Malory-Archer closed 4 years ago

Sterling-Malory-Archer commented 4 years ago

I've upgraded to ARFoundation version 4.1.0 - preview.2 as well as both ARCore and ARKit.

I'm using Unity 2019.4 (LTS).

I've added the AR Occlusion Manager to my AR Camera (see screenshot below).

When I build my app and try to test it on the iPad, there is not occlusion, neither environment nor human.

Could it be because I am using Anchors?

Screen Shot 2020-07-08 at 10 15 12 AM

doukasd commented 4 years ago

This worked on my iPad. But you need the following:

Sterling-Malory-Archer commented 4 years ago

This worked on my iPad. But you need the following:

  • does your iPad have the LIDAR?
  • is your iPad running iOS14 beta?
  • try disabling the human segmentation settings on that screenshot

Hi,

Unfortunately, I don't think my iPad has LIDAR, I know for a fact I'm not using iOS14 Beta. My iPad is the 6th Generation, running on 12.3.1.

But in that case, how can I enable occlusion on this particular device? Or is it not possible?

DavidMohrhardt commented 4 years ago

@Sterling-Malory-Archer Occlusion for ARKit requires a device with an A12 chip or later as per the docs

"People occlusion is supported on Apple A12 and later devices. Before attempting to enable people occlusion, verify that the user’s device supports it."

The 6th generation iPads have an A10 chip which means that Occlusion is incompatible with that particular iPad. You can confirm whether your device supports occlusion by checking the subsystem descriptor on the manager.

var arOcclusionManager = GetComponent<AROcclusionManager>();
if (!arOcclusionManager.descriptor. supportsHumanSegmentationDepthImage && arOcclusionManager.descriptor. !supportsHumanSegmentationDepthImage)
{
    Debug.Log("This device does not support occlusion.");
    arOcclusionManager.enabled = false;
    // Other handling...
}