예제 #1
0
 public void AddTexture(Textura tt)
 {
     LTextura.Add(tt);
 }
예제 #2
0
        //-------------------------------
        public bool LerFicheiro(string ficheiro)
        {
            Console.WriteLine("lerFicheiro", ficheiro);

            // Formato OBJ
            // codigo de leitura do ficheiro!!!
            // Abrir o Ficheiro
            // # comentário - esquecer a linha
            // v  x  y   z
            try
            {
                using (StreamReader sr = new StreamReader(ficheiro))
                {
                    string linha;
                    bool   Primeira_Passagem = true;


                    // Lê linha por linha até o final do arquivo
                    while ((linha = sr.ReadLine()) != null)
                    {
                        //Console.WriteLine(linha);

                        string[] Dados = linha.Split(' ');
                        if (Dados.Length != 0)
                        {
                            /*
                             * for (int i = 0; i< Dados.Length;i++)
                             * {
                             *  Console.WriteLine("Dados[" + i + "]=" + Dados[i]);
                             * }
                             * Console.WriteLine();
                             */
                            switch (Dados[0])
                            {
                            case "v":
                                //  Console.WriteLine("Tenho um vertice");

                                double X = Convert.ToDouble(Dados[1], System.Globalization.CultureInfo.InvariantCulture);
                                double Y = Convert.ToDouble(Dados[2], System.Globalization.CultureInfo.InvariantCulture);
                                double Z = Convert.ToDouble(Dados[3], System.Globalization.CultureInfo.InvariantCulture);


                                Vertice V = new Vertice(X, Y, Z);
                                LV.Add(V);
                                if (Primeira_Passagem)
                                {
                                    Xmin = Xmax = X;
                                    Ymin = Ymax = Y;
                                    Zmin = Zmax = Z;
                                    //*******
                                    Primeira_Passagem = false;
                                }
                                else
                                {
                                    Xmin = Math.Min(Xmin, X);
                                    Xmax = Math.Max(Xmax, X);
                                    Ymin = Math.Min(Ymin, Y);
                                    Ymax = Math.Max(Ymax, Y);
                                    Zmin = Math.Min(Zmin, Z);
                                    Zmax = Math.Max(Zmax, Z);
                                    // Y, Z
                                }
                                break;

                            case "f":
                                Face F = new Face();
                                for (int i = 1; i < 4; i++)
                                {
                                    string[] linha_face = Dados[i].Split('/');
                                    int      V1         = Convert.ToInt32(linha_face[0]);
                                    int      ft1        = Convert.ToInt32(linha_face[1]);
                                    F.Add(LV[V1 - 1]);
                                    F.AddTexture(LT[ft1 - 1]);
                                }
                                LF.Add(F);
                                break;

                            case "vt":
                                Textura textura = new Textura(Convert.ToDouble(Dados[1], System.Globalization.CultureInfo.InvariantCulture), Convert.ToDouble(Dados[2], System.Globalization.CultureInfo.InvariantCulture));
                                LT.Add(textura);
                                break;

                            case "#":
                                //Console.WriteLine("Nao faças nada comentário");
                                break;

                            default:
                                break;
                            }
                        }
                        //Console.WriteLine(teste);
                    }
                    sr.Close();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Problema: " + ex.Message);
                Console.WriteLine("Problema: " + ex);
            }
            //Console.WriteLine("XMin = " + Xmin);
            //Console.WriteLine("XMax = " + Xmax);

            // Fechar o Ficheiro
            return(true);
        }