Exemple #1
0
        public override object Process(FileInfo myInfo, string FilePath)
        {
            AssimpContext  importer    = new AssimpContext();
            Scene          scene       = importer.ImportFile(FilePath);
            ModelComponent myComponent = new ModelComponent();

#if (DisplayModelStats)
            string result = DebugUtil.DumpInformationAboutObject(6, scene);
            Debug.WriteLine(result);
#endif
            if (scene.Textures.Count > 0)
            {
            }
            if (scene.MaterialCount != 0)
            {
                myComponent.myMaterials = new Material[scene.MaterialCount];

                Parallel.For(0, scene.MaterialCount, delegate(int i)
                {
                    myComponent.myMaterials[i] = new Material();
                    myComponent.myMaterials[i].ColorAmbient = new Vector4(scene.Materials[i].ColorAmbient.R, scene.Materials[i].ColorAmbient.G, scene.Materials[i].ColorAmbient.B, scene.Materials[i].ColorAmbient.A);
                    var TextureAmbient = scene.Materials[i].TextureAmbient;
                    var Result         = DebugUtil.DumpInformationAboutObject(10, scene.Materials[i]);
                    Debug.WriteLine(Result);

                    /*myComponent.myMaterials[i].BlueComponent = scene.Materials[i].BlueComponent;
                    *  myComponent.myMaterials[i].BlueComponent = scene.Materials[i].BlueComponent;
                    *  myComponent.myMaterials[i].BlueComponent = scene.Materials[i].BlueComponent;
                    *  myComponent.myMaterials[i].BlueComponent = scene.Materials[i].BlueComponent;
                    *  myComponent.myMaterials[i].BlueComponent = scene.Materials[i].BlueComponent;
                    *  myComponent.myMaterials[i].BlueComponent = scene.Materials[i].BlueComponent;
                    *  myComponent.myMaterials[i].BlueComponent = scene.Materials[i].BlueComponent;
                    *  myComponent.myMaterials[i].BlueComponent = scene.Materials[i].BlueComponent;
                    *  myComponent.myMaterials[i].BlueComponent = scene.Materials[i].BlueComponent;
                    *  myComponent.myMaterials[i].BlueComponent = scene.Materials[i].BlueComponent;*/
                    //if(scene.Materials[i].HasTextureAmbient)
                    //  myComponent.myMaterials[i].

                    // myComponent.myMaterials[i].
                });
            }



            myComponent.ModelIDToIndices  = new uint[scene.Meshes.Count][];
            myComponent.ModelIDToVertices = new float[scene.Meshes.Count][];
            Parallel.For(0, scene.Meshes.Count, delegate(int i)
            {
                var myMesh        = scene.Meshes[i];
                int VerticesCount = myMesh.Vertices.Count;
                myComponent.ModelIDToVertices[i] = new float[VerticesCount * 3];
                myComponent.ModelIDToIndices[i]  = (uint[])myMesh.GetUnsignedIndices().Clone();
                var Result = myMesh.Vertices;
                for (int g = 0; g < VerticesCount; g++)
                {
                    myComponent.ModelIDToVertices[i][g * 3 + 0] = Result[g].X;
                    myComponent.ModelIDToVertices[i][g * 3 + 1] = Result[g].Y;
                    myComponent.ModelIDToVertices[i][g * 3 + 2] = Result[g].Z;
                }
            });
            return(myComponent);
        }