Exemplo n.º 1
0
        public static async Task LoadDude(EngineContext engineContext)
        {
            var       mainPlugin = engineContext.RenderContext.RenderPassPlugins.OfType <MainPlugin>().FirstOrDefault();
            EffectOld effect     = engineContext.RenderContext.BuildEffect("SimpleSkinning")
                                   .Using(new BasicShaderPlugin("ShaderBase")
            {
                RenderPassPlugin = mainPlugin
            })
                                   .Using(new BasicShaderPlugin("TransformationWVP")
            {
                RenderPassPlugin = mainPlugin
            })
                                   .Using(new BasicShaderPlugin(new ShaderMixinSource()
            {
                new ShaderClassSource("AlbedoDiffuseBase"),
                new ShaderComposition("albedoDiffuse", new ShaderClassSource("ComputeColorTexture", TexturingKeys.DiffuseTexture, "TEXCOORD")),
                new ShaderComposition("albedoSpecular", new ShaderClassSource("ComputeColor")),             // TODO: Default values!
            })
            {
                RenderPassPlugin = mainPlugin
            })
                                   .Using(new BasicShaderPlugin("AlbedoFlatShading")
            {
                RenderPassPlugin = mainPlugin
            })
            ;

            var characterEntity = await AnimScript.LoadFBXModel(engineContext, "/global_data/fbx/test_mesh.hotei#");

            await AnimScript.AnimateFBXModel(engineContext, characterEntity);
        }
Exemplo n.º 2
0
        //[ParadoxScript]
        public static async Task <Entity> LoadDragon(EngineContext engineContext)
        {
            var renderingSetup = RenderingSetup.Singleton;

            renderingSetup.RegisterLighting(engineContext);

            var characterEntity = await AnimScript.LoadFBXModel(engineContext, "/global_data/gdc_demo/char/dragon_camera.hotei#");

            characterEntity.Name = "Dragon";
            Scheduler.Current.Add(() => AnimScript.AnimateFBXModel(engineContext, characterEntity, CaveSceneTotalTime, CaveSceneRestart));

            // Setup predefined specular intensities/power for dragon
            foreach (var entity in ParameterContainerExtensions.CollectEntityTree(characterEntity))
            {
                var meshComponent = entity.Get(ModelComponent.Key);
                if (meshComponent == null)
                {
                    continue;
                }

                foreach (var effectMesh in meshComponent.InstantiatedSubMeshes)
                {
                    effectMesh.Value.Parameters.Set(TessellationKeys.DesiredTriangleSize, 4.0f);

                    switch (effectMesh.Key.EffectData.Part)
                    {
                    case "skin":
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.4f);
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.4f);
                        break;

                    case "mouth":
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.3f);
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.3f);
                        break;

                    case "skin2":
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.5f);
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.5f);
                        break;

                    case "wing":
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.4f);
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.5f);
                        break;

                    case "tooth":
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.4f);
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.7f);
                        break;

                    case "eye":
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.7f);
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.7f);
                        break;

                    default:
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularPower, 0.3f);
                        effectMesh.Value.Parameters.Set(MaterialKeys.SpecularIntensity, 0.3f);
                        break;
                    }
                }
            }

            return(characterEntity);
        }