Exemplo n.º 1
0
        static public AssimpVolume LoadFromFile(string filename)
        {
            string path = Path.Combine("Assets", "Models", filename);

            AssimpContext importer = new AssimpContext();

            NormalSmoothingAngleConfig normalSmoothing = new NormalSmoothingAngleConfig(66.0f);

            importer.SetConfig(normalSmoothing);

            LogStream logStream = new LogStream
                                  (
                delegate(string message, string userData)
            {
                Console.Write(message);
            }
                                  );

            logStream.Attach();

            Scene model = importer.ImportFile(path, PostProcessPreset.TargetRealTimeMaximumQuality);
            Mesh  mesh  = model.Meshes[0];

            AssimpVolume v = new AssimpVolume();

            List <Vector3> newVertices = new List <Vector3>();

            foreach (Assimp.Vector3D vert in mesh.Vertices)
            {
                newVertices.Add(new Vector3(vert.X, vert.Y, vert.Z));
            }
            v.vertices = newVertices.ToArray();

            v.indices = mesh.GetIndices();

            if (mesh.HasNormals)
            {
                v.generateNormals = false;
                List <Vector3> newNormals = new List <Vector3>();
                foreach (Assimp.Vector3D n in mesh.Normals)
                {
                    newNormals.Add(new Vector3(n.X, n.Y, n.Z));
                }
                v.normals = newNormals.ToArray();
            }

            if (mesh.HasTextureCoords(0))
            {
                List <Vector2> newTextureCoords = new List <Vector2>();
                foreach (Assimp.Vector3D tc in mesh.TextureCoordinateChannels[0])
                {
                    newTextureCoords.Add(new Vector2(tc.X, tc.Y));
                }
                v.textureCoords = newTextureCoords.ToArray();
            }

            if (mesh.HasVertexColors(0))
            {
                List <Vector3> newColors = new List <Vector3>();
                foreach (Assimp.Color4D c in mesh.VertexColorChannels[0])
                {
                    newColors.Add(new Vector3(c.R, c.G, c.B));
                }
                v.colors = newColors.ToArray();
            }

            importer.Dispose();
            return(v);
        }
Exemplo n.º 2
0
		static public AssimpVolume LoadFromFile(string filename)
		{
			string path = Path.Combine("Assets", "Models", filename);

			AssimpContext importer = new AssimpContext();

			NormalSmoothingAngleConfig normalSmoothing = new NormalSmoothingAngleConfig(66.0f);
			importer.SetConfig(normalSmoothing);

			LogStream logStream = new LogStream
			(
				delegate(string message, string userData)
				{
					Console.Write(message);
				}
			);
			logStream.Attach();

			Scene model = importer.ImportFile(path, PostProcessPreset.TargetRealTimeMaximumQuality);
			Mesh mesh = model.Meshes[0];

			AssimpVolume v = new AssimpVolume();

			List<Vector3> newVertices = new List<Vector3>();
			foreach (Assimp.Vector3D vert in mesh.Vertices)
			{
				newVertices.Add(new Vector3(vert.X, vert.Y, vert.Z));
			}
			v.vertices = newVertices.ToArray();

			v.indices = mesh.GetIndices();

			if (mesh.HasNormals)
			{
				v.generateNormals = false;
				List<Vector3> newNormals = new List<Vector3>();
				foreach (Assimp.Vector3D n in mesh.Normals)
				{
					newNormals.Add(new Vector3(n.X, n.Y, n.Z));
				}
				v.normals = newNormals.ToArray();
			}

			if (mesh.HasTextureCoords(0))
			{
				List<Vector2> newTextureCoords = new List<Vector2>();
				foreach (Assimp.Vector3D tc in mesh.TextureCoordinateChannels[0])
				{
					newTextureCoords.Add(new Vector2(tc.X, tc.Y));
				}
				v.textureCoords = newTextureCoords.ToArray();
			}

			if (mesh.HasVertexColors(0))
			{
				List<Vector3> newColors = new List<Vector3>();
				foreach (Assimp.Color4D c in mesh.VertexColorChannels[0])
				{
					newColors.Add(new Vector3(c.R, c.G, c.B));
				}
				v.colors = newColors.ToArray();
			}

			importer.Dispose();
			return v;
		}