From 4d0684b2698fff63a000cd8a9ec6b15d1d3e68c4 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Thu, 16 Sep 2021 15:08:09 +0900 Subject: [PATCH] =?UTF-8?q?preview=20=E3=81=AE=20MaterialUVBindings=20?= =?UTF-8?q?=E5=8B=95=E4=BD=9C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Expression/MaterialValueBindingMerger.cs | 1 - .../Expression/Preview/PreviewSceneManager.cs | 24 +++------------- .../Expression/PreviewMaterialItem.cs | 28 +++++++++++++++++++ 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/Assets/VRM10/Runtime/Components/Expression/MaterialValueBindingMerger.cs b/Assets/VRM10/Runtime/Components/Expression/MaterialValueBindingMerger.cs index 857eff7f9..490685697 100644 --- a/Assets/VRM10/Runtime/Components/Expression/MaterialValueBindingMerger.cs +++ b/Assets/VRM10/Runtime/Components/Expression/MaterialValueBindingMerger.cs @@ -10,7 +10,6 @@ namespace UniVRM10 /// internal sealed class MaterialValueBindingMerger { - public const string UV_PROPERTY = "_MainTex_ST"; public const string COLOR_PROPERTY = "_Color"; public const string EMISSION_COLOR_PROPERTY = "_EmissionColor"; public const string RIM_COLOR_PROPERTY = "_RimColor"; diff --git a/Assets/VRM10/Runtime/Components/Expression/Preview/PreviewSceneManager.cs b/Assets/VRM10/Runtime/Components/Expression/Preview/PreviewSceneManager.cs index b2044cdb3..f7aa1ce82 100644 --- a/Assets/VRM10/Runtime/Components/Expression/Preview/PreviewSceneManager.cs +++ b/Assets/VRM10/Runtime/Components/Expression/Preview/PreviewSceneManager.cs @@ -234,19 +234,12 @@ namespace UniVRM10 if (m_materialMap != null) { // clear - //Debug.LogFormat("clear material"); foreach (var kv in m_materialMap) { - foreach (var _kv in kv.Value.PropMap) - { - // var prop = VrmLib.MaterialBindTypeExtensions.GetProperty(_kv.Key); - kv.Value.Material.SetColor(_kv.Value.Name, _kv.Value.DefaultValues); - } - - // clear UV - kv.Value.Material.SetVector("_MainTex_ST", new Vector4(1, 1, 0, 0)); + kv.Value.Clear(); } + // color if (bake.MaterialColorBindings != null) { foreach (var x in bake.MaterialColorBindings) @@ -274,6 +267,7 @@ namespace UniVRM10 } } + // uv if (bake.MaterialUVBindings != null) { foreach (var x in bake.MaterialUVBindings) @@ -281,17 +275,7 @@ namespace UniVRM10 PreviewMaterialItem item; if (m_materialMap.TryGetValue(x.MaterialName, out item)) { - // var valueName = x.ValueName; - // if (valueName.EndsWith("_ST_S") - // || valueName.EndsWith("_ST_T")) - // { - // valueName = valueName.Substring(0, valueName.Length - 2); - // } - - var value = item.Material.GetVector("_MainTex_ST"); - //Debug.LogFormat("{0} => {1}", valueName, x.TargetValue); - value += ((x.ScalingOffset - new Vector4(1, 1, 0, 0)) * weight); - item.Material.SetColor("_MainTex_ST", value); + item.AddScaleOffset(x.ScalingOffset, weight); } } } diff --git a/Assets/VRM10/Runtime/Components/Expression/PreviewMaterialItem.cs b/Assets/VRM10/Runtime/Components/Expression/PreviewMaterialItem.cs index 07091b5f5..194f605ee 100644 --- a/Assets/VRM10/Runtime/Components/Expression/PreviewMaterialItem.cs +++ b/Assets/VRM10/Runtime/Components/Expression/PreviewMaterialItem.cs @@ -104,5 +104,33 @@ namespace UniVRM10 throw new NotImplementedException(); } + + /// + /// [Preview] 積算する前の初期値にクリアする + /// + public void Clear() + { + // clear Color + foreach (var _kv in PropMap) + { + Material.SetColor(_kv.Value.Name, _kv.Value.DefaultValues); + } + + // clear UV + Material.SetVector(UV_PROPERTY, DefaultUVScaleOffset); + } + + /// + /// [Preview] scaleOffset を weight で重みを付けて加える + /// + /// + /// + public void AddScaleOffset(Vector4 scaleOffset, float weight) + { + var value = Material.GetVector(UV_PROPERTY); + //Debug.LogFormat("{0} => {1}", valueName, x.TargetValue); + value += (scaleOffset - DefaultUVScaleOffset) * weight; + Material.SetColor(UV_PROPERTY, value); + } } }