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}"); }
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); }
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(); }
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("-------------------"); } } }
// 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; } }
/// <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); }
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); }