mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-08-28 22:04:56 -05:00
Added _MainTex_ST UI
This commit is contained in:
@@ -52,11 +52,12 @@ namespace VRM
|
||||
m_ValuesList = new ReorderableList(serializedObject, m_ValuesProp);
|
||||
m_ValuesList.elementHeight = BlendShapeBindingHeight;
|
||||
m_ValuesList.drawElementCallback =
|
||||
(rect, index, isActive, isFocused) => {
|
||||
(rect, index, isActive, isFocused) =>
|
||||
{
|
||||
var element = m_ValuesProp.GetArrayElementAtIndex(index);
|
||||
rect.height -= 4;
|
||||
rect.y += 2;
|
||||
if(DrawBlendShapeBinding(rect, element, PreviewSceneManager))
|
||||
if (DrawBlendShapeBinding(rect, element, PreviewSceneManager))
|
||||
{
|
||||
m_changed = true;
|
||||
}
|
||||
@@ -66,11 +67,12 @@ namespace VRM
|
||||
m_MaterialValuesList = new ReorderableList(serializedObject, m_MaterialValuesProp);
|
||||
m_MaterialValuesList.elementHeight = MaterialValueBindingHeight;
|
||||
m_MaterialValuesList.drawElementCallback =
|
||||
(rect, index, isActive, isFocused) => {
|
||||
(rect, index, isActive, isFocused) =>
|
||||
{
|
||||
var element = m_MaterialValuesProp.GetArrayElementAtIndex(index);
|
||||
rect.height -= 4;
|
||||
rect.y += 2;
|
||||
if(DrawMaterialValueBinding(rect, element, PreviewSceneManager))
|
||||
if (DrawMaterialValueBinding(rect, element, PreviewSceneManager))
|
||||
{
|
||||
m_changed = true;
|
||||
}
|
||||
@@ -89,8 +91,9 @@ namespace VRM
|
||||
m_changed = false;
|
||||
|
||||
EditorGUILayout.Space();
|
||||
var previewSlider= EditorGUILayout.Slider("Preview Weight", m_previewSlider, 0, 1.0f);
|
||||
if (previewSlider != m_previewSlider) {
|
||||
var previewSlider = EditorGUILayout.Slider("Preview Weight", m_previewSlider, 0, 1.0f);
|
||||
if (previewSlider != m_previewSlider)
|
||||
{
|
||||
m_previewSlider = previewSlider;
|
||||
m_changed = true;
|
||||
}
|
||||
@@ -110,7 +113,7 @@ namespace VRM
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
|
||||
if (m_changed && PreviewSceneManager!=null)
|
||||
if (m_changed && PreviewSceneManager != null)
|
||||
{
|
||||
PreviewSceneManager.Bake(m_target.Values, m_target.MaterialValues, m_previewSlider);
|
||||
}
|
||||
@@ -180,6 +183,8 @@ namespace VRM
|
||||
{
|
||||
y += height;
|
||||
rect = new Rect(position.x, y, position.width, height);
|
||||
|
||||
// プロパティ名のポップアップ
|
||||
int propIndex;
|
||||
if (StringPopup(rect, property.FindPropertyRelative("ValueName"), materialItem.PropNames, out propIndex))
|
||||
{
|
||||
@@ -188,6 +193,7 @@ namespace VRM
|
||||
|
||||
if (propIndex >= 0)
|
||||
{
|
||||
// 有効なプロパティ名が選択された
|
||||
var propItem = materialItem.PropMap[materialItem.PropNames[propIndex]];
|
||||
{
|
||||
switch (propItem.PropertyType)
|
||||
@@ -205,6 +211,20 @@ namespace VRM
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case ShaderUtil.ShaderPropertyType.TexEnv:
|
||||
{
|
||||
property.FindPropertyRelative("BaseValue").vector4Value = propItem.DefaultValues;
|
||||
|
||||
// max
|
||||
y += height;
|
||||
rect = new Rect(position.x, y, position.width, height);
|
||||
if (OffsetProp(rect, property.FindPropertyRelative("TargetValue")))
|
||||
{
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -285,5 +305,20 @@ namespace VRM
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static bool OffsetProp(Rect rect, SerializedProperty prop)
|
||||
{
|
||||
var oldValue = prop.vector4Value;
|
||||
var newValue = EditorGUI.Vector4Field(rect, prop.displayName, oldValue);
|
||||
if (newValue != oldValue)
|
||||
{
|
||||
prop.vector4Value = newValue;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,15 +45,28 @@ namespace VRM
|
||||
for (int i = 0; i < ShaderUtil.GetPropertyCount(material.shader); ++i)
|
||||
{
|
||||
var propType = ShaderUtil.GetPropertyType(material.shader, i);
|
||||
if (propType == ShaderUtil.ShaderPropertyType.Color)
|
||||
var name = ShaderUtil.GetPropertyName(material.shader, i);
|
||||
|
||||
switch (propType)
|
||||
{
|
||||
var name = ShaderUtil.GetPropertyName(material.shader, i);
|
||||
item.PropMap.Add(name, new PropItem
|
||||
{
|
||||
PropertyType = propType,
|
||||
DefaultValues = material.GetColor(name),
|
||||
});
|
||||
propNames.Add(name);
|
||||
case ShaderUtil.ShaderPropertyType.Color:
|
||||
item.PropMap.Add(name, new PropItem
|
||||
{
|
||||
PropertyType = propType,
|
||||
DefaultValues = material.GetColor(name),
|
||||
});
|
||||
propNames.Add(name);
|
||||
break;
|
||||
|
||||
case ShaderUtil.ShaderPropertyType.TexEnv:
|
||||
name += "_ST";
|
||||
item.PropMap.Add(name, new PropItem
|
||||
{
|
||||
PropertyType = propType,
|
||||
DefaultValues = material.GetVector(name),
|
||||
});
|
||||
propNames.Add(name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
item.PropNames = propNames.ToArray();
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace VRM
|
||||
GameObject.DestroyImmediate(x.gameObject);
|
||||
}
|
||||
|
||||
Debug.Log("new prefab. instanciate");
|
||||
//Debug.Log("new prefab. instanciate");
|
||||
// no previous instance detected, so now let's make a fresh one
|
||||
// very important: this loads the PreviewInstance prefab and temporarily instantiates it into PreviewInstance
|
||||
var go = GameObject.Instantiate(prefab,
|
||||
@@ -95,7 +95,7 @@ namespace VRM
|
||||
dst = new Material(src);
|
||||
map.Add(src, dst);
|
||||
|
||||
Debug.LogFormat("add material {0}", src.name);
|
||||
//Debug.LogFormat("add material {0}", src.name);
|
||||
materialNames.Add(src.name);
|
||||
m_materialMap.Add(src.name, MaterialItem.Create(dst));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user