v0.9.70
Sistema de Menu

MRUnificarMateriales

Agrupa materiales alternativos y genera una animacion Linear para cambiarlos con un slider en VRChat

Descripcion

MRUnificarMateriales agrupa multiples MRAgruparMateriales y genera una animacion Linear (255 frames) que permite cambiar entre diferentes materiales usando un slider en el menu radial de VRChat. Es el equivalente de MRUnificarObjetos pero especializado en el intercambio de materiales.

Mientras que MRUnificarObjetos controla la visibilidad de GameObjects, MRUnificarMateriales controla que materiales se aplican a los renderers del avatar. Esto permite cambiar colores de ropa, texturas de piel, variaciones de accesorios y cualquier otro cambio de material sin necesidad de duplicar GameObjects.

Siempre genera animacion de tipo Linear, independientemente de la cantidad de grupos que contenga. El slider del menu radial en VRChat va de 0% a 100%, recorriendo cada material de forma secuencial.

Interfaz del Inspector

Inspector MRUnificarMateriales
1 Frame Activo — slider para navegar frames 0-255 con botones Anterior/Siguiente 2 Seccion MR Agrupar Materiales — encabezado con cantidad de componentes hijos 3 Lista de componentes — cada MRAgruparMateriales con cantidad de slots y grupos vinculados 4 Boton "+ Crear Agrupar Materiales" — crea un nuevo componente hijo 5 Nombre de Animacion — identificador unico para los archivos generados 6 Boton "Generar Animaciones" — genera la animacion Linear de 255 frames con ObjectReferenceKeyframe 7 Informacion del Sistema — muestra duracion, tipo, cantidad de slots vinculados

Configuracion

Propiedad Descripcion
Nombre de Animacion Nombre del archivo de animacion que se generara (ej: materiales_outfits_lin.anim). Se usa como identificador para el parametro VRChat correspondiente.
Lista de MRAgruparMateriales Componentes hijos que agrupan materiales por prenda. Cada MRAgruparMateriales representa una prenda con sus slots y grupos de materiales.

Distribucion de Frames

La animacion Linear tiene un total de 255 frames. Los frames se distribuyen uniformemente entre los materiales disponibles. Cada material ocupa un rango de frames consecutivos, y el ultimo material recibe los frames sobrantes de la division.

Ejemplo: 4 materiales Rango de frames Calculo
Material 0 Frames 0 – 62 255 / 4 = 63 frames
Material 1 Frames 63 – 125 63 frames
Material 2 Frames 126 – 188 63 frames
Material 3 Frames 189 – 255 63 + 3 sobrantes = 66 frames
Siempre genera animacion Linear (255 frames). El slider en VRChat va de 0% a 100%, pasando por cada material de forma secuencial. A mayor cantidad de materiales, menor es el rango de slider que ocupa cada uno.

Tipos de MRUnificarMateriales

El sistema crea automaticamente hasta dos instancias de MRUnificarMateriales, siguiendo la misma estructura que los radiales de objetos:

Tipo Descripcion Cuando se crea
Materiales Outfits Agrupa los materiales de las prendas de ropa del avatar. Permite cambiar colores, texturas y variaciones de los outfits. Siempre que haya ropa detectada con materiales configurables.
Materiales Pelucas Agrupa los materiales de las pelucas del avatar. Permite cambiar colores y texturas del cabello independientemente de la ropa. Solo si se detectan pelucas en el avatar.

Esta separacion permite controlar los materiales de ropa y pelucas de forma independiente en VRChat, con sliders separados en el menu radial.

Botones

Boton Descripcion
Agregar (+) Agrega un nuevo MRAgruparMateriales como hijo. Se crea un componente vacio listo para configurar con los materiales de una prenda.
Eliminar (-) Elimina un grupo de materiales de la lista. El componente hijo se destruye.
Crear MRAgruparMateriales Crea un nuevo componente hijo MRAgruparMateriales y lo agrega automaticamente a la lista.
Limpiar Nulos Elimina de la lista las referencias nulas — entradas que apuntan a componentes que ya no existen (fueron eliminados manualmente o por otro proceso).
Las animaciones de materiales usan ObjectReferenceKeyframe (referencias a assets) en lugar de curvas float. El binding de cada slot se construye como m_Materials.Array.data[index] con el tipo SkinnedMeshRenderer.