void Update() { // solves current problem if (Input.GetKeyDown("p")) { InitVCProblem(); ComputeAndShowCamera(); DisplaySolutions(psoSolver.candidates, false); } // evaluates current camera against current problem if (Input.GetKeyDown("e")) { InitVCProblem(); EvaluateCamera(); } // show visibility points of current targets if (Input.GetKeyDown("l")) { InitVCProblem(); foreach (Vector3 p in camLibCam.targets[0].visibilityPoints) { GameObject newView = GameObject.CreatePrimitive(PrimitiveType.Sphere); newView.transform.position = p; newView.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f); } } // test satisfaction n times on random cameras if (Input.GetKeyDown("t")) { InitVCProblem(); float beginTime = Time.realtimeSinceStartup; for (int i = 0; i < 10000; i++) { camLibCam.EvaluateSatisfaction(cameraDomain.ComputeRandomViewpoint(6), 0.0001f); } float endTime = Time.realtimeSinceStartup; Debug.Log("10000 evaluations in " + (endTime - beginTime) + " seconds."); } // initializes candidates and shows them if (Input.GetKeyDown("i")) { InitVCProblem(); psoSolver.evaluator = camLibCam; psoSolver.InitializeCandidates(new List <CLCandidate> ()); DisplaySolutions(psoSolver.candidates, false); } // finds a camera that satisfies a size property if (Input.GetKeyDown("c")) { InitVCProblem(); float distance = camLibCam.targets [0].ComputeDistanceFromSize(0.5f, CLSizeProperty.SizeMode.HEIGHT, camLibCam, camLibCam.unityCamera.fieldOfView); Debug.Log(distance); Vector3 pos = camLibCam.targets [0].ComputeWorldPosFromSphericalCoordinates(distance, 0.99F * 2 * Mathf.PI, Mathf.PI / 2); camLibCam.unityCamera.transform.position = pos; camLibCam.unityCamera.transform.LookAt(camLibCam.targets [0].boundingBox.center); } }