Personagens personalizados

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Você pode importar malhas personalizadas para criar tudo, desde NPCs até um tecido animado de um barco a vela. Usamos a configuração personalizada do Importador para trazer personagens personalizados mais exóticos, como as misteriosas criaturas de buraco negro e os droids de serviço amigáveis, mas desavisados.

As seções a seguir detalham como usamos rigging e skinning, PBR (aparência da superfície) e VFX para construir um de nossos personagens mais complicados, que nomeamos de "Criatura." Queríamos que ele brilhasse, emitisse alguma luz, tivesse trilhas de fumaça de partículas e um movimento fluido que envolvesse skining de um rig com articulações suficientes para criar as ondas convincentes de seus tentáculos.

Banner da Criatura

Rig

Quando estávamos fazendo o rigging da Criatura, descobrimos que era melhor modelar o personagem em uma pose neutra, porque essa pose é mais adequada para se dobrar em múltiplas direções. Se tivéssemos modelado a Criatura com seus tentáculos já enrolados, isso levaria a estiramentos se animássemos os tentáculos para se dobrarem na direção oposta. As seguintes capturas de tela mostram a Criatura em seu estado natural:

A partir de uma pose neutra, adicionamos articulações de forma econômica, focando nas áreas que precisavam de mais movimento. Quanto menos articulações, melhor, pois você terá que gerenciá-las ao fazer o skinning do seu personagem, e terá menos para controlar ao animá-las. Nas capturas de tela anteriores, a Criatura parece ter muitas articulações no centro, mas o corpo principal tem apenas uma articulação.

A maioria das outras articulações está voltada para os tentáculos e mandíbulas. Com os tentáculos, queríamos muito movimento secundário, ou movimento que é em camadas, para criar um efeito convincente de que todos estão se movendo por conta própria. No entanto, a massa central dos tentáculos estava tão próxima que parecia desperdício fazer articulações para todos eles, tanto em performance quanto em esforço para animar. Então, em vez disso, tratamos a massa central como um único tentáculo grande com "caudas" menores onde as pontas deixavam a massa central.

Criatura Frente, Maya

Achamos as seguintes diretrizes úteis para que a malha do personagem fosse importada corretamente para o Studio:

  • Articulações e ossos individuais devem ter nomes únicos.
  • Malhas não devem ter o mesmo nome que articulações e ossos.
  • Malhas devem não ter transformações antes do skinning/vinculação; em outras palavras, as transformações devem ser 0 e as escalas devem ser 1.
  • Normais de malha devem estar voltadas para fora (o modelo não deve parecer do avesso).
  • Esqueletos não devem ter qualquer fator de escala; todas as articulações devem ser [1, 1, 1].

Skin

Quando terminamos o esqueleto da Criatura, o próximo passo foi fazer o skinning da malha. O skinning pode ser uma tarefa árdua, então, para facilitar, é melhor estar familiarizado com as diferentes configurações iniciais de skinning do seu aplicativo DCC para encontrar a que você gosta. Como este é um personagem orgânico, fizemos o skinning com bastante queda em cada articulação e sobreposição entre elas. Dessa forma, a dobra se sente suave e não abrupta. As seguintes capturas de tela mostram exemplos de skinning ruim e skinning suave, respectivamente:

Skinning Ruim
Skinning Suave

Achamos que as seguintes diretrizes produzem os melhores resultados para o skinning:

  • Influências de skinning (ou seja, que afetam uma parte do modelo quando movidas) devem ter um máximo de 4 influências por vértice.
  • Nomes de articulações e malhas precisam ser únicos, tanto entre si quanto uns com os outros.
  • Qualquer articulação que você queira importar para o Studio deve ter alguma influência no skinning do modelo, caso contrário, o motor não a importa. Sempre que possível, faça o skinning do seu modelo em sua pose original ou de "vinculação".

Importar a malha para o Studio

Importar seus personagens personalizados para o Studio é uma das partes mais emocionantes do processo, porque você pode ver suas criações na experiência que está construindo!

Para importar a malha para o Studio:

  1. Exporte o personagem do aplicativo DCC e certifique-se do seguinte:

    • Todas as normais, escalas e nomes estão corretos.
    • O personagem tem toda a hierarquia de articulações e ossos e todas as malhas.
    • Malhas têm menos de 10.000 triângulos para cada parte da malha.
    • O tamanho total da malha não é superior a 2000 unidades em qualquer eixo.
    • Veja Requisitos de Malhas para uma lista completa de especificações do modelo.
    Criatura no Ferramenta DCC
  2. No Importador, importe o arquivo .fbx ou .obj personalizado.

    Criatura Importada Para o Studio

