mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-08-14 22:36:28 -05:00
const
This commit is contained in:
@@ -57,7 +57,7 @@ namespace UniVRM10
|
||||
|
||||
y += height;
|
||||
rect = new Rect(position.x, y, position.width, height);
|
||||
if (ExpressionEditorHelper.FloatSlider(rect, property.FindPropertyRelative(nameof(MorphTargetBinding.Weight)), 1.0f))
|
||||
if (ExpressionEditorHelper.FloatSlider(rect, property.FindPropertyRelative(nameof(MorphTargetBinding.Weight)), MorphTargetBinding.MAX_WEIGHT))
|
||||
{
|
||||
changed = true;
|
||||
}
|
||||
|
||||
@@ -192,11 +192,11 @@ namespace UniVRM10
|
||||
//EditorGUI.indentLevel += 1;
|
||||
for (int i = 0; i < mesh.blendShapeCount; ++i)
|
||||
{
|
||||
var src = renderer.GetBlendShapeWeight(i) * 0.01f;
|
||||
var dst = EditorGUILayout.Slider(mesh.GetBlendShapeName(i), src, 0, 1.0f);
|
||||
var src = renderer.GetBlendShapeWeight(i) * MorphTargetBinding.UNITY_TO_VRM;
|
||||
var dst = EditorGUILayout.Slider(mesh.GetBlendShapeName(i), src, 0, MorphTargetBinding.MAX_WEIGHT);
|
||||
if (dst != src)
|
||||
{
|
||||
renderer.SetBlendShapeWeight(i, dst * 100.0f);
|
||||
renderer.SetBlendShapeWeight(i, dst * MorphTargetBinding.VRM_TO_UNITY);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
@@ -210,7 +210,7 @@ namespace UniVRM10
|
||||
|
||||
MorphTargetBinding[] GetBindings(out string _maxWeightName)
|
||||
{
|
||||
var maxWeight = 0.0f;
|
||||
var maxUnityWeight = 0.0f;
|
||||
var maxWeightName = "";
|
||||
// weightのついたblendShapeを集める
|
||||
var values = m_items
|
||||
@@ -225,18 +225,18 @@ namespace UniVRM10
|
||||
{
|
||||
for (int i = 0; i < mesh.blendShapeCount; ++i)
|
||||
{
|
||||
var weight = x.SkinnedMeshRenderer.GetBlendShapeWeight(i);
|
||||
if (weight == 0)
|
||||
var unityWeight = x.SkinnedMeshRenderer.GetBlendShapeWeight(i);
|
||||
if (unityWeight == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var name = mesh.GetBlendShapeName(i);
|
||||
if (weight > maxWeight)
|
||||
if (unityWeight > maxUnityWeight)
|
||||
{
|
||||
maxWeightName = name;
|
||||
maxWeight = weight;
|
||||
maxUnityWeight = unityWeight;
|
||||
}
|
||||
list.Add(new MorphTargetBinding(relativePath, i, weight * 0.01f));
|
||||
list.Add(new MorphTargetBinding(relativePath, i, unityWeight * MorphTargetBinding.UNITY_TO_VRM));
|
||||
}
|
||||
}
|
||||
return list;
|
||||
|
||||
@@ -6,6 +6,18 @@ namespace UniVRM10
|
||||
[Serializable]
|
||||
public struct MorphTargetBinding : IEquatable<MorphTargetBinding>
|
||||
{
|
||||
/// <summary>
|
||||
/// Unity の BlendShape の値域は 0-100
|
||||
/// </summary>
|
||||
public const float VRM_TO_UNITY = 100.0f;
|
||||
|
||||
/// <summary>
|
||||
/// VRM-1.0 の MorphTargetBinding.Weight の値域は 0-1.0
|
||||
/// </summary>
|
||||
public const float UNITY_TO_VRM = 0.01f;
|
||||
|
||||
public const float MAX_WEIGHT = 1.0f;
|
||||
|
||||
/// <summary>
|
||||
/// SkinnedMeshRenderer.BlendShape[Index].Weight を 指し示す。
|
||||
///
|
||||
|
||||
@@ -59,8 +59,13 @@ namespace UniVRM10
|
||||
{
|
||||
m_morphTargetSetterMap.Add(binding, x =>
|
||||
{
|
||||
if (target == null)
|
||||
{
|
||||
// recompile in editor ?
|
||||
return;
|
||||
}
|
||||
// VRM-1.0 weight is 0-1
|
||||
target.SetBlendShapeWeight(binding.Index, x * 100.0f);
|
||||
target.SetBlendShapeWeight(binding.Index, x * MorphTargetBinding.VRM_TO_UNITY);
|
||||
});
|
||||
}
|
||||
else
|
||||
|
||||
@@ -79,7 +79,7 @@ namespace UniVRM10
|
||||
{
|
||||
if (x.Index >= 0 && x.Index < SkinnedMeshRenderer.sharedMesh.blendShapeCount)
|
||||
{
|
||||
SkinnedMeshRenderer.SetBlendShapeWeight(x.Index, x.Weight * weight * 100.0f);
|
||||
SkinnedMeshRenderer.SetBlendShapeWeight(x.Index, x.Weight * weight * MorphTargetBinding.VRM_TO_UNITY);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user