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); } }
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(); }