Skip to content

Commit

Permalink
Merge pull request #1209 from ousttrue/feature10/expression_uv_scale_…
Browse files Browse the repository at this point in the history
…offset_update

初期値との差分を使うようにロジックを変更
  • Loading branch information
PoChang007 authored Sep 9, 2021
2 parents 64af0d2 + 6ecaef0 commit 80a45ef
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ void InitializeMaterialMap(Dictionary<ExpressionKey, VRM10Expression> clipMap, T
item = new PreviewMaterialItem(material);
m_materialMap.Add(binding.MaterialName, item);
}
// color default value
var propName = GetProperty(binding.BindType);
if (!item.PropMap.ContainsKey(binding.BindType))
{
Expand Down Expand Up @@ -148,8 +149,6 @@ public int GetHashCode(MaterialColorBinding obj)
/// </summary>
Dictionary<string, Vector4> m_materialUVMap = new Dictionary<string, Vector4>();

static readonly Vector4 DefaultUVScaleOffset = new Vector4(1, 1, 0, 0);

public void AccumulateValue(VRM10Expression clip, float value)
{
// material color
Expand All @@ -169,14 +168,20 @@ public void AccumulateValue(VRM10Expression clip, float value)
// maetrial uv
foreach (var binding in clip.MaterialUVBindings)
{
Vector4 acc;
if (!m_materialUVMap.TryGetValue(binding.MaterialName, out acc))
if (m_materialMap.TryGetValue(binding.MaterialName, out PreviewMaterialItem item))
{
acc = DefaultUVScaleOffset;
}
var delta = binding.ScalingOffset - item.DefaultUVScaleOffset;

var delta = binding.ScalingOffset - DefaultUVScaleOffset;
m_materialUVMap[binding.MaterialName] = acc + delta * value;
Vector4 acc;
if (m_materialUVMap.TryGetValue(binding.MaterialName, out acc))
{
m_materialUVMap[binding.MaterialName] = acc + delta * value;
}
else
{
m_materialUVMap[binding.MaterialName] = item.DefaultUVScaleOffset + delta * value;
}
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,15 @@ public sealed class PreviewMaterialItem
public PreviewMaterialItem(Material material)
{
Material = material;

// uv default value
DefaultUVScaleOffset = material.GetVector(UV_PROPERTY);
}

public Dictionary<UniGLTF.Extensions.VRMC_vrm.MaterialColorType, PropItem> PropMap = new Dictionary<UniGLTF.Extensions.VRMC_vrm.MaterialColorType, PropItem>();

public Vector4 DefaultUVScaleOffset = new Vector4(1, 1, 0, 0);

public string[] PropNames
{
get;
Expand Down
2 changes: 1 addition & 1 deletion Assets/VRM10/Samples/VRM10Viewer/VRM10AutoExpression.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ IEnumerator Routine()
{
yield return new WaitForSeconds(1.0f);

var velocity = 0.1f;
var velocity = 0.01f;

yield return RoutineNest(ExpressionPreset.happy, velocity, m_wait);
yield return RoutineNest(ExpressionPreset.angry, velocity, m_wait);
Expand Down

0 comments on commit 80a45ef

Please sign in to comment.