void Update() { // demo: press space to modify existing point positions and colors // TODO should do exporting in another thread, now it hangs mainthread while processing if (Input.GetKeyDown(KeyCode.Space) && !isSaving) { isSaving = true; // assign export settings var importSettings = new ImportSettings(); importSettings.batch = false; importSettings.exportFormat = PointCloudConverter.Structs.ExportFormat.UCPC; var outputFile = Path.Combine(Application.streamingAssetsPath, "export.ucpc"); importSettings.outputFile = outputFile; importSettings.packColors = false; importSettings.randomize = false; importSettings.writer = new UCPC(); int pointCount = binaryViewerDX11.GetPointCount(); importSettings.writer.InitWriter(importSettings, pointCount); // loop all points for (int i = 0, len = pointCount; i < len; i++) { binaryViewerDX11.points[i] += Random.insideUnitSphere * 0.25f; binaryViewerDX11.pointColors[i] = new Vector3(1 - binaryViewerDX11.pointColors[i].x, 1 - binaryViewerDX11.pointColors[i].y, 1 - binaryViewerDX11.pointColors[i].z); float x = binaryViewerDX11.points[i].x; float y = binaryViewerDX11.points[i].y; float z = binaryViewerDX11.points[i].z; float r = binaryViewerDX11.pointColors[i].x; float g = binaryViewerDX11.pointColors[i].y; float b = binaryViewerDX11.pointColors[i].z; importSettings.writer.AddPoint(i, x, y, z, r, g, b); } // update data to gpu binaryViewerDX11.UpdatePointData(); binaryViewerDX11.UpdateColorData(); Debug.Log("Saving file: " + outputFile); importSettings.writer.Save(); isSaving = false; } }
void Update() { // demo: press space to randomize new data if (Input.GetKeyDown(KeyCode.Space)) { // generate random example dataset, instead of this, you would load/generate your own data var randomPoints = new Vector3[totalPoints]; var randomColors = new Vector3[totalPoints]; for (int i = 0; i < totalPoints; i++) { randomPoints[i] = Random.insideUnitSphere * 15; var c = Random.ColorHSV(0, 1, 0, 1, 0, 1); randomColors[i] = new Vector3(c.r, c.g, c.b); } // after you have your own data, send them into viewer binaryViewerDX11.points = randomPoints; binaryViewerDX11.UpdatePointData(); binaryViewerDX11.pointColors = randomColors; binaryViewerDX11.UpdateColorData(); } }