Это решение лучше всего подходит для предварительно сгенерированных комнат.Другими словами, общее решение, которое, как можно ожидать, будет использоваться конечными пользователями, невозможно, учитывая текущие ограничения.
Я начну с последнего вопроса: «Является лиесть какой-нибудь лучший способ создания гладких поверхностей? "
Да, используйте штатив на колесах для создания начального сканирования.Учитывая ограниченное разрешение акселерометров и компасов в аппаратных средствах, уменьшение дисперсии по одной линейной оси, высоте и одной оси вращения, крен (крен не должен изменяться во время сканирования), приведет к гораздо более точному сканированию.,
Другой метод создания гладких поверхностей - экспорт сетки в программу 3D-редактирования и ручное выравнивание поверхностей, а затем повторный импорт сетки в Unity3D.
«Почему я не могу просто использовать сетки, сгенерированные из SpatialMapping в SpatialUnderstanding?»
SpacialUnderstanding
далее делит созданную сетку на (8 см,8 см, 8 см) вокселей, а затем рассчитывает сурфели на основе каждого вокселя.Для контроля производительности и использования памяти, жесткий предел примерно (10 м, 10 м, 10 м).Это реализовано в виде (128,128,128) вокселей.
Любая попытка использовать SpacialUnderstanding
за ее пределами, приведет к ложным результатам из-за переполнения базовых структур данных.