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); }
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); }