Personajes personalizados

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Puedes importar mallas personalizadas para crear todo, desde NPCs hasta una tela animada de un barco a vela.Utilizamos la configuración personalizada del 3D Importer para traer más personajes personalizados exóticos, como las misteriosas criaturas del agujero negro y los droides de servicio amistosos, si no están enterados.

Las siguientes secciones cubren cómo usamos montaje y piel, PBR (aspecto, lookde la superficie) y VFX para construir uno de nuestros personajes más complicados que llamamos "Criatura". Queríamos que brillara, emitiera algo de luz, tuviera rastros de humo de partículas y una movimiento fluido que involucrara esculpir un rig con suficientes articulaciones para crear las ondas convincentes de sus tentáculos.

Creature Banner

Equipo

Cuando estábamos rigiendo a la Criatura, encontramos que era mejor modelar al personaje en una postura neutral, porque esa postura es mejor para doblarse en múltiples direcciones.Si modelamos a la Criatura con sus tentáculos ya doblados, habría llevado a estirar si animáramos los tentáculos a doblarse en la dirección opuesta.Las siguientes capturas de pantalla muestran a la criatura en su estado natural:

Desde una postura neutral, agregamos articulaciones de manera económica, enfocándonos en las áreas que necesitaban más movimiento.Cuantos menos puntos de soldadura, mejor, porque tendrás que administrarlos al desgazar tu personaje y tendrás menos que controlar cuando los animas.En las capturas de pantalla anteriores, la criatura parece que tiene 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 las mandíbulas.Con los tentáculos, queríamos mucho movimiento secundario, o movimiento que se superpone, para crear un efecto convincente de que todos se mueven por sí en posesión.Sin embargo, la masa central de los tentáculos estaba tan cerca el uno del otro que se sentía desperdiciado hacer uniones para todos ellos, tanto en el rendimiento como en el esfuerzo para animar.Así que en lugar de eso, tratamos la masa central como un solo gran tentáculo con "colas" más pequeñas donde los extremos dejaron la masa central.

Creature Front, Maya

Encontramos las siguientes directrices útiles para que la importación de malla de personajes se realice correctamente en Studio:

  • Las articulaciones y los huesos individuales deben tener nombres únicos.
  • Las mallas no deben tener el mismo nombre que las articulaciones y los huesos.
  • Las mallas no deben tener transformaciones antes de aplicar la piel/vincular; en otras palabras, las transformaciones deben ser 0 y las escalas deben ser 1.
  • Los normales de malla deben dirigirse hacia afuera (el modelo no debe mirar hacia adentro).
  • Los esqueletos no deberían tener ningún factor de escala; todas las articulaciones deberían ser [1, 1, 1].

Aspecto

Cuando terminamos el esqueleto de la criatura, el siguiente paso fue esculpir la malla.El espesado puede ser una tarea ardua, por lo que para facilitar las cosas, es mejor estar familiarizado con las diferentes configuraciones de espesado inicial de tu aplicación de DCC para encontrar la que te gusta.Dado que este es un personaje orgánico, lo recubrimos con mucha caída 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 una piel mala y una piel lisa, respectivamente:

Mala piel
Afeitado suave

Encontramos las siguientes directrices que produjeron los mejores resultados para skinning:

  • Las influencias de piel (es decir, que afectan a una parte del modelo cuando se mueve) deben ser un máximo de 4 influencias por vértice.
  • Los nombres conjuntos y de malla deben ser únicos, tanto dentro de sí mismos como entre sí.
  • Cualquier unión que quieras importar a Studio debe tener alguna influencia en la skinningdel aplicación de modelado, de lo contrario el motor no lo importa.Cuando sea posible, viste a tu modelo en su posa original o "enlazar".

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 la experiencia que estás construcción!

