示例#1
0
        // Initialize the effects so the models look reasonable and the lighting
        // Is as it is in the directx Mesh viewer
        private void InitializeEffects(Model model)
        {
            foreach (ModelMesh mesh in model.Meshes)
            {
                foreach (Effect ef in mesh.Effects)
                {
                    effects.Add(ef);
                    ef.Parameters["View"].SetValue(cam.View);
                    ef.Parameters["EyePosition"].SetValue(Matrix.Invert(cam.View).Translation);
                    ef.Parameters["Projection"].SetValue(cam.Projection);
                    ef.Parameters["World"].SetValue(cam.ModelWorld);

                    if (ef is BasicPaletteEffect)
                    {
                        BasicPaletteEffect effect = (BasicPaletteEffect)ef;

                        effect.EnableDefaultLighting();
                        effect.DirectionalLight0.Direction = new Vector3(0, 0, -1);
                    }
                    else if (ef is BasicEffect)
                    {
                        BasicEffect effect = (BasicEffect)ef;
                        effect.EnableDefaultLighting();
                        effect.DirectionalLight0.Direction = new Vector3(0, 0, -1);
                        effect.DirectionalLight1.Enabled   = false;
                        effect.DirectionalLight2.Enabled   = false;
                        effect.AmbientLightColor           = Color.Black.ToVector3();
                        effect.EmissiveColor = Color.Black.ToVector3();
                    }
                }
            }
        }