Merge pull request #2587 from ousttrue/vrm1/runtime_lookat_info

[LookAt] Vrm1/runtime lookat info
This commit is contained in:
ousttrue 2025-02-25 14:10:56 +09:00 committed by GitHub
commit 98995a22e7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 83 additions and 9 deletions

View File

@ -24,6 +24,8 @@ namespace UniVRM10
LookAt,
SpringBone,
}
static Tab s_selected = default;
static bool s_foldRuntimeLookAt = false;
Vrm10Instance m_instance;
@ -226,7 +228,7 @@ namespace UniVRM10
root.Add(s);
}
var tabs = new EnumField("select UI", default(Tab));
var tabs = new EnumField("select UI", s_selected);
root.Add(tabs);
var body = new VisualElement();
@ -239,7 +241,7 @@ namespace UniVRM10
foreach (var (tab, content) in contents)
{
// content.visible = tab == Tab.VrmInstance;
content.style.display = tab == Tab.VrmInstance
content.style.display = tab == s_selected
? DisplayStyle.Flex
: DisplayStyle.None
;
@ -249,11 +251,11 @@ namespace UniVRM10
tabs.RegisterValueChangedCallback(e =>
{
var selected = (Tab)e.newValue;
s_selected = (Tab)e.newValue;
foreach (var (tab, content) in contents)
{
// content.visible = tab == selected;
content.style.display = tab == selected
content.style.display = tab == s_selected
? DisplayStyle.Flex
: DisplayStyle.None
;
@ -277,11 +279,80 @@ namespace UniVRM10
void GUILookAt()
{
if (!target)
{
return;
}
serializedObject.Update();
EditorGUILayout.PropertyField(m_drawLookatGizmo);
EditorGUILayout.PropertyField(m_lookatTarget);
EditorGUILayout.PropertyField(m_lookatTargetType);
serializedObject.ApplyModifiedProperties();
// lookat info
if (Application.isPlaying)
{
EditorGUILayout.Space();
s_foldRuntimeLookAt = EditorGUILayout.Foldout(s_foldRuntimeLookAt, "RuntimeInfo");
if (s_foldRuntimeLookAt)
{
var enabled = GUI.enabled;
GUI.enabled = false;
EditorGUILayout.Slider("yaw(-180 ~ +180)", m_instance.Runtime.LookAt.Yaw, -180, 180);
EditorGUILayout.Slider("pitch(-90 ~ +90)", m_instance.Runtime.LookAt.Pitch, -90, 90);
if (m_instance.Runtime.LookAt.EyeDirectionApplicable is LookAtEyeDirectionApplicableToBone)
{
EditorGUILayout.LabelField("BoneTYpe");
}
else if (m_instance.Runtime.LookAt.EyeDirectionApplicable is LookAtEyeDirectionApplicableToExpression)
{
EditorGUILayout.LabelField("ExpressionType");
var w = m_instance.Runtime.Expression.ActualWeights;
// left
if (w.TryGetValue(ExpressionKey.LookLeft, out var left))
{
EditorGUILayout.Slider("left", left, 0, 1);
}
else
{
EditorGUILayout.TextField("left");
}
// right
if (w.TryGetValue(ExpressionKey.LookRight, out var right))
{
EditorGUILayout.Slider("right", right, 0, 1);
}
else
{
EditorGUILayout.TextField("right");
}
// up
if (w.TryGetValue(ExpressionKey.LookUp, out var up))
{
EditorGUILayout.Slider("up", up, 0, 1);
}
else
{
EditorGUILayout.TextField("up");
}
// down
if (w.TryGetValue(ExpressionKey.LookDown, out var down))
{
EditorGUILayout.Slider("down", down, 0, 1);
}
else
{
EditorGUILayout.TextField("down");
}
}
else
{
EditorGUILayout.LabelField($"UnknownTYpe: {m_instance.Runtime.LookAt.EyeDirectionApplicable}");
}
GUI.enabled = enabled;
Repaint();
}
}
}
VisualElement GUISpringBone()

View File

@ -24,13 +24,16 @@ namespace UniVRM10.VRM10Viewer
while (true)
{
angle += m_angularVelocity * Time.deltaTime * Mathf.Deg2Rad;
if (this.enabled)
{
angle += m_angularVelocity * Time.deltaTime * Mathf.Deg2Rad;
var x = Mathf.Cos(angle) * m_radius;
var z = Mathf.Sin(angle) * m_radius;
var y = m_y + m_height * Mathf.Cos(angle / 3);
var x = Mathf.Cos(angle) * m_radius;
var z = Mathf.Sin(angle) * m_radius;
var y = m_y + m_height * Mathf.Cos(angle / 3);
transform.localPosition = new Vector3(x, y, z);
transform.localPosition = new Vector3(x, y, z);
}
yield return null;
}