public void ApplyLighting(LightingDefinition lightingDefinition, bool blendTrilight = true)
    {
        Trilight trilight = new Trilight();

        trilight.sky     = lightingDefinition.AmbientSkyColor;
        trilight.equator = lightingDefinition.AmbientEquatorColor;
        trilight.ground  = lightingDefinition.AmbientGroundColor;
        Trilight trilight2 = trilight;
        LightingDefinitionOverride lightingDefinitionOverride = UnityEngine.Object.FindObjectOfType <LightingDefinitionOverride>();

        if (lightingDefinitionOverride != null && lightingDefinitionOverride.TrilightOverrides != null)
        {
            for (int i = 0; i < lightingDefinitionOverride.TrilightOverrides.Length; i++)
            {
                if (lightingDefinitionOverride.TrilightOverrides[i].LightingDef.Id == lightingDefinition.Id)
                {
                    trilight2.sky     = lightingDefinitionOverride.TrilightOverrides[i].Trilight.sky;
                    trilight2.equator = lightingDefinitionOverride.TrilightOverrides[i].Trilight.equator;
                    trilight2.ground  = lightingDefinitionOverride.TrilightOverrides[i].Trilight.ground;
                    break;
                }
            }
        }
        setTrilight(trilight2, blendTrilight);
        setSkybox(lightingDefinition.SkyboxMaterialKey);
    }
Esempio n. 2
0
        public static MToonMaterial MToonFromGltf(glTFMaterial material, List <Texture> textures, VRMC_materials_mtoon extension)
        {
            var mtoon = new MToonMaterial(material.name);

            var Meta = new MetaDefinition
            {
                Implementation = "Santarh/MToon",
            };
            var Color = new ColorDefinition
            {
                LitColor             = material.pbrMetallicRoughness.baseColorFactor.ToLinearColor(Nan),
                LitMultiplyTexture   = material.pbrMetallicRoughness.baseColorTexture?.index.GetTexture(textures),
                ShadeColor           = extension.ShadeFactor.ToLinearColor(Nan),
                ShadeMultiplyTexture = extension.ShadeMultiplyTexture.GetTexture(textures),
                CutoutThresholdValue = material.alphaCutoff,
            };
            var Outline = new OutlineDefinition
            {
                OutlineColorMode              = (VrmLib.MToon.OutlineColorMode)extension.OutlineColorMode,
                OutlineColor                  = extension.OutlineFactor.ToLinearColor(Nan),
                OutlineLightingMixValue       = extension.OutlineLightingMixFactor.Value,
                OutlineScaledMaxDistanceValue = extension.OutlineScaledMaxDistanceFactor.Value,
                OutlineWidthMode              = (VrmLib.MToon.OutlineWidthMode)extension.OutlineWidthMode,
                OutlineWidthValue             = extension.OutlineWidthFactor.Value,
                OutlineWidthMultiplyTexture   = extension.OutlineWidthMultiplyTexture.GetTexture(textures),
            };
            var Emission = new EmissionDefinition
            {
                EmissionColor = material.emissiveFactor.ToLinearColor(Nan),
            };

            if (material.emissiveTexture != null)
            {
                Emission.EmissionMultiplyTexture = material.emissiveTexture.index.GetTexture(textures);
            }

            var Lighting = new LightingDefinition
            {
                LightingInfluence = new LightingInfluenceDefinition
                {
                    GiIntensityValue           = extension.GiIntensityFactor.Value,
                    LightColorAttenuationValue = extension.LightColorAttenuationFactor.Value,
                },
                LitAndShadeMixing = new LitAndShadeMixingDefinition
                {
                    ShadingShiftValue = extension.ShadingShiftFactor.Value,
                    ShadingToonyValue = extension.ShadingToonyFactor.Value,
                },
                Normal = new NormalDefinition
                {
                },
            };

            if (material.normalTexture != null)
            {
                Lighting.Normal.NormalScaleValue = material.normalTexture.scale;
                Lighting.Normal.NormalTexture    = material.normalTexture.index.GetTexture(textures);
            }

            var MatCap = new MatCapDefinition
            {
                AdditiveTexture = extension.AdditiveTexture.GetTexture(textures)
            };
            var Rendering = new RenderingDefinition
            {
                CullMode   = material.doubleSided ? CullMode.Off : CullMode.Back,
                RenderMode = GetRenderMode(material.alphaMode, extension.TransparentWithZWrite.Value),
                RenderQueueOffsetNumber = extension.RenderQueueOffsetNumber.Value,
            };
            var Rim = new RimDefinition
            {
                RimColor             = extension.RimFactor.ToLinearColor(Nan),
                RimMultiplyTexture   = extension.RimMultiplyTexture.GetTexture(textures),
                RimLiftValue         = extension.RimLiftFactor.Value,
                RimFresnelPowerValue = extension.RimFresnelPowerFactor.Value,
                RimLightingMixValue  = extension.RimLightingMixFactor.Value,
            };

            var TextureOption = new TextureUvCoordsDefinition
            {
                UvAnimationMaskTexture        = extension.UvAnimationMaskTexture.GetTexture(textures),
                UvAnimationRotationSpeedValue = extension.UvAnimationRotationSpeedFactor.Value,
                UvAnimationScrollXSpeedValue  = extension.UvAnimationScrollXSpeedFactor.Value,
                UvAnimationScrollYSpeedValue  = extension.UvAnimationScrollYSpeedFactor.Value,
            };

            if (glTF_KHR_texture_transform.TryGet(material.pbrMetallicRoughness.baseColorTexture, out glTF_KHR_texture_transform t))
            {
                TextureOption.MainTextureLeftBottomOriginOffset = t.offset.ToVector2();
                TextureOption.MainTextureLeftBottomOriginScale  = t.scale.ToVector2();
            }

            mtoon.Definition = new MToonDefinition
            {
                Meta          = Meta,
                Color         = Color,
                Outline       = Outline,
                Emission      = Emission,
                Lighting      = Lighting,
                MatCap        = MatCap,
                Rendering     = Rendering,
                Rim           = Rim,
                TextureOption = TextureOption,
            };

            return(mtoon);
        }