Spatial Understanding limited by a small area
Asked Answered
B

1

7

I am working with the Hololens in Unity and trying to map a large area (15x15x25) meters. I am able to map the whole area using the SpatialMapping prefab, but I want to do some spatial processing on that mesh to smoothen out the floors and walls. I have been trying to use SpatialUnderstanding for this, but there seems to be a hard limit on how big of an area you can scan with this, which has been detailed by hololens forums thread.

Currently, I don't understand how the pipeline of data works from SpatialMapping to SpatialUnderstanding. Why can I not simply use the meshes generated from SpatialMapping in SpatialUnderstanding? Is there some better method of creating smooth surfaces?

Benzoin answered 20/1, 2019 at 17:38 Comment(0)
A
1

This solution works best for pre-generated rooms. In other words a general solution, one that could be expected to be used by end users, is not possible, given the current limitations.

  • I will start with the last question: "Is there some better method of creating smooth surfaces?"

    • Yes, use a tripod on wheels to generate the initial scan. Given the limited resolution of the accelometers and compasses in the hardware, reducing the variance in one linear axis, height, and one rotational axis, roll(roll should not vary during at all during a scan), will result in a much more accurate scan.

    • The other method to create smooth surfaces is to export the mesh to a 3D editing program and manually flatten the surfaces, then reimport the mesh into Unity3D.

  • "Why can I not simply use the meshes generated from SpatialMapping in SpatialUnderstanding?"

SpacialUnderstanding further divides the generated mesh into (8cm,8cm,8cm) voxels and then calculates the surfels based on each voxel. To keep performance and memory utilization in check, a hard limit of approximately(10m,10m,10m). That is implemented as(128,128,128) voxels.

Any attempt to use SpacialUnderstanding beyond its defined limits, will produce spurious results due to overflow of the underlying data structures.

Anarchy answered 30/1, 2019 at 0:8 Comment(2)
Hello Strom, thank you for the response. Do you know if there's an way to override the resolution of the spatial mesh generated by SpatialUnderstanding? i.e., bigger voxels like (20cm,20cm,20cm)? Also, might you know one such 3D program that could meet my needs?Benzoin
As far as I can tell, the voxel size is hardcoded in the DLL. As far as 3D editing programs: 3Ds Max, Maya, and Blender are the most common programs used in games. Of these, Blender is free.Anarchy

© 2022 - 2024 — McMap. All rights reserved.