Пример #1
0
        public static List <nvmModel> LoadPointCloud()
        {
            string header;

            string filePath      = Path.Combine($"..\\..\\..\\Temp", $"Result.nvm");
            var    subjectString = File.ReadAllText(filePath);
            var    lineArray     = subjectString.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            var    resultList    = new List <nvmModel>();

            for (int i = 1; i < lineArray.Count();)
            {
                var model = new nvmModel();
                model.imageCount = int.Parse(lineArray[i++]);

                if (model.imageCount == 0)
                {
                    break;
                }

                i = AddCameraModelFromFile(i, lineArray, model.imageCount, model);


                model.pointCount = int.Parse(lineArray[i++]);
                if (model.pointCount == 0)
                {
                    break;
                }

                i = AddPointModelFromFile(i, lineArray, model.pointCount, model);

                resultList.Add(model);
            }


            return(resultList);
        }
Пример #2
0
        private static int AddCameraModelFromFile(int iter, string[] lineArray, int cameraCount, nvmModel model)
        {
            int x = 0;

            for (x = iter; x < iter + cameraCount; x++)
            {
                var camera     = lineArray[x].Split();
                var imageModel = new nvmImageModel()
                {
                    fileName    = camera[0],
                    focalLength = float.Parse(camera[1]),
                    quaternion  = new Quaternion(
                        float.Parse(camera[2]),
                        float.Parse(camera[3]),
                        float.Parse(camera[4]),
                        float.Parse(camera[5])
                        ),
                    cameraCenter = new Vector3(
                        float.Parse(camera[6]),
                        float.Parse(camera[7]),
                        float.Parse(camera[8])
                        ),
                    radialDistortion = float.Parse(camera[9])
                };
                model.listImageModel.Add(imageModel);
            }
            return(x);
        }
Пример #3
0
        private static int AddPointModelFromFile(int i, string[] lineArray, int pointCount, nvmModel model)
        {
            int y = 0;

            for (y = i; y < i + model.pointCount; y++)
            {
                var camera     = lineArray[y].Split();
                var pointModel = new nvmPointModel()
                {
                    position = new Vector3(
                        float.Parse(camera[0]),
                        float.Parse(camera[1]),
                        float.Parse(camera[2])
                        ),
                    color = new Vector3(
                        float.Parse(camera[3]),
                        float.Parse(camera[4]),
                        float.Parse(camera[5])
                        )
                };
                model.listPointModel.Add(pointModel);
            }
            return(y);
        }