private void Capture(int num) { string imageName = _camera.name + "_" + num; // Define Data point object outside async call DataPoint dataPoint = new DataPoint(_cube.name, _cube.transform.rotation, simElapsed, imageName); // Call Screen Capture var screen = CaptureCamera.Capture(_camera, request => { string path = screenCapturePath + "/" + imageName + ".jpg"; // Convert the screen capture to a byte array Array image = CaptureImageEncoder.Encode(request.data.colorBuffer as Array, 640, 480, GraphicsFormat.R8G8B8A8_UNorm, CaptureImageEncoder.ImageFormat.Jpg, true); // Write the screen capture to a file var result = DXFile.Write(path, image); // Wait for Async screen capture request to return and then log data point if (result) { // Log data point to file dataLogger.Log(dataPoint); return(AsyncRequest.Result.Completed); } return(AsyncRequest.Result.Error); }); }
private void Capture(int num) { string imageName = _camera.name + "_" + num; Dictionary <string, int> labelInstances = new Dictionary <string, int>(); // Call Screen Capture var screen = CaptureCamera.Capture(_camera, request => { string path = screenCapturePath + "/" + imageName + ".jpg"; // Convert the screen capture to a byte array Array image = CaptureImageEncoder.Encode(request.data.colorBuffer as Array, 640, 480, GraphicsFormat.R8G8B8A8_UNorm, CaptureImageEncoder.ImageFormat.Jpg, true); // Write the screen capture to a file var result = DXFile.Write(path, image); // Wait for Async screen capture request to return and then log data point if (result) { labelInstances.Add("Cube", 100); labelInstances.Add("Sphere", 111); labelInstances.Add("Cylinder", 131); string temp = JsonConvert.SerializeObject(labelInstances); InstanceCount instanceCount = new InstanceCount(imageName, temp); // Log data point to file dataLogger.Log(instanceCount); return(AsyncRequest.Result.Completed); } return(AsyncRequest.Result.Error); }); }
/* * Instantiates copies of Cube, * moves them to a new location in the scene, * and creates and logs dataPoint object. */ public void ReplicateCube(GameObject cube, int replicateNum) { for (int i = 0; i < replicateNum; i++) { Vector3 cubePosition = new Vector3((i + 1) * 2.0F, 0, 0); GameObject newCube = Instantiate(cube, cubePosition, Quaternion.identity); newCube.name = newCube.name + "_" + i; //Create a new data point ObjectPosition cubeDataPoint = new ObjectPosition(cubePosition, newCube.name); cubeLogger.Log(cubeDataPoint); } }
// Start is called before the first frame update void Start() { objDict = new Dictionary <string, GameObject>(); objDict.Add("cube", CubePrefab); objDict.Add("sphere", SpherePrefab); // Create a specific logger for AppParams for debugging purposes paramLogger = new Unity.AI.Simulation.Logger("ParamReader"); cubeLogger = new Unity.AI.Simulation.Logger("CubeLogger"); simElapsedSeconds = 0; // NOTE: AppParams can be loaded anytime except during `RuntimeInitializeLoadType.BeforeSceneLoad` // If the simulation is running locally load app_param_0.json if (!Configuration.Instance.IsSimulationRunningInCloud()) { string app_param_name = AppParamToggle ? "mountain_app_param_1.json" : "mountain_app_param_0.json"; Configuration.Instance.SimulationConfig.app_param_uri = "file://" + Application.dataPath + "/StreamingAssets/" + app_param_name; Debug.Log(Configuration.Instance.SimulationConfig.app_param_uri); } appParams = Configuration.Instance.GetAppParams <MountainParam>(); // Check if AppParam file was passed during command line execution if (appParams != null) { // Log AppParams to Player.Log file and Editor Console Debug.Log(appParams.ToString()); // Log AppParams to DataLogger paramLogger.Log(appParams); paramLogger.Flushall(); // Update the screen capture interval through an app-param float screenCaptureInterval = Mathf.Min(Mathf.Max(0, appParams.screenCaptureInterval), 100.0f); GameObject.FindGameObjectsWithTag("DataCapture")[0].GetComponent <CameraGrab>()._screenCaptureInterval = screenCaptureInterval; // Set the Simulation exit time. quitAfterSeconds = appParams.quitAfterSeconds; red = appParams.red; green = appParams.green; blue = appParams.blue; whichObjects = appParams.whichObjects; } else { Debug.Log("NULL"); } }
/* * Instantiates copies of Cube, * moves them to a new location in the scene, * and creates and logs dataPoint object. */ public void ReplicateCube(int cubeNum) { GameObject newCube = GameObject.Instantiate(objDict[appParams.whichObjects]); newCube.transform.position = new Vector3(Random.Range(-0.0f, 1.0f), 5.71f, -5.7f); newCube.name = newCube.name + "_" + cubeNum; newCube.GetComponent <Renderer>().material.color = new Color32((Byte)red, (Byte)green, (Byte)blue, 255); //Create a new data point ObjectPosition cubeDataPoint = new ObjectPosition(newCube.transform.position, newCube.name); cubeLogger.Log(cubeDataPoint); }
// Create and Log a vector void Start() { // Print the location where data will be written Debug.Log(Application.persistentDataPath + "/" + Configuration.Instance.GetAttemptId()); // Create new data logger with output files named DataCapture dataLogger = new Unity.AI.Simulation.Logger("DataCapture"); Vector3 examplePosition = new Vector3(0, 1, 2); //Create a new data point ObjectPosition objectPosition = new ObjectPosition(examplePosition, "ExampleObjectName"); dataLogger.Log(objectPosition); // Flush written objectPosition to file dataLogger.Flushall(); }
void Start() { // Create a specific logger for AppParams for debugging purposes paramLogger = new Unity.AI.Simulation.Logger("ParamReader"); cubeLogger = new Unity.AI.Simulation.Logger("CubeLogger"); simElapsedSeconds = 0; // NOTE: AppParams can be loaded anytime except during `RuntimeInitializeLoadType.BeforeSceneLoad` // If the simulation is running locally load app_param_0.json if (!Configuration.Instance.IsSimulationRunningInCloud()) { Configuration.Instance.SimulationConfig.app_param_uri = "file://" + Application.dataPath + "/StreamingAssets/app_param_0.json"; Debug.Log(Configuration.Instance.SimulationConfig.app_param_uri); } appParams = Configuration.Instance.GetAppParams <CubeAppParam>(); // Check if AppParam file was passed during command line execution if (appParams != null) { // Log AppParams to Player.Log file and Editor Console Debug.Log(appParams.ToString()); // Log AppParams to DataLogger paramLogger.Log(appParams); paramLogger.Flushall(); // Update the screen capture interval through an app-param float screenCaptureInterval = Mathf.Min(Mathf.Max(0, appParams.screenCaptureInterval), 100.0f); GameObject.FindGameObjectsWithTag("DataCapture")[0].GetComponent <CameraGrab>()._screenCaptureInterval = screenCaptureInterval; // ReplicateCube ReplicateCube(GameObject.FindGameObjectsWithTag("Cube")[0], appParams.replicateCube); // Set the Simulation exit time. quitAfterSeconds = appParams.quitAfterSeconds; } }