MorphTargetBinding

This commit is contained in:
ousttrue
2021-03-31 00:51:04 +09:00
parent d57cf4c747
commit 339b2f6f9e
2 changed files with 76 additions and 0 deletions

View File

@@ -1,4 +1,6 @@
using System.Collections.Generic;
using UniGLTF.Extensions.VRMC_vrm;
using UnityEngine;
namespace UniVRM10
{
@@ -17,5 +19,67 @@ namespace UniVRM10
;
return $"Expression.{key}";
}
public static UniVRM10.MorphTargetBinding Build10(this MorphTargetBind bind, GameObject root, ModelMap loader, VrmLib.Model model)
{
var libNode = model.Nodes[bind.Node.Value];
var node = loader.Nodes[libNode].transform;
var mesh = loader.Meshes[libNode.MeshGroup];
var relativePath = node.RelativePathFrom(root.transform);
// VRM-1.0 では値域は [0-1.0f]
return new UniVRM10.MorphTargetBinding(relativePath, bind.Index.Value, bind.Weight.Value * 100.0f);
}
// static UniVRM10.MaterialColorBinding? Build10(this MaterialColorBind bind, ModelMap loader)
// {
// var kv = bind.Property;
// var value = kv.Value.ToUnityVector4();
// var material = loader.Materials[bind.Material];
// var binding = default(UniVRM10.MaterialColorBinding?);
// if (material != null)
// {
// try
// {
// binding = new UniVRM10.MaterialColorBinding
// {
// MaterialName = bind.Material.Name, // UniVRM-0Xの実装は名前で持っている
// BindType = bind.BindType,
// TargetValue = value,
// // BaseValue = material.GetColor(kv.Key),
// };
// }
// catch (Exception)
// {
// // do nothing
// }
// }
// return binding;
// }
// static UniVRM10.MaterialUVBinding? Build10(this VrmLib.TextureTransformBind bind, ModelMap loader)
// {
// var material = loader.Materials[bind.Material];
// var binding = default(UniVRM10.MaterialUVBinding?);
// if (material != null)
// {
// try
// {
// binding = new UniVRM10.MaterialUVBinding
// {
// MaterialName = bind.Material.Name, // UniVRM-0Xの実装は名前で持っている
// Scaling = new Vector2(bind.Scale.X, bind.Scale.Y),
// Offset = new Vector2(bind.Offset.X, bind.Offset.Y),
// };
// }
// catch (Exception)
// {
// // do nothing
// }
// }
// return binding;
// }
}
}

View File

@@ -237,6 +237,18 @@ namespace UniVRM10
clip.OverrideBlink = expression.OverrideBlink;
clip.OverrideLookAt = expression.OverrideLookAt;
clip.OverrideMouth = expression.OverrideMouth;
clip.MorphTargetBindings = expression.MorphTargetBinds.Select(x => x.Build10(Root, m_asset.Map, m_model))
.ToArray();
// clip.MaterialColorBindings = expression.MaterialColorBinds.Select(x => x.Build10(asset.Map))
// .Where(x => x.HasValue)
// .Select(x => x.Value)
// .ToArray();
// clip.MaterialUVBindings = expression.TextureTransformBinds.Select(x => x.Build10(asset.Map))
// .Where(x => x.HasValue)
// .Select(x => x.Value)
// .ToArray();
m_exressionAvatar.Clips.Add(clip);
}
}