public override void init() { Device d3dDevice = GuiController.Instance.D3dDevice; //Crear loader TgcSceneLoader loader = new TgcSceneLoader(); //Configurar MeshFactory customizado loader.MeshFactory = new CustomMeshShaderFactory(); //Cargar mesh //TgcScene scene = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "ModelosTgc\\Olla\\Olla-TgcScene.xml"); //mesh = (TgcMeshShader)scene.Meshes[0]; //Cargar mesh TgcScene scene = loader.loadSceneFromFile(GuiController.Instance.AlumnoEjemplosMediaDir + "Kamikaze3D\\Patrulla\\autoPoliciaEnEscenario-TgcScene.xml"); mesh = (TgcMeshShader)scene.Meshes[0]; //Cargar Shader de PhonhShading string compilationErrors; mesh.Effect = Effect.FromFile(d3dDevice, GuiController.Instance.ExamplesMediaDir + "Shaders\\PhongShading.fx", null, null, ShaderFlags.None, null, out compilationErrors); if (mesh.Effect == null) { throw new Exception("Error al cargar shader. Errores: " + compilationErrors); } //Configurar Technique mesh.Effect.Technique = "DefaultTechnique"; //Agregar evento para cargar valores de shader mesh.ShaderBegin += new TgcMeshShader.ShaderBeginHandler(mesh_ShaderBegin); //Modifier para variables de shader GuiController.Instance.Modifiers.addVertex3f("LightPosition", new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000), new Vector3(0, 400, 0)); GuiController.Instance.Modifiers.addColor("AmbientColor", Color.White); GuiController.Instance.Modifiers.addColor("DiffuseColor", Color.Green); GuiController.Instance.Modifiers.addColor("SpecularColor", Color.Red); GuiController.Instance.Modifiers.addFloat("SpecularPower", 1, 100, 16); GuiController.Instance.Modifiers.addVertex3f("MeshPos", new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000), new Vector3(0, 0, 0)); //Crear caja para indicar ubicacion de la luz lightBox = TgcBox.fromSize(new Vector3(50, 50, 50), Color.Yellow); //Centrar camara rotacional respecto a este mesh GuiController.Instance.RotCamera.targetObject(mesh.BoundingBox); }
/// <summary> /// Evento que se llama antes de ejecutar el shader de un mesh particular. /// Ideal para cargar parametros de shader propios de cada mesh /// </summary> public void mesh_ShaderBegin(TgcMeshShader mesh) { //nada en este ejemplo }