private void AddTexturedMesh( MeshData meshData, ImageSharpTexture texData, ImageSharpTexture alphaTexData, MaterialPropsAndBuffer materialProps, Vector3 position, Quaternion rotation, Vector3 scale, string name) { TexturedMesh mesh = new TexturedMesh(name, meshData, texData, alphaTexData, materialProps ?? CommonMaterials.Brick); mesh.Transform.Position = position; mesh.Transform.Rotation = rotation; mesh.Transform.Scale = scale; _scene.AddRenderable(mesh); }
static CommonMaterials() { Brick = new MaterialPropsAndBuffer(new MaterialProperties { SpecularIntensity = new Vector3(0.2f), SpecularPower = 10f }) { Name = "Brick" }; Vase = new MaterialPropsAndBuffer(new MaterialProperties { SpecularIntensity = new Vector3(1.0f), SpecularPower = 10f }) { Name = "Vase" }; Reflective = new MaterialPropsAndBuffer(new MaterialProperties { SpecularIntensity = new Vector3(0.2f), SpecularPower = 10f, Reflectivity = 0.3f }) { Name = "Reflective" }; }
private void AddSponzaAtriumObjects(CommandList cl) { ObjParser parser = new ObjParser(); using (FileStream objStream = File.OpenRead(AssetHelper.GetPath("Models/SponzaAtrium/sponza.obj"))) { ObjFile atriumFile = parser.Parse(objStream); MtlFile atriumMtls; using (FileStream mtlStream = File.OpenRead(AssetHelper.GetPath("Models/SponzaAtrium/sponza.mtl"))) { atriumMtls = new MtlParser().Parse(mtlStream); } foreach (ObjFile.MeshGroup group in atriumFile.MeshGroups) { ConstructedMeshInfo mesh = atriumFile.GetMesh(group); MaterialDefinition materialDef = atriumMtls.Definitions[mesh.MaterialName]; ImageSharpTexture overrideTextureData = null; ImageSharpTexture alphaTexture = null; MaterialPropsAndBuffer materialProps = CommonMaterials.Brick; if (materialDef.DiffuseTexture != null) { string texturePath = AssetHelper.GetPath("Models/SponzaAtrium/" + materialDef.DiffuseTexture); overrideTextureData = LoadTexture(texturePath, true); } if (materialDef.AlphaMap != null) { string texturePath = AssetHelper.GetPath("Models/SponzaAtrium/" + materialDef.AlphaMap); alphaTexture = LoadTexture(texturePath, false); } if (materialDef.Name.Contains("vase")) { materialProps = CommonMaterials.Vase; } AddTexturedMesh(cl, mesh, overrideTextureData, alphaTexture, materialProps, Vector3.Zero, Quaternion.Identity, new Vector3(0.1f)); } } }