Пример #1
0
        /// <summary>
        ///     Agrega El/Los materiales, cambia el tipo de VertexElement
        /// </summary>
        /// <param name="objMaterialLoader">Clase ObjMaterialLader</param>
        /// <returns>MeshBuilder</returns>
        public MeshBuilder AddMaterials(ObjMaterialsLoader objMaterialLoader)
        {
            //create material
            // TODO
            MaterialsArray = new List <TgcObjMaterialAux>();
            objMaterialLoader.ListObjMaterialMesh.ForEach((objMaterialMesh =>
            {
                MaterialsArray.Add(createTextureAndMaterial(objMaterialMesh, objMaterialLoader.currentDirectory));
            }
                                                           ));

            //set nueva mesh strategy
            ChargueBufferStrategy = new ChargueBufferDiffuseMapStrategy();  // TODO ver que pasa caundo viene ligthmap
            return(this);
        }
Пример #2
0
 public TgcObjLoader()
 {
     Strategies = new List <ObjParseStrategy>();
     Strategies.Add(new AddShadowStrategy());
     Strategies.Add(new AddUsemtlStrategy());
     Strategies.Add(new CreateNewMeshStrategy());
     Strategies.Add(new CreateNormalStrategy());
     Strategies.Add(new CreateFaceStrategy());
     Strategies.Add(new CreateTextCoordStrategy());
     Strategies.Add(new CreateVertexStrategy());
     Strategies.Add(new NoOperationStrategy());
     ListMtllib         = new List <string>();
     MeshBuilder        = new MeshBuilder();
     ObjMaterialsLoader = new ObjMaterialsLoader();
     ObjMeshContainer   = new ObjMeshContainer();
 }
Пример #3
0
        public void GetListOfMaterials(string[] lines, string path)
        {
            //se obtiene puramente todas las lineas que son de material
            var linesFiltered = FilterByKeyword(lines, MTLLIB);

            //nos fijamos si tiene material
            if (linesFiltered.Length == 0)
            {
                return;
            }
            //agregamos la ruta de la carpeta donde se encuentran los materiales
            ObjMaterialsLoader.SetDirectoryPathMaterial(path);
            //
            foreach (var line in linesFiltered)
            {
                SetMtllib(line);
            }
            //Se hace parse de los materiales
            ObjMaterialsLoader.LoadMaterialsFromFiles(path, ListMtllib);  //TODO ver si devuelve una lista de materiales o le pasamos el objmesh como parametro
                                                                          // MeshBuilder.AddMaterials(ObjMaterialsLoader);
        }