Exemplo n.º 1
0
    private void Update()
    {
        if (justRecompiled)
        {
            OnRecompile();
        }

        if (isStreaming && camera != null)
        {
            updateGUI = true;
        }

        if (updateGUI)
        {
            EditorUtility.SetDirty(GetWindow(typeof(Scanner)));
        }

        if (runningAlgorithm)
        {
            clearObjectsInScene();

            scanCount++;
            updateCam();
            algorithm.ProcessImage(camera, cameraImage);

            IEnumerable <GameObject> poseList = algorithm.GetShapes();

            Material blackMaterial = new Material(Shader.Find("Standard"));
            blackMaterial.color = Color.black;

            //Set parent for group objects as empty GameObject
            var parent = new GameObject()
            {
                name = "Scanned Objects"
            };
            parent.tag = "scanned_group";
            GameObject plane = GameObject.CreatePrimitive(PrimitiveType.Plane);
            plane.transform.localScale = new Vector3(400, 1, 400);
            plane.transform.parent     = parent.transform;

            newObjMat(plane);
            plane.GetComponent <Renderer>().sharedMaterial = blackMaterial;

            int i = 0;
            foreach (GameObject p in poseList)
            {
                Material redMaterial = new Material(Shader.Find("Standard"));
                redMaterial.color = Color.red;
                Material blueMaterial = new Material(Shader.Find("Standard"));
                blueMaterial.color = Color.blue;
                i++;

                p.transform.parent = parent.transform;//grouping spawned objects

                if (p.name == "Cube")
                {
                    newObjMat(p);
                    p.GetComponent <Renderer>().sharedMaterial = redMaterial;
                    //p.AddComponent<MeshCollider>();
                }

                else if (p.name == "Cylinder")
                {
                    newObjMat(p);
                    p.GetComponent <Renderer>().sharedMaterial = blueMaterial;
                    //p.AddComponent<MeshCollider>();
                }
            }


            algorithm.ClearShapes();

            runningAlgorithm = false;
            isStreaming      = true;
        }
    }