Я создаю и уничтожаю ARCoreSession в своем приложении, чтобы «забыть / уничтожить» старые отслеживаемые объекты (обнаруженные плоскости и характерные точки). Я использую Unity 2019.2.8f1 и пакет Unity ARCore SDK 1.11.
Для создания и уничтожения сеанса я использую следующий код.
public void DestroyActualSession()
{
//if session exists destroy
if (available)
{
//save SessionConfig and CameraConfigFilter
mySession = myARCoreDevice.GetComponent<ARCoreSession>();
myConfig = mySession.SessionConfig;
myCameraConfigFilter = mySession.CameraConfigFilter;
//destroy SessionComponent
DestroyImmediate(mySession);
available = false;
}
}
public void CreateNewSession()
{
//if session doesn't exist you can create one
if (!available)
{
//add ARCoreSession component to ARCoreDevice
//error messages belongs to this line
mySession = myARCoreDevice.AddComponent<ARCoreSession>();
//set configuration
mySession.SessionConfig = myConfig;
mySession.CameraConfigFilter = myCameraConfigFilter;
available = true;
}
//enable session
mySession.enabled = true;
}
Работает нормально. Но я не могу избавиться от следующих ошибок при создании сеанса:
- "SessionConfig требуется ARCoreSession"
- "CameraConfigFilter требуется ARCoreSession. Чтобы получить все доступные конфигурации, установите CameraConfigFilter на фильтр со всеми выбранными параметрами. "
Кажется, что класс ARCoreSession проверяет SessionConfig и CameraConfigFilter в методе OnValidate (). Но я не нашел способа настроить конфигурацию перед добавлением компонента ARCoreSession к моему устройству ARCore.