Fazer a criatura brilhar

Uma vez que o modelo da Criatura estava estável e não exigia mais importação imediata para o Studio, começamos a montar os objetos SurfaceAppearance, luzes e efeitos visuais. Fizemos isso para garantir que a qualidade do modelo fosse boa o suficiente antes de prosseguir para colocar e editar qualquer um de seus aspectos.

Exemplo de Criatura Brilhante

Sabíamos que queríamos que a Criatura fosse escura, e que os pontos focais fossem os olhos e seus tentáculos "pegajosos". Pontos altos de contraste tendem a atrair atenção, então ter alguns fortes garante que o espectador saiba onde se concentrar. O Studio suporta materiais neon que se auto-iluminam, então, no início, separamos os olhos para que eles fossem seu próprio material em relação ao resto do personagem. Fizemos algo semelhante para os tentáculos, para que eles brilhassem apenas nas pontas.

Olhos da Criatura no Studio

Material neon não emite luz real, então, após alguns testes, adicionamos partes separadas para controlar a colocação e direção da emissão de luz. Isso garantiu que a iluminação fosse direcionada de uma maneira que realçasse o brilho dos olhos e também projetasse sua própria fonte de luz.

Luz Pontual no Studio

Observe que os SpotLights adicionam um efeito visual à Criatura próximo de outras superfícies ou de um jogador.

Exemplo de Luz da Criatura

Além disso, queríamos que os tentáculos da Criatura emitissem algumas partículas, para que deixassem um rastro de fumaça quando se movessem. Como os tentáculos são muito longos, adicionar o ParticleEmitter ao tentáculo inteiro faria as partículas serem emitidas do tentáculo inteiro em vez da ponta. Para combater isso, usamos uma pequena parte posicionada perto do final do tentáculo, para que pudéssemos controlar o tamanho da emissão, a colocação e a direção das partículas.

Exemplo de Partículas

Fazer os VFX seguirem o personagem

As posições da malha do personagem esquelético não são atualizadas quando a Criatura anima, então precisávamos de um método para garantir que os VFX, SFX e luzes seguissem a Criatura corretamente. Para conseguir isso, criamos um script controlador de VFX e usamos o CollectionService para informar as partes que continham os VFX onde estavam os ossos da criatura e para segui-los.

  1. Colocamos o seguinte LocalScript em StarterPlayerStarterPlayerScripts. Isso, essencialmente, executa a função de atualização do VFX.

    Script Local

    -- Adicione este trecho a um script local existente que faça conexões no PreSimulation
    local RunService = game:GetService("RunService")
    local vfx = require(workspace.VfxUpdateModule)
    RunService.PreSimulation:Connect(vfx.updateVfx)
    Módulo de Script

    -- Este módulo anexa partes às animações para que sejam atualizadas conforme a
    -- animação é reproduzida. É uma solução alternativa para as atuais limitações
    -- com Joints e Bones e não será sempre necessário.
    --
    -- Pré-requisitos:
    -- Para ser incluído, os modelos precisam da tag "AnimatedVfxModel" e de uma pasta
    -- de todas as partes que você deseja sincronizar com a animação. Cada parte precisa
    -- de um atributo chamado "AttachedBoneName" que se refere ao nome do
    -- osso que você deseja anexar. As partes também devem estar em suas
    -- posições corretas em relação ao osso desejado.
    --
    -- Para Usar:
    -- Um LocalScript deve requerer este módulo, e então conectar
    -- VfxUpdateModule.updateVfx ao evento RunService.PreSimulation.
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- CONFIGURAÇÃO - isso deve ser executado uma vez em cada cliente.
    -- Coletar todos os modelos com a tag
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- onde armazenaremos todas as partes e offsets
    -- Atribuir uma tabela a cada modelo que conterá todas as partes de vfx e offset
    for _, model in vfxModels do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Encontrar a pasta VFX
    -- Encontrar o osso via atributo e calcular o offset 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("Parte de Vfx se refere a um osso que não pode ser encontrado.")
    end
    end
    end
    print(vfxTable)
    -- ATUALIZAR - Isso deve ser vinculado ao RunService.PreSimulation de cada cliente
    -- Percorra todos os modelos e atualize todas as partes do modelo para corresponder ao bonecframe.
    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. Criamos um VFXUpdateModule ModuleScript para informar a quaisquer objetos marcados adequadamente com AnimatedVfxModel para atualizar em um evento de reprodução.

  3. Marcamos os grupos de modelos necessários com AnimatedVfxModel usando a seção Tags de suas propriedades. Usar tags permite que o VFXUpdateModule saiba qual objeto procurar como o primeiro filho de VFX e aplicar a atualização.

    VFX No Studio Exemplo
  4. Por fim, adicionamos um atributo personalizado AttachedBoneName à parte que desejamos animar e adicionamos o nome exato da articulação que queremos que ela siga.

Texturizar a criatura

Em seguida, configuramos os mapas de textura PBR (Renderização Baseada em Física). Esses potentes bitmaps dão à criatura o brilho variado e as variações de superfície para fazê-la parecer ter muitas pequenas protuberâncias e imperfeições. Esse efeito visual ajuda a vender a aparência da Criatura quando está mais perto do jogador.

Comparação de Textura da Criatura

Aqui está como criamos os mapas de textura de aparência de superfície:

  1. Os mapas de textura para este personagem estavam todos em uma única "folha" por mapa. Isso tornou a criatura mais eficiente e significou que tínhamos que lidar com menos mapas de textura ou objetos SurfaceAppearance.

  2. Para áreas que precisavam brilhar ou ser auto-iluminadas, como os "tentáculos pegajosos", também usamos transparência no SurfaceAppearance para misturar com essas partes.

    Exemplo de Iluminação

    Achamos útil seguir essas diretrizes ao criar mapas de textura de aparência de superfície:

    • Certifique-se de que seus mapas não sejam maiores que 1024×1024.
    • Seu canal verde pode precisar ser invertido, dependendo do aplicativo que você usou.

Animar a criatura

Animar é muito subjetivo e tem um estilo pessoal. As opções incluem captura de movimento, animação manual "key frame" em seu aplicativo DCC ou usar o poderoso Editor de Animação do Studio.

Como mencionamos anteriormente, queríamos ter certeza de que tínhamos articulações suficientes para um movimento fluido, bem como membros suficientes, para que a animação da criatura parecesse natural e "em camadas." Camadas, também conhecidas como movimento secundário, são algo que você vê na vida cotidiana — quando você lança seu braço, cada articulação reage ao impulso inicial do seu braço superior, e cada articulação em seu corpo não se move ou descansa ao mesmo tempo.

Usamos essa técnica para animar a Criatura para que os membros parecessem reagir ao movimento impulsionado por seu corpo, como mostrado aqui:

Exemplo de Animação da Criatura

Se você estiver usando um aplicativo DCC externo para animação, achamos que as seguintes diretrizes funcionam melhor:

  • Defina as taxas de quadros para pelo menos 30 FPS.
  • Crie suas animações com o mesmo personagem ao qual está aplicando.
  • Exporte seus dados de animação como um arquivo .fbx separado.

Como animamos o personagem fora do Studio, precisamos usar o Editor de Animação para importar o arquivo de animação .fbx. O editor permite que você selecione qualquer avatar com articulações ou motores e os controle por pontos na linha do tempo.

Para importar uma animação:

  1. Na aba Avatar da barra de ferramentas, clique em Editor de Clipes.

  2. Selecione o personagem rigado que você deseja animar no Roblox. O personagem deve ser o mesmo que você está fazendo o rigging em seu aplicativo DCC externo.

  3. Clique no botão na seção superior esquerda da janela do editor, selecione Importar da Animação FBX e localize seu arquivo de animação exportado .fbx.

    Exemplo de Importação de Animação 2
  4. Quando estiver satisfeito com sua animação, você pode exportá-la para descobrir o ID da animação, que você pode usar em scripts do Roblox para executá-las. Por exemplo, você pode adicionar um Script ao grupo do modelo do personagem importado e usar o seguinte código para executar a animação:

    Exemplo de Script de Animação

    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 Finais

Após algumas ajustes finais nas cores, brilho das luzes e alguns efeitos de partículas para dar um efeito de halo mais forte em frente às janelas, aqui está o resultado final na estação espacial!

Renderização Final da Criatura
©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.