# Is this level of ground plane flickering to be expected?

**URL:** <https://community.nianticspatial.com/t/is-this-level-of-ground-plane-flickering-to-be-expected/2511>\
**Category:** I'm Stuck\
**Created:** [August 16, 2022, 2:19pm UTC](https://community.nianticspatial.com/t/is-this-level-of-ground-plane-flickering-to-be-expected/2511 "2022-08-16T14:19:59Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kang-An](https://avatars.discourse-cdn.com/v4/letter/k/8e8cbc/32.png) [@Kang-An](https://community.nianticspatial.com/u/Kang-An)\
**Post date:** [August 16, 2022, 2:19pm UTC](https://community.nianticspatial.com/t/is-this-level-of-ground-plane-flickering-to-be-expected/2511/1 "2022-08-16T14:19:59Z")

</div>

_Include the following details (edit as applicable):_

- **Issue category** : Semantic Segmentation / Real-time Mapping-Depth
- **Device type & OS version** : Android Google Pixel 4
- **Host machine & OS version** : Windows 10
- **Issue Environment** : On Device
- **Xcode version** :
- **ARDK version** : 2.1
- **Unity version** : 2021.3.6f

Description of the issue:

[https://us1.discourse-cdn.com/niantic/original/2X/0/07d691c0de19d54717d1202b83deaf20dff26336.mp4](https://us1.discourse-cdn.com/niantic/original/2X/0/07d691c0de19d54717d1202b83deaf20dff26336.mp4)

I’m using the “Gameboard” coupled with its debug visualisation (Visualiser.cs). As the video shows there’s consistently a large amount of flickering of the gameboard. I tend to encounter this problem with the ARVoyage app as well running on this same phone. I’ve found a previous thread that seems to have this same problem ([Detected plane comes on and off](https://community.nianticspatial.com/t/detected-plane-comes-on-and-off/2304)). There are times when the gameboard runs a lot more smoothly and there’s a lot less flickering, but under other situations like this it just constantly flickers. FYI I’m already using the Semantic Segmentation feature to suppress the “ground” layer, though depth manager is currently set to “Auto” (I’ve tried it on Screen Space Mesh setting as well but results seem to be similar)

Is this simply the current technical limitation of ARDK? Are there any “best practices” or setups to minimise this flickering?

---

<div class="post-metadata">

**Author:** ![Dylan\_Smit](https://sea2.discourse-cdn.com/niantic/user_avatar/community.nianticspatial.com/dylan_smit/32/562_2.png) [@Dylan\_Smit](https://community.nianticspatial.com/u/Dylan_Smit)\
**Post date:** [August 16, 2022, 6:59pm UTC](https://community.nianticspatial.com/t/is-this-level-of-ground-plane-flickering-to-be-expected/2511/2 "2022-08-16T18:59:16Z")

</div>

This is depth occlusion being turned on. Sadly you cannot exclude meshes from it, so of something flat is on top of or near real world surfaces you need to turn on depth occlusion culling

---

<div class="post-metadata">

**Author:** ![rob\_link](https://sea2.discourse-cdn.com/niantic/user_avatar/community.nianticspatial.com/rob_link/32/1176_2.png) [@rob\_link](https://community.nianticspatial.com/u/rob_link)\
**Post date:** [August 16, 2022, 9:27pm UTC](https://community.nianticspatial.com/t/is-this-level-of-ground-plane-flickering-to-be-expected/2511/3 "2022-08-16T21:27:46Z")

</div>

Hi @Kang-An,

There may be a couple of things you can try to decrease the flickering effect in your scene.

First, on the `ARSemanticSegmentationManager` component, you can try increasing the `Key Frame Frequency` value to match the application framerate at a 1:1 ratio. I found that setting this value to `30` – as well as setting the `Key Frame Frequency` value of the `ARDepthManager` to `30` – helped ensure the ground channel suppression was occurring as often as possible, and flickering in my test scene was reduced to only occurring when viewing the ground at a direct 90° angle.

Secondly, you may want to add the `natural_ground` and `artificial_ground` channels to the `Depth Suppression Channels` list. The `ground` channel you added should include both of these channels, but you may want to try experimenting with a different combination of suppression channels to see if the issue is reduced in your environment.

Additionally, I will file a feature request for the gameboard for positioning the tiles at a predetermined height above the detected plane, rather than at plane-level. Being able to position the gameboard tiles at, say, 0.1 unit above the ground plane may help prevent the z-fighting that you’re seeing from occurring in a future ARDK release.

---

<div class="post-metadata">

**Author:** ![Kang-An](https://avatars.discourse-cdn.com/v4/letter/k/8e8cbc/32.png) [@Kang-An](https://community.nianticspatial.com/u/Kang-An)\
**Post date:** [August 17, 2022, 8:23am UTC](https://community.nianticspatial.com/t/is-this-level-of-ground-plane-flickering-to-be-expected/2511/4 "2022-08-17T08:23:43Z")

</div>

Hi @rob_link thanks for the info, I’ll test out your suggestions. Just FYI I think the documentation is outdated, there’s no longer an option for “natural\_ground” under semantic segmentation labels. I get an error, had to change it to “grass”. I’m pretty sure I’m on ARDK 2.1

![image](https://us1.discourse-cdn.com/niantic/original/2X/b/beca3008dff4cef35f73b3a9780cedaba2433df3.png)

---

<div class="post-metadata">

**Author:** ![rob\_link](https://sea2.discourse-cdn.com/niantic/user_avatar/community.nianticspatial.com/rob_link/32/1176_2.png) [@rob\_link](https://community.nianticspatial.com/u/rob_link)\
**Post date:** [August 17, 2022, 6:35pm UTC](https://community.nianticspatial.com/t/is-this-level-of-ground-plane-flickering-to-be-expected/2511/5 "2022-08-17T18:35:53Z")

</div>

Thank you for reporting this.

As of ARDK 2.1.0, there does seem to be a discrepancy between the available channels listed in the documentation and the `ChannelName` enum in the `MockSemanticLabel` class, and I’ve filed a report to let the team know.

---

<div class="post-metadata">

**Author:** ![rob\_link](https://sea2.discourse-cdn.com/niantic/user_avatar/community.nianticspatial.com/rob_link/32/1176_2.png) [@rob\_link](https://community.nianticspatial.com/u/rob_link)\
**Post date:** [August 17, 2022, 8:57pm UTC](https://community.nianticspatial.com/t/is-this-level-of-ground-plane-flickering-to-be-expected/2511/6 "2022-08-17T20:57:13Z")

</div>

The team has confirmed that the `natural_ground` semantic segmentation channel is indeed supported – it’s just missing from the `ChannelName` enum as of ARDK 2.1.0 and will be re-added in a future release.

---

<div class="post-metadata">

**Author:** ![Kang-An](https://avatars.discourse-cdn.com/v4/letter/k/8e8cbc/32.png) [@Kang-An](https://community.nianticspatial.com/u/Kang-An)\
**Post date:** [August 18, 2022, 10:57am UTC](https://community.nianticspatial.com/t/is-this-level-of-ground-plane-flickering-to-be-expected/2511/7 "2022-08-18T10:57:09Z")

</div>

@rob_link Thank you for the information regarding semantic channels.

I’ve been looking into implementing the change whereby the Gameboard is created say 0.1 units above the ground plane in an attempt to reduce flickering. Could you provide some guidance if possible? Which object’s y position should I be manipulating to most easily achieve this? The whole Gameboard? The Surface object? The individual Tile positions?

---

<div class="post-metadata">

**Author:** ![Kang-An](https://avatars.discourse-cdn.com/v4/letter/k/8e8cbc/32.png) [@Kang-An](https://community.nianticspatial.com/u/Kang-An)\
**Post date:** [August 19, 2022, 9:28am UTC](https://community.nianticspatial.com/t/is-this-level-of-ground-plane-flickering-to-be-expected/2511/8 "2022-08-19T09:28:17Z")

</div>

For anyone else who might want to achieve this effect, you can just add it in GameboardModel.cs under the Scan() function. Specifically

```auto
          // Raycast for height
          var elevation =
            Physics.Raycast
            ( new Ray(position, Vector3.down),
              out RaycastHit hit,
              rayLength,
              layerMask: Settings.LayerMask
            )
              ? hit.point.y + 0.1f
              : -100;

```

Change " + 0.1f" to the distance above the ground you want it to be. Naturally you can edit the function to pass in this height offset. But just FYI even if this works there’re other considerations to make if you have an elevated gameboard (e.g. shadow casting) depending on your application…

@rob_link This method does help with Z-fighting that seems to affect my iPhone 12 Pro very badly. But in the video I posted at the start of this thread I think it has more to do with the calculated depth height being different from the depth texture, causing plane detection to go a bit haywire. Think I’ll just wait and hope this gets improved in future ARDK versions.

---

<div class="post-metadata">

**Author:** ![rob\_link](https://sea2.discourse-cdn.com/niantic/user_avatar/community.nianticspatial.com/rob_link/32/1176_2.png) [@rob\_link](https://community.nianticspatial.com/u/rob_link)\
**Post date:** [August 19, 2022, 6:46pm UTC](https://community.nianticspatial.com/t/is-this-level-of-ground-plane-flickering-to-be-expected/2511/9 "2022-08-19T18:46:53Z")

</div>

@Kang-An

Thank you for sharing your findings! I’ve passed this information along to the team.

---

<div class="post-metadata">

**Author:** ![Maverick\_Niantic](https://avatars.discourse-cdn.com/v4/letter/m/8edcca/32.png) [@Maverick\_Niantic](https://community.nianticspatial.com/u/Maverick_Niantic)\
**Post date:** [March 5, 2026, 11:50pm UTC](https://community.nianticspatial.com/t/is-this-level-of-ground-plane-flickering-to-be-expected/2511/10 "2026-03-05T23:50:05Z")

</div>

Age
