Example #1
0
        public void CreateGeometry(string scenePath, List <Geometry> output, Dictionary <string, Shader> shaders)
        {
            Vector3 pos = StringUtils.StringToVector3(position);
            Shader  s   = null;

            if (shaders.ContainsKey(shader))
            {
                s = shaders[shader];
            }

            if (type == "Sphere")
            {
                output.Add(new Sphere(pos, radius, s));
                return;
            }
            else if (type == "Mesh")
            {
                var    fileInfo = new System.IO.FileInfo(scenePath);
                string p        = System.IO.Path.Combine(fileInfo.DirectoryName, path);

                Vector3 rot = StringUtils.StringToVector3(euler);
                Vector3 sca = StringUtils.StringToVector3(scale);

                var triangles = MeshLoader.LoadMesh(p, pos, rot, sca, s);

                foreach (var tri in triangles)
                {
                    output.Add(tri);
                }
                return;
            }
            Log.Warn($"几何体创建失败!不确定的几何体类型:{type}");
        }
Example #2
0
        public override void GenerateGeometry(string scenePath, Scene scene, List <Material> materials, List <Geometry> output)
        {
            var    fileInfo = new System.IO.FileInfo(scenePath);
            string p        = System.IO.Path.Combine(fileInfo.DirectoryName, path);

            var triangles = MeshLoader.LoadMesh(p, position, euler, scale, materials);

            output.AddRange(triangles);
        }
Example #3
0
        public override void LoadContent()
        {
            this.cameraCB = new ConstantBuffer <PerFrameCB>(() => { return(new PerFrameCB(this.fpsCam.ViewMatrix * this.fpsCam.ProjectionMatrix, this.lightDirection, this.fpsCam.Position, this.orenNayarRoughness, (int)this.myDiffuse, (int)this.mySpecular, this.ColorObject)); }, 0, PipelineStages.VertexShader);

            Shader shader = new Shader();

            shader.SetVertexShader("Lightning.hlsl", InputLayoutCreator.PosTexCoordNormal);
            shader.SetPixelShader("Lightning.hlsl");
            Material material = new Material(shader);

            this.modelMesh = MeshLoader.LoadMesh(@"..\..\..\..\ProjectIglooSharpTestModels\Bunny\Bunny.obj", material);
            this.objectCB  = new ConstantBuffer <PerObjectCB>(() => { return(new PerObjectCB(Matrix.Scaling(1.0f))); }, 1, PipelineStages.VertexShader);
            this.modelMesh.Material.ConstantBuffers.Add(this.objectCB);

            base.LoadContent();
        }
Example #4
0
        private static AbstractTriangleMesh LoadMesh()
        {
            while (true)
            {
                Console.WriteLine("Press (I) to load indexed face list, (L) to load laced ring or (E) to exit program");
                string line = Console.ReadLine();

                if (line.ToLower() == "i")
                {
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Path to mesh:");
                    line = Console.ReadLine();
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Start loading mesh");
                    AbstractTriangleMesh mesh = MeshLoader.LoadMesh <IFLTriangleMesh>(line);
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Mesh successfully loaded");
                    return(mesh);
                }
                else if (line.ToLower() == "l")
                {
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Path to mesh:");
                    line = Console.ReadLine();
                    Console.WriteLine("Start loading mesh");
                    AbstractTriangleMesh mesh = MeshLoader.LoadMesh <LRTriangleMesh>(line);
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Mesh successfully loaded");
                    return(mesh);
                }
                else if (line.ToLower() == "e")
                {
                    Environment.Exit(0);
                }
                else
                {
                    Console.WriteLine("-------------------");
                    Console.WriteLine("Command not recognized");
                    Console.WriteLine("-------------------");
                }
            }
        }
Example #5
0
    // Update is called once per frame
    async void Update()
    {
        if (!_updateInProgress &&
            Query != null &&
            EnvironmentMaterial != null &&
            (!_lastMeshUpdateTime.HasValue || DateTime.Now - _lastMeshUpdateTime.Value > TimeSpan.FromSeconds(2)))
        {
            _updateInProgress = true;
            EnvironmentObservation observation = await Query.ComputeLatestEnvironmentObservationAsync(EnvironmentObservationTopology.PointCloud);

            MeshLoader.MeshData?  meshData            = null;
            ObjectAnchorsLocation?observationLocation = null;

            await Task.Run(() =>
            {
                var vertexPositions = new System.Numerics.Vector3[observation.VertexCount];
                var vertexNormals   = new System.Numerics.Vector3[vertexPositions.Length];
                var triangleIndices = new uint[observation.TriangleIndexCount];
                observation.GetVertexPositions(vertexPositions);
                observation.GetVertexNormals(vertexNormals);
                observation.GetTriangleIndices(triangleIndices);
                meshData = new MeshLoader.MeshData(vertexPositions, vertexNormals, triangleIndices);

#if SPATIALCOORDINATESYSTEM_API_PRESENT
                observationLocation = observation.Origin.ToSpatialCoordinateSystem().TryGetTransformTo(ObjectAnchorsWorldManager.WorldOrigin)?.ToUnityLocation();
#endif
            });


            if (observationLocation.HasValue && meshData.HasValue)
            {
                MeshLoader.LoadMesh(_meshFilter.mesh, meshData.Value);
                transform.SetPositionAndRotation(observationLocation.Value.Position, observationLocation.Value.Orientation);
            }

            _lastMeshUpdateTime = DateTime.Now;
            _updateInProgress   = false;
        }
    }
Example #6
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            IFLTriangleMesh             iflTriangleMesh = MeshLoader.LoadMesh <IFLTriangleMesh>(inputPath);
            IConverter <LRTriangleMesh> converter       = Converter.GetSpecificConverter <IFLTriangleMesh, LRTriangleMesh>(iflTriangleMesh);

            lrTriangleMesh = converter.Convert();

            base.Initialize();

            BasicEffect e = new BasicEffect(GraphicsDevice);

            e.VertexColorEnabled = true;

            e.View = Matrix.CreateLookAt(new Vector3(0, 0, 5), new Vector3(0, 0, 0), Vector3.Up);

            float aspect = GraphicsDevice.Viewport.AspectRatio;

            e.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(60f), aspect, 1, 100);
            effect       = e;

            this.IsMouseVisible = true;
            mouseStatePrevious  = Mouse.GetState();
            keyStateCurrent     = Keyboard.GetState();

            this.Window.AllowUserResizing = true;

            RasterizerState s = new RasterizerState();

            s.CullMode = CullMode.None;
            GraphicsDevice.RasterizerState = s;

            int vertex = 0;

            currentCorner = lrTriangleMesh.VC(vertex);

            Vector3 cubePos = new Vector3((float)lrTriangleMesh.V[vertex].X, (float)lrTriangleMesh.V[vertex].Y, (float)lrTriangleMesh.V[vertex].Z);

            currentCube = new Cube(new Vector3(0.01f, 0.01f, 0.01f), cubePos);
        }
Example #7
0
        protected override void Load(ResourceDesc resourceDescription)
        {
            MeshResourceDesc desc = (MeshResourceDesc)resourceDescription;

            Mesh = MeshLoader.LoadMesh(resourceDescription.FileName);
        }
        public override void Load(StreamReader stream)
        {
            MeshLoader loader = new MeshLoader();

            Data = loader.LoadMesh(stream);
        }