初期値との差分を使うようにロジックを変更

This commit is contained in:
ousttrue
2021-09-09 19:46:27 +09:00
parent 153fca34ff
commit 6ecaef0a6e
3 changed files with 19 additions and 9 deletions

View File

@@ -79,6 +79,7 @@ namespace UniVRM10
item = new PreviewMaterialItem(material);
m_materialMap.Add(binding.MaterialName, item);
}
// color default value
var propName = GetProperty(binding.BindType);
if (!item.PropMap.ContainsKey(binding.BindType))
{
@@ -148,8 +149,6 @@ namespace UniVRM10
/// </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
@@ -169,14 +168,20 @@ namespace UniVRM10
// 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;
}
}
}
}

View File

@@ -56,10 +56,15 @@ namespace UniVRM10
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;

View File

@@ -53,7 +53,7 @@ namespace UniVRM10.VRM10Viewer
{
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);