Puedes importar mallas personalizadas para crear todo, desde NPCs hasta un tejido animado de un velero. Usamos la configuración personalizada del Importador para traer personajes personalizados más exóticos, como las misteriosas criaturas de agujero negro y los amigables, aunque inconscientes, droides de servicio.
Las siguientes secciones explican cómo utilizamos rigging y skinning, PBR (apariencia de superficie) y VFX para construir uno de nuestros personajes más complicados que llamamos "Criatura". Queríamos que brillara, emitiera algo de luz, tuviera estelas de humo de partículas y un movimiento fluido que involucrara el skinning de un rig con suficientes articulaciones para crear las olas convincentes de sus tentáculos.

Rig
Cuando estábamos riggeando la Criatura, encontramos que era mejor modelar el personaje en una pose neutral, porque esa pose es la más adecuada para doblarse en múltiples direcciones. Si hubiéramos modelado la Criatura con sus tentáculos ya enrollados, habría llevado a estiramientos si animábamos los tentáculos para doblarse en la dirección opuesta. Las siguientes capturas de pantalla muestran a la Criatura en su estado natural:


Desde una pose neutral, agregamos articulaciones de manera económica, enfocándonos en las áreas que necesitaban más movimiento. Cuantas menos articulaciones, mejor, porque tendrás que gestionarlas al hacer el skinning de tu personaje, y tendrás menos que controlar cuando las animes. En las capturas de pantalla anteriores, la Criatura parece tener muchas articulaciones en el centro, pero el cuerpo principal solo tiene una articulación.
La mayoría de las otras articulaciones están hacia los tentáculos y mandíbulas. Con los tentáculos, queríamos mucho movimiento secundario, o movimiento que está en capas, para crear un efecto convincente de que todos se mueven por su cuenta. Sin embargo, la masa central de tentáculos estaba tan cerca que parecía un desperdicio hacer articulaciones para todos ellos, tanto en rendimiento como en esfuerzo para animar. Así que, en su lugar, tratamos la masa central como un solo tentáculo grande con "colas" más pequeñas donde las puntas salían de la masa central.

Encontramos útiles las siguientes pautas, para que la malla del personaje se importe correctamente en Studio:
- Las articulaciones y huesos individuales deben tener nombres únicos.
- Las mallas no deben tener el mismo nombre que las articulaciones y huesos.
- Las mallas no deben tener transformaciones antes del skinning/vinculación; en otras palabras, las transformaciones deben ser 0 y las escalas deben ser 1.
- Las normales de la malla deben mirar hacia afuera (el modelo no debe verse al revés).
- Los esqueletos no deben tener ningún factor de escala; todas las articulaciones deben ser [1, 1, 1].
Skin
Cuando terminamos el esqueleto de la Criatura, el siguiente paso fue hacer el skin de la malla. Hacer el skin puede ser una tarea ardua, así que para facilitar las cosas, es mejor estar familiarizado con las diferentes configuraciones iniciales de skinning de tu aplicación DCC para encontrar la que te guste. Dado que este es un personaje orgánico, lo hicimos con mucho desvanecimiento en cada articulación y superposición entre ellas. De esta manera, la flexión se siente suave y no aguda. Las siguientes capturas de pantalla muestran un mal skinning y un skinning suave respectivamente:


Encontramos que las siguientes pautas produjeron los mejores resultados para el skinning:
- Las influencias de skinning (es decir, que afectan una parte del modelo cuando se mueven) deben ser un máximo de 4 influencias por vértice.
- Los nombres de las articulaciones y mallas deben ser únicos, tanto entre sí como entre ellos.
- Cualquier articulación que desees importar a Studio debe tener alguna influencia en el skinning del modelo, de lo contrario, el motor no la importará. Siempre que sea posible, haz el skin de tu modelo en su pose original o de "vinculación".
Importar la malla a Studio
Importar tus personajes personalizados a Studio es una de las partes más emocionantes del proceso, porque puedes ver tus creaciones en el juego que estás construyendo.
Para importar la malla a Studio:
Exporta el personaje desde la aplicación DCC y asegúrate de lo siguiente:
- Todas las normales, escalas y nombres son correctos.
- El personaje tiene toda la jerarquía de articulaciones y huesos y todas las mallas.
- Las mallas tienen menos de 10,000 triángulos para cada parte de la malla.
- El tamaño total de la malla no supera los 2000 unidades en ningún eje.
- Consulta los Requisitos de Malla para obtener una lista completa de especificaciones del modelo.

En el Importador, importa el archivo personalizado .fbx o .obj.

Hacer que la criatura brille
Una vez que el modelo de la Criatura estaba estable y no requería más importaciones inmediatas a Studio, comenzamos a reunir los objetos de SurfaceAppearance, luces y efectos visuales. Hicimos esto para asegurarnos de que la calidad del modelo fuera lo suficientemente buena antes de proceder a colocar y editar cualquier aspecto de él.

Sabíamos que queríamos que la Criatura fuera oscura, y que los puntos focales fueran los ojos y sus tentáculos "agarradores". Los puntos altos de contraste tienden a atraer la atención, así que tener algunos fuertes asegura que el espectador sepa en qué enfocarse. Studio admite materiales neón que se autoiluminan, así que al principio separamos los ojos para que pudieran ser su propio material del resto del personaje. Hicimos algo similar para los tentáculos, para que solo brillaran en sus puntas.

El material neón no emite luz real, así que después de algunas pruebas, agregamos partes separadas para controlar la colocación y dirección de la emisión de luz. Esto aseguró que la iluminación se dirigiera de manera que realzara el brillo de los ojos y también proyectara su propia fuente de luz.

Nota que los SpotLights añaden un toque visual a la Criatura cerca de otras superficies o un jugador.

Además, queríamos que los tentáculos de la Criatura emitieran algunas partículas, para que dejaran atrás una estela de humo cuando se movía. Debido a que los tentáculos son muy largos, agregar el ParticleEmitter a todo el tentáculo haría que las partículas se emitieran desde todo el tentáculo en lugar de la punta. Para combatir esto, usamos una pequeña parte posicionada cerca del final del tentáculo, para que pudiéramos controlar el tamaño de emisión, colocación y dirección de las partículas.

Hacer que los VFX sigan al personaje
Las posiciones de la malla del personaje riggeado no se actualizan cuando la Criatura anima, así que necesitábamos un método para asegurarnos de que los VFX, SFX y luces siguieran a la Criatura correctamente. Para lograr esto, creamos un script controlador de VFX y usamos CollectionService para informar a las partes que contenían los VFX dónde estaban los huesos de la criatura y seguirlos.
Colocamos el siguiente LocalScript en StarterPlayer → StarterPlayerScripts. Esto esencialmente ejecuta la función de actualización de VFX.
Script Local-- Agrega este fragmento a un script local existente que hace conexiones de PreSimulationlocal RunService = game:GetService("RunService")local vfx = require(workspace.VfxUpdateModule)RunService.PreSimulation:Connect(vfx.updateVfx)Script de Módulo-- Este módulo adjunta partes a animaciones para que se actualicen a medida que-- se reproduce la animación. Es una solución para las limitaciones actuales-- con Joints y Bones y no siempre será necesario.---- Requisitos previos:-- Para ser incluido, los modelos necesitan la etiqueta "AnimatedVfxModel", y una carpeta-- de todas las partes que deseas sincronizar con la animación. Cada parte necesita-- un atributo llamado "AttachedBoneName" que se refiere al nombre del-- hueso al que deseas adjuntarlo. Las partes también deben estar ya en sus-- posiciones correctas en relación con el hueso deseado.---- Para Usar:-- Un LocalScript debe requerir este módulo, luego conectar-- VfxUpdateModule.updateVfx al evento RunService.PreSimulation.local VfxUpdateModule = {}local CollectionService = game:GetService("CollectionService")-- CONFIGURACIÓN - esto debe ejecutarse una vez en cada cliente.-- Recoge todos los modelos con la etiquetalocal vfxModels = CollectionService:GetTagged("AnimatedVfxModel")local vfxTable = {} -- donde almacenaremos todas las partes y desplazamientos-- Asigna una tabla a cada modelo que contendrá todas las partes de vfx y desplazamientofor _, model in vfxModels dovfxTable[model] = {}local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Encuentra la carpeta VFX-- Encuentra el hueso a través del atributo y calcula el desplazamiento para cada parte.for _,part in vfxParts dolocal name = part:GetAttribute("AttachedBoneName")local bone = model:FindFirstChild(name, true)if bone thenlocal offset = (bone.TransformedWorldCFrame:inverse() * part.CFrame)vfxTable[model][part] = {bone, offset}elsewarn("La parte de Vfx se refiere a un hueso que no se pudo encontrar.")endendendprint(vfxTable)-- ACTUALIZAR - Esto debe estar vinculado a cada RunService.PreSimulation del cliente-- Recorre todos los modelos, luego actualiza todas las partes del modelo para que coincidan con el cframe del hueso.function VfxUpdateModule.updateVfx()for model, vfxParts in vfxTable dofor part, bone in vfxParts dopart.CFrame = bone[1].TransformedWorldCFrame * bone[2]endendendreturn VfxUpdateModuleCreamos un VFXUpdateModule ModuleScript para indicar a cualquier objeto etiquetado apropiadamente con AnimatedVfxModel que se actualice en un evento de reproducción.
Etiquetamos los grupos de modelos necesarios con AnimatedVfxModel utilizando la sección de Etiquetas de sus propiedades. Usar etiquetas permite que el VFXUpdateModule sepa qué objeto buscar como el primer hijo de VFX y aplicar la actualización.

Finalmente, agregamos un atributo personalizado AttachedBoneName a la parte que queríamos animar y añadimos el nombre preciso de la articulación que queríamos que siguiera.
Texturizar la criatura
A continuación, configuramos los mapas de textura PBR (Renderizado Basado en Física). Estos potentes mapas de bits le dan a la criatura el brillo variado y las variaciones de superficie para hacer que parezca que tiene muchos pequeños bultos e imperfecciones. Este efecto visual ayuda a vender la apariencia de la Criatura cuando está más cerca del jugador.

Así es como creamos los mapas de textura de apariencia de superficie:
Los mapas de textura para este personaje estaban todos en una "hoja" por mapa. Esto hizo que la criatura fuera más eficiente y significó que teníamos que lidiar con menos mapas de textura o objetos SurfaceAppearance.




Para las áreas que necesitaban brillar o ser autoiluminadas, como los "tentáculos agarradores", también usamos transparencia en el SurfaceAppearance para mezclar con esas partes.

Encontramos útil seguir estas pautas al crear mapas de textura de apariencia de superficie:
- Asegúrate de que tus mapas no sean más grandes de 1024×1024.
- Tu canal verde puede necesitar ser invertido dependiendo de la aplicación en la que trabajaste.
Animar la criatura
Animar es muy subjetivo y tiene un estilo personal. Las opciones incluyen captura de movimiento, animación manual "key frame" en tu aplicación DCC, o usar el potente Editor de Animaciones de Studio.
Como mencionamos anteriormente, queríamos asegurarnos de tener suficientes articulaciones para un movimiento fluido, así como suficientes extremidades, para que la animación de la criatura se sintiera natural y "en capas". El apilamiento, también conocido como movimiento secundario, es algo que ves en la vida cotidiana: cuando lanzas tu brazo, cada articulación reacciona al impulso inicial de tu brazo superior, y cada articulación de tu cuerpo no se mueve o descansa al mismo tiempo.
Usamos esta técnica para animar a la Criatura para que sintiera que las extremidades estaban reaccionando al movimiento impulsado por su cuerpo, como se muestra aquí:

Si usas una aplicación DCC externa para la animación, encontramos que las siguientes pautas funcionan mejor:
- Establece las tasas de fotogramas a al menos 30 FPS.
- Crea tus animaciones con el mismo personaje al que se las aplicas.
- Exporta tus datos de animación como un archivo .fbx separado.
Debido a que animamos el personaje fuera de Studio, necesitábamos usar el Editor de Animaciones para importar el archivo de animación .fbx. El editor te permite seleccionar cualquier avatar con articulaciones o motores y controlarlos a través de puntos en la línea de tiempo.
Para importar una animación:
En la pestaña Avatar de la barra de herramientas, haz clic en Clip Editor.
Selecciona el personaje riggeado que deseas animar en Roblox. El personaje debe ser el mismo que estás riggeando en tu aplicación DCC externa.
Haz clic en el botón ⋯ en la sección superior izquierda de la ventana del editor, selecciona Importar desde FBX Animation, y localiza tu archivo de animación exportado .fbx.

Cuando estés satisfecho con tu animación, puedes exportarla para descubrir el ID de animación, que luego puedes usar en scripts de Roblox para ejecutarlas. Por ejemplo, puedes agregar un Script al grupo de modelos del personaje importado y usar el siguiente código para ejecutar la animación:
local animationId = "YOUR_ANIMATION_ID"local char = script.Parentlocal animController = char:FindFirstChildWhichIsA("Humanoid") or char:FindFirstChildOfClass("AnimationController")local animation = Instance.new("Animation")animation.AnimationId = "rbxassetid://" .. tostring(animationId)local animTrack = animController:LoadAnimation(animation)animTrack:Play(0, 1, 1)
Resultados finales
Después de algunos ajustes finales en colores, brillo de luces y algunos efectos de partículas más para darle un efecto de halo más fuerte frente a las ventanas, aquí está el resultado final en la estación espacial!