Para importar la malla en Studio:

  1. Exporte el personaje de la aplicación de DCC y asegúrese de lo siguiendo:

    • 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 están todas por debajo de 10,000 triángulos por cada parte de la malla.
    • El tamaño total de malla no supera las 2000 unidades en ningún eje.
    • Vea Requisitos de malla para una lista completa de especificaciones de modelo.
    Creature in DCC Tool
  2. En el importador de 3D, importa el archivo personalizado .fbx o .obj.

    Creature Imported Into Studio

Haz que la criatura brille

Una vez que el modelo de la criatura estaba estable y no requería más importación inmediata en Studio, comenzamos a unir los objetos de Apariencia de superficie, 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.

Glowing Creature Example

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, por lo que tener algunos fuertes garantiza que el espectador sepa en qué centrarse.Studio soporta materiales de neón que se iluminan por sí mismos, por lo que al principio separamos los ojos para que pudieran ser su propio material del resto del personaje.Hicimos algo similar para los tentáculos, por lo que solo brillarían en sus puntas.

Creature Eyes in Studio

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

Point Light in Studio

Observe que el SpotLights añade un resplandor visual a la Criatura cerca de otras superficies o de un jugador.

Creature Light Example

Además, queríamos que los tentáculos de la criatura emitan algunas partículas, para que dejaran un rastro de humo cuando se movieran.Debido a que los tentáculos son muy largos, agregar el ParticleEmitter a todo el tentáculo haría que las partículas emitan 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, la ubicación y la dirección de las partículas.

Particle Example

Haz que el VFX siga al personaje

Las posiciones de malla del personaje con piel no se actualizan cuando la criatura se anima, por lo que necesitábamos un método para asegurarnos de que los efectos visuales, los efectos especiales y las luces siguieran a la criatura correctamente.Para lograr esto, creamos un guión de controlador de VFX y usamos CollectionService para informar a las partes que contenían el VFX donde estaban los huesos de la criatura y para seguirlos.

  1. Colocamos el siguiente LocalScript en StarterPlayerStarterPlayerScripts . Esto esencialmente ejecuta la función de actualización de VFX.

    Guión local

    -- Agrega este fragmento a un script local existente que realice PreSimulación
    -- conexiones
    local RunService = game:GetService("RunService")
    local vfx = require(workspace.VfxUpdateModule)
    RunService.PreSimulation:Connect(vfx.updateVfx)
    Script de módulo

    -- Este módulo adjuntó partes a las animaciones para que se actualicen como
    -- jugadas de animación. Es una solución para las limitaciones actuales
    -- con articulaciones y huesos y no siempre será necesario.
    --
    -- Requisitos previos:
    -- Para ser incluidos, los modelos necesitan la etiqueta "AnimatedVfxModel" y una carpeta
    -- de todas las partes que desea sincronizar con la animaciones. Cada parte necesita
    -- un atributo llamado "Nombre de hueso adherido" que se refiere al nombre del
    -- hueso al que quieres unirte. Las piezas también deberían estar ya en su
    -- posiciones correctas relativas al hueso deseado.
    --
    — Para usar:
    -- Un script local debe requerir este módulo, luego conectarse
    -- VfxUpdateModule.updateVfx al evento RunService.PreSimulation.
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- CONFIGURACIÓN - esto debería ejecutarse una vez en cada cliente.
    -- Recoge todos los modelos con la etiqueta
    local 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 efectos visuales y desplazamiento
    for _, model in vfxModels do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Encuentra la carpeta de VFX
    -- Encuentra el hueso a través del atributo y calcula el desplazamiento para cada parte.
    for _,part in vfxParts do
    local name = part:GetAttribute("AttachedBoneName")
    local bone = model:FindFirstChild(name, true)
    if bone then
    local offset = (bone.TransformedWorldCFrame:inverse() * part.CFrame)
    vfxTable[model][part] = {bone, offset}
    else
    warn("Vfx part refers to bone that could not be found.")
    end
    end
    end
    print(vfxTable)
    -- ACTUALIZACIÓN - Esto debería estar vinculado al servicio de simulación previa de cada cliente, RunService.PreSimulation
    -- Ve a través de todos los modelos, luego actualiza todas las partes del modelo para que coincidan con el marco de hueso.
    function VfxUpdateModule.updateVfx()
    for model, vfxParts in vfxTable do
    for part, bone in vfxParts do
    part.CFrame = bone[1].TransformedWorldCFrame * bone[2]
    end
    end
    end
    return VfxUpdateModule
  2. Creamos un VFXUpdateModule ModuleScript para informar a cualquier objeto etiquetado apropiadamente con AnimatedVfxModel para actualizar en un evento de reproducción.

  3. Etiquetamos los grupos de modelos necesarios con el AnimatedVfxModel usando el Editor de etiquetas , accesible desde la pestaña Ver.El uso de etiquetas permite que el VFXUpdateModule sepa qué objeto buscar como primer hijo de VFX y aplique la actualización.

    VFX In Studio Example
  4. Por último, agregamos un atributo personalizado Nombre de hueso anexado a la parte que queríamos animar y agregamos el nombre preciso de la articulación que queríamos que seguir.

Textura la criatura

A continuación, configuramos los mapas de textura PBR (rendimiento físico basado).Estos poderosos mapas de bits le dan a la criatura las variadas tonalidades y variaciones de superficie para hacerla parecer que tiene muchos pequeños golpes y imperfecciones.Este efecto visual ayuda a vender la apariencia de la criatura cuando está más cerca del jugador.

Creature Texturing Comparison

Así es como creamos los mapas de textura de apariencia de la superficie:

  1. 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 tuvimos que lidiar con menos mapas de textura o SurfaceAppearance objetos.

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

    Illumination Example

    Encontramos útil seguir estas directrices al crear mapas de textura de apariencia de superficie:

    • Asegúrate de que tus mapas no sean más grandes que 1024×1024.
    • Tu canal verde puede necesitar ser volteado dependiendo de la aplicación en la que trabajaste.

Animar a la criatura

Animar es muy subjetivo y tiene un estilo personal.Las opciones incluyen la capturarde movimiento, la animación de "marcos clave" de mano en su aplicación de DCC o el uso del poderoso editor de animación de Studio.

Como mencionamos anteriormente, queríamos asegurarnos de tener suficientes articulaciones para el movimiento de fluidos, así como suficientes extremidades, por lo que la animación de la criatura se sentía natural y "estratificada". La superposición, también conocida 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 a sentirse como si sus extremidades reaccionaran al movimiento impulsado por su cuerpo como se muestra aquí:

Creature Animation Example

Si se utiliza una aplicación DCC externa para la animaciones, encontramos que las siguientes directrices funcionan mejor:

  • Establece las tasas de marco en al menos 30 FPS.
  • Crea tus animaciones con el mismo personaje al que estás aplicándolo.
  • Exporta tus datos de animación como un archivo separado .fbx.

Debido a que animamos al 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 conducirlo a través de puntos en la línea de tiempo.

Para importar una animaciones:

  1. En la pestaña Avatar de la barra de herramientas, abra el Editor de animaciones .

  2. Seleccione el personaje rígido que desea animar en Roblox. El personaje debe ser el mismo que estás rigiendo en tu aplicación DCC externa.

  3. Haga clic en el botón en la sección superior izquierda de la ventana del editor, seleccione Importar de la animación de FBX y localice el archivo de animación exportado .fbx.

    Animation Import Example 2
  4. Cuando estés satisfecho con tu animaciones, puedes exportarla para descubrir la ID de la animación, que luego puedes usar en los scripts de Roblox para ejecutarlos.Por ejemplo, puedes agregar un Script al grupo de modelos del personaje importado y usar el siguiente código para ejecutar la animaciones:

    Animation Script Example

    local animationId = "YOUR_ANIMATION_ID"
    local char = script.Parent
    local 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 a los colores, el brillo de la luz 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!

Final Creature Rendering