コード例 #1
0
ファイル: OBJFileReader.cs プロジェクト: polytronicgr/Demo
 static Vector3 readPos(string posLine)
 {
     return(OBJFileReader.readVector3(posLine));
 }
コード例 #2
0
ファイル: OBJFileReader.cs プロジェクト: polytronicgr/Demo
 static Vector3 readNormal(string normalLine)
 {
     // vn # # #
     return(OBJFileReader.readVector3(normalLine));
 }
コード例 #3
0
ファイル: MaterialManager.cs プロジェクト: polytronicgr/Demo
        public static Material loadMaterial(string materialFileName)
        {
            string       fullPath   = dataDir + materialFileName;
            StreamReader sourceFile = new StreamReader(fullPath);

            string   line;
            string   materialName  = null;
            bool     existingFound = false;
            Material newMaterial   = null;

            char[] space = { ' ' };

            // First check if we already have this material
            do
            {
                line = sourceFile.ReadLine();
                if (line == null)
                {
                    break;
                }
                else if (line.Contains("newmtl"))
                {
                    materialName = line.Split(space)[1];
                    break;
                }
            }while (line != null);


            newMaterial = getMaterialByName(materialName);

            if (newMaterial != null)
            {
                sourceFile.Close();
                return(newMaterial);
            }
            else
            {
                newMaterial = new Material();
                newMaterial.materialName = materialName;
            }

            // Read rest of the file

            // use . as separator instead of system default
            System.Globalization.NumberFormatInfo nfi = new System.Globalization.CultureInfo("en-US", false).NumberFormat;

            do
            {
                line = sourceFile.ReadLine();
                if (line == null)
                {
                    break;
                }

                if (line.Contains("#"))
                {
                    // comment
                }
                else if (line.Contains("map_Kd"))
                {
                    // map_Kd filename.png
                    newMaterial.textureName    = line.Split(space)[1];
                    newMaterial.textureGLIndex = loadTexture(newMaterial.textureName);
                }
                else if (line.Contains("illum"))
                {
                    newMaterial.illumination = Single.Parse(line.Split(space)[1], nfi);
                }
                else if (line.Contains("Ka"))
                {
                    newMaterial.alpha = OBJFileReader.readVector3(line);
                }
                else if (line.Contains("Kd"))
                {
                    newMaterial.diffuse = OBJFileReader.readVector3(line);
                }
                else if (line.Contains("Ks"))
                {
                    newMaterial.specular = OBJFileReader.readVector3(line);
                }
            } while (line != null);


            sourceFile.Close();

            materials.Add(newMaterial);

            return(newMaterial);
        }