public virtual async Task <IPointCloud> ReadPointCloudFromFileAsync(IAssetImporterExporter assetImporterExporter, string filePath)
        {
            var scene = await assetImporterExporter.ImportFileAsync(filePath);

            var mesh     = scene.Meshes.First();
            var vertices = new List <Vertex>();

            for (int i = 0; i < scene.Meshes.First().Points.Count; ++i)
            {
                var vertex = new Vertex(mesh.Points[i], mesh.Normals[i], mesh.Colors[i].ToSystemColor());
                vertices.Add(vertex);
            }

            return(new PointCloud(vertices.ToArray(), null, filePath));
        }
        public virtual Task WritePointCloudToFileAsync(IAssetImporterExporter assetImporterExporter, IPointCloud pointCloud, string filePath)
        {
            var scene = PointCloudToSceneAdapter.GenerateSceneFromPointCloud(pointCloud);

            return(assetImporterExporter.ExportFileAsync(scene, filePath, true));
        }