Exemplo n.º 1
0
        public void FillScene(Assimp.Scene scene, TEX1 textures, string fileDir)
        {
            textures.DumpTextures(fileDir);

            foreach (Material mat in m_Materials)
            {
                Assimp.Material assMat = new Assimp.Material();

                if (mat.TextureIndices[0] != -1)
                {
                    int texIndex = mat.TextureIndices[0];
                    //texIndex = m_TexRemapBlock[texIndex];
                    string texPath = Path.Combine(fileDir, textures[texIndex].Name + ".png");

                    Assimp.TextureSlot tex = new Assimp.TextureSlot(texPath, Assimp.TextureType.Diffuse, 0,
                                                                    Assimp.TextureMapping.FromUV, 0, 1.0f, Assimp.TextureOperation.Add,
                                                                    textures[texIndex].WrapS.ToAssImpWrapMode(), textures[texIndex].WrapT.ToAssImpWrapMode(), 0);

                    assMat.AddMaterialTexture(ref tex);
                }

                if (mat.MaterialColors[0] != null)
                {
                    assMat.ColorDiffuse = mat.MaterialColors[0].Value.ToColor4D();
                }

                if (mat.AmbientColors[0] != null)
                {
                    assMat.ColorAmbient = mat.AmbientColors[0].Value.ToColor4D();
                }

                scene.Materials.Add(assMat);
            }
        }
Exemplo n.º 2
0
        public MAT3(Assimp.Scene scene, TEX1 textures, SHP1 shapes)
        {
            InitLists();

            for (int i = 0; i < scene.MeshCount; i++)
            {
                Assimp.Material    meshMat     = scene.Materials[scene.Meshes[i].MaterialIndex];
                Materials.Material bmdMaterial = new Material();

                bool hasVtxColor0 = shapes.Shapes[i].AttributeData.CheckAttribute(GXVertexAttribute.Color0);
                int  texIndex     = -1;
                if (meshMat.HasTextureDiffuse)
                {
                    string texName = Path.GetFileNameWithoutExtension(meshMat.TextureDiffuse.FilePath);
                    texIndex = textures.Textures.IndexOf(textures[texName]);
                }

                bmdMaterial.SetUpTev(meshMat.HasTextureDiffuse, hasVtxColor0, texIndex);

                m_Materials.Add(bmdMaterial);
                m_RemapIndices.Add(i);
                m_MaterialNames.Add(meshMat.Name);
            }

            FillMaterialDataBlocks();
        }