コード例 #1
0
 private void OnScanStateChanged()
 {
     if (m_spatialUnderstanding.ScanState == SpatialUnderstanding.ScanStates.Done)
     {
         m_spatialUnderstandingState = SpatialUnderstandingState.WaitingForMeshImport;
     }
 }
コード例 #2
0
 public void StopScanning()
 {
     if (m_spatialMappingManager.IsObserverRunning())
     {
         m_spatialMappingManager.StopObserver();
     }
     m_spatialUnderstandingState = SpatialUnderstandingState.FinalizeScan;
 }
コード例 #3
0
    private void Update()
    {
        if (m_scanningComplete)
        {
            return;
        }
        switch (m_spatialUnderstandingState)
        {
        case SpatialUnderstandingState.FinalizeScan:
            //TODO: timeout?
            if (!m_spatialUnderstanding.ScanStatsReportStillWorking)
            {
                Debug.Log("Finalizing scan...");
                m_spatialUnderstanding.RequestFinishScan();
                m_spatialUnderstandingState = SpatialUnderstandingState.WaitingForScanCompletion;
            }
            break;

        case SpatialUnderstandingState.WaitingForMeshImport:
            //TODO: timeout?
            if (m_spatialUnderstanding.UnderstandingCustomMesh.IsImportActive == false)
            {
                Debug.Log("Found " + m_spatialUnderstanding.UnderstandingCustomMesh.GetMeshFilters().Count + " meshes (import active=" + m_spatialUnderstanding.UnderstandingCustomMesh.IsImportActive + ")");
                if (!visualizeSpatialMeshes)
                {
                    HideSpatialMappingMeshes();
                }
                if (!visualizeSpatialUnderstandingMeshes)
                {
                    SetSpatialUnderstandingMaterial(occlusionMaterial);
                }
                SurfacePlaneDeformationManager.Instance.SetSpatialMeshFilters(m_spatialUnderstanding.UnderstandingCustomMesh.GetMeshFilters());
                m_spatialUnderstandingState = SpatialUnderstandingState.WaitingForPlacementSolverInit;
            }
            break;

        case SpatialUnderstandingState.WaitingForPlacementSolverInit:
            //TODO: error checking and timeout?
            if (!m_placementSolverInitialized)
            {
                m_placementSolverInitialized = (SpatialUnderstandingDllObjectPlacement.Solver_Init() == 1);
                Debug.Log("Placement Solver initialization " + (m_placementSolverInitialized ? "succeeded" : "FAILED"));
                if (m_placementSolverInitialized)
                {
                    if (OnScanComplete != null)
                    {
                        OnScanComplete();
                    }
                    m_scanningComplete          = true;
                    m_spatialUnderstandingState = SpatialUnderstandingState.Finished;
                }
            }
            break;

        default:
            break;
        }
    }
コード例 #4
0
 public void StartScanning()
 {
     // Start spatial mapping (SpatialUnderstanding requires this, too)
     if (!m_spatialMappingManager.IsObserverRunning())
     {
         m_spatialMappingManager.StartObserver();
     }
     m_spatialMappingManager.DrawVisualMeshes = visualizeSpatialMeshes;
     m_spatialUnderstanding.ScanStateChanged += OnScanStateChanged;
     m_spatialUnderstanding.RequestBeginScanning();
     m_spatialUnderstandingState = SpatialUnderstandingState.Scanning;
     m_spatialMappingManager.SetSurfaceMaterial(renderingMaterial);
 }
コード例 #5
0
 public void StopScanning()
 {
     if (m_spatialMappingManager.IsObserverRunning())
     {
         m_spatialMappingManager.StopObserver();
     }
     if (useSpatialUnderstanding)
     {
         m_spatialUnderstandingState = SpatialUnderstandingState.FinalizeScan;
     }
     else
     {
         CreatePlanes();
         m_scanningComplete = true;
     }
 }
コード例 #6
0
    //TODO: if time limited, take an optional callback
    public void StartScanning()
    {
        // Start spatial mapping (SpatialUnderstanding requires this, too)
        if (!m_spatialMappingManager.IsObserverRunning())
        {
            m_spatialMappingManager.StartObserver();
        }

        // If we are only using spatial mapping, visualize the meshes during the scanning
        // phase
        if (useSpatialUnderstanding)
        {
            m_spatialMappingManager.DrawVisualMeshes = visualizeSpatialMeshes;
            m_spatialUnderstanding.ScanStateChanged += OnScanStateChanged;
            m_spatialUnderstanding.RequestBeginScanning();
            m_spatialUnderstandingState = SpatialUnderstandingState.Scanning;
        }
        else
        {
            m_spatialMappingManager.DrawVisualMeshes = true;
        }
        m_spatialMappingManager.SetSurfaceMaterial(renderingMaterial);
    }
コード例 #7
0
    private void Update()
    {
        if (m_scanningComplete)
        {
            return;
        }
        switch (m_spatialUnderstandingState)
        {
        case SpatialUnderstandingState.StartScanning:
            // Start spatial mapping (SpatialUnderstanding requires this, too)
            if (!m_spatialMappingManager.IsObserverRunning())
            {
                m_spatialMappingManager.StartObserver();
            }
            m_spatialMappingManager.DrawVisualMeshes = visualizeSpatialMeshes;
            m_spatialUnderstanding.ScanStateChanged += OnScanStateChanged;
            m_spatialUnderstanding.RequestBeginScanning();
            m_spatialMappingManager.SetSurfaceMaterial(renderingMaterial);
            m_spatialUnderstandingState = SpatialUnderstandingState.Scanning;
            break;

        case SpatialUnderstandingState.FinalizeScan:
            //TODO: timeout?
            if (!m_spatialUnderstanding.ScanStatsReportStillWorking)
            {
                Debug.Log("Finalizing scan...");
                m_spatialUnderstanding.RequestFinishScan();
                m_spatialUnderstandingState = SpatialUnderstandingState.WaitingForScanCompletion;
            }
            break;

        case SpatialUnderstandingState.WaitingForMeshImport:
            //TODO: timeout?
            if (m_spatialUnderstanding.UnderstandingCustomMesh.IsImportActive == false)
            {
                Debug.Log("Found " + m_spatialUnderstanding.UnderstandingCustomMesh.GetMeshFilters().Count + " meshes (import active=" + m_spatialUnderstanding.UnderstandingCustomMesh.IsImportActive + ")");
                if (!visualizeSpatialMeshes)
                {
                    DisableSpatialMappingMeshes();
                }
                ApplyVisualizationSettings();
                //SurfacePlaneDeformationManager.Instance.SetSpatialMeshFilters(m_spatialUnderstanding.UnderstandingCustomMesh.GetMeshFilters());
                m_spatialUnderstandingState = SpatialUnderstandingState.WaitingForPlacementSolverInit;
            }
            break;

        case SpatialUnderstandingState.WaitingForPlacementSolverInit:
            //TODO: error checking and timeout?
            if (!m_placementSolverInitialized)
            {
                m_placementSolverInitialized = (SpatialUnderstandingDllObjectPlacement.Solver_Init() == 1);
                Debug.Log("Placement Solver initialization " + (m_placementSolverInitialized ? "succeeded" : "FAILED"));
                if (m_placementSolverInitialized)
                {
                    if (OnScanComplete != null)
                    {
                        OnScanComplete();
                    }
                    m_scanningComplete          = true;
                    m_spatialUnderstandingState = SpatialUnderstandingState.Finished;
                }
            }
            break;

        default:
            break;
        }
    }
コード例 #8
0
 public void StartScanning()
 {
     // So that this can be called from within another object's Start() method
     // (possibly before our own Start() function is called)
     m_spatialUnderstandingState = SpatialUnderstandingState.StartScanning;
 }