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; } }