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é uma roupa animada de um barco a vela. Nós usamos a configuração personalizada do Avatar Importer (agora o 3D Importer ) para trazer mais personagens personalizados exóticos, como as criaturas misteriosas do buraco negro e os androides amigáveis, se você não estiver consciente deles.

As seções a seguir mostram como usamos modelagem e skinning, PBR (aparência da superfície) e VFX para construir um dos nossos personagens mais complicados que nomeamos o "Creature". Queríamos que fosse brilhante, emitisse alguma luz, tivesse rastros de fumaça de partículas e um movimento de fluido que envolveu modelagem de um rig com juntas suficientes para criar as ondas convencionais de seus tentá

Creature Banner

Fixando

Quando estávamos modelando a Criatura, encontramos que era melhor modelar o personagem em uma postura neutral, porque essa postura é melhor para dobrar em várias direções. Se modelássemos a Criatura com seus tentáculos já enrolados, isso levaria à esticagem se animássemos os tentáculos para dobrar na direção oposta. As seguintes capturas de tela mostram a Criatura em seu estado natural:

De uma postura neutra, adicionamos articulados economicamente, focando nas áreas que precisavam de mais movimento. Menos articulados é melhor, porque você terá que gerenciá-los ao manter seu personagem, e você terá menos para controlar quando anima-los. Nas capturas de tela anteriores, a Criatura parece ter muitos articulados no centro, mas o corpo principal só tem um articulação.

A maioria das outras articulações está em direção aos tentáculos e mandíbulas. Com os tentáculos, queríamos muito movimento secundário, ou movimento que é camadas, para criar um efeito convencente de que todos estão se movendo por conta possuir. No entanto, a massa central dos tentáculos estava tão perto umas das outras que sentia-se desperdiçado fazer articulações para todos

Creature Front, Maya

Encontramos as seguintes diretrizes úteis, para que o mesmo malha de personagem importe corretamente no Studio:

  • Juntas e ossos individuais devem ter nomes únicos.
  • Meshes não devem ter o mesmo nome que articulações e ossos.
  • Meshes não devem ter transformações antes de skinning / binding; em outras palavras, transformações devem ser 0 e escalas devem ser 1.
  • Normal de malha deve ficar para fora (o modelo não deve olhar para dentro).
  • Esqueletos não devem ter nenhum fator de escala; todos os conjuntos devem ser [1, 1, 1].

Envelhecimento

Quando terminamos o esqueleto da criatura, o próximo passo foi pintar o malha. Pintar pode ser uma tarefa árdua, então para facilitar as coisas, é melhor estar familiarizado com as diferentes configurações de pele inicial do seu aplicativo DCC para encontrar a que você gosta. Como este é um personagem orgânico, nós pintamos com muito pouco espaço de queda em cada articulação e sobre

Renda Mária
Suavizar a Skinning

Encontramos as seguintes diretrizes que produziram os melhores resultados para skinning:

  • Efeitos de skinning (que afetam uma parte do modelo quando movida) devem ser um máximo de 4 efeitos por vértice.
  • Nomes de joint e meshes precisam ser únicos, tanto dentro de cada um quanto entre cada um.
  • Qualquer peito que você queira importar no Studio deve ter alguma influência na skinning do modelo, caso contrário, o motor não importará. Sempre que possível, skin seu modelo em sua posição original ou "Conectar / Vincular".

Importando o Mesh para o Studio

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

Para importar o mesmo para o Studio:

  1. Exporte o personagem da aplicação DCC e certifique-se de seguindo:

    • Todos os normais, escalas e nomes estão corretos.
    • O personagem tem todas as camadas de ossos e articulações e todos os meshes.
    • Meshes estão todos abaixo de 10.000 triângulos para cada parte da malha.
    • O tamanho total da malha não é maior que 2000 unidades em qualquer eixo.
    • Veja Requisitos de Malha para uma lista completa de especificações do modelo.
    Creature in DCC Tool
  2. No Importador 3D, importe o arquivo personalizado .fbx ou .obj.

    Creature Imported Into Studio

Fazendo a Criatura Brilhar

Quando o modelo da criatura foi estável e não exigiu mais importações imediatas no Studio, começamos a montar os objetos de Superfície, luzes e efeitos visuais. Fiz isso para garantir que a qualidade do modelo fosse boa antes de proceder à colocação e edição de qualquer aspecto dele.

Glowing Creature Example

Sabíamos que queríamos que a Criatura fosse escura, e os pontos focais para serem os olhos e seus "grabby" tentáculos. Pontos altos de contraste tendem a atrair a atenção, então ter alguns fortes garante que o visualizador saiba o que focar. O Studio suporta materiais neon que se iluminam, então no início separamos os olhos para que pudessem ser seus próprios materiais do

Creature Eyes in Studio

O material neon não emite luz real, então depois de alguns testes, adicionamos peças separadas para controlar a direção e direção da emissão de luz. Isso garantiu que a iluminação fosse direcionada de uma maneira para melhorar o brilho dos olhos e também projetar sua própria fonte de luz.

Point Light in Studio

Observe que os SpotLights adicionam brilho visual à criatura perto de outras superfícies ou de um jogador.

Creature Light Example

Além disso, queríamos que os tentáculos da criatura emitissem algumas partículas, para que ela deixasse um rastro de fumaça quando se movia. Como os tentáculos são muito longos, adicionar o ParticleEmitter ao longo de todo o tentáculo faria com que as partículas fossem emitidas de todo o tentáculo, em vez do dorso. Para combatê-lo, usamos uma pe

Particle Example

Fazendo o VFX Seguir o Personagem

As posições de malha do personagem de pele não são atualizadas quando as animações de criaturas são atualizadas, então precisávamos de um método para garantir que o VFX, SFX e luzes todas seguissem o criaturas corretamente. Para alcançar isso, criamos um script de controle de VFX e usamos o CollectionService para informar as peças que contêm o VFX onde os ossos da criatura estão e para seguir.

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

    Script Local

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

    -- Este módulo conectou peças às animações para que elas sejam atualizadas como
    -- animação de joga. É um workaround para as limitações atuais
    -- com articulações e ossos e não será sempre necessário.
    --
    -- Prerequisitos:
    -- Para ser incluído, os modelos precisam da tag "AnimatedVfxModel" e um pasta
    -- de todas as peças que você deseja sincronizar com animações. Cada peça precisa
    -- um atributo chamado "AttachedBoneName" que se refere ao nome do
    -- osso que você quer anexar. Partes também devem estar em seus
    -- posições corretas em relação ao ossos desejados.
    --
    -- Para usar:
    -- Um LocalScript deve exigir este módulo, então conecte
    -- VfxUpdateModule.updateVfx para o evento RunService.PreSimulation.
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- CONFIGURAR - isso deve ser executado uma vez em cada cliente.
    -- Colete todos os modelos com a etiqueta
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- onde armazenaremos todas as peças e deslocamentos
    -- Atribua uma tabela a cada modelo que contém todas as peças de efeitos e deslocamento
    for _, model in vfxModels do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Encontre o diretório vfx
    -- Encontre o osso via atributo e cálculo o deslocamento para cada peça.
    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)
    -- UPDATE - Isso deve ser linkado para o RunService.PreSimulation de cada cliente.
    -- Vá através de todos os modelos e depois atualize todas as peças no 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 dizer a qualquer objeto atribuído apropriadamente com AnimatedVfxModel para atualizar em um evento de jogo.

  3. Nós marcamos os grupos de modelos necessários com o AnimatedVfxModel usando o Editor de Tag , acessível a partir da aba Vista. Usar tags permite que o 1> VFXUpdateModule1> saiba qual objeto procurar como primeiro filho VFX e aplique a atualização.

    VFX In Studio Example
  4. Finalmente, adicionamos um atributo AttachedBoneName personalizado à peça que queríamos animação e adicionamos o nome preciso da articulação que queríamos que fosse seguir.

Texturando a Criatura

Em seguida, configuramos os mapas de textura PBR (Physically Baseados Rendered). Esses mapas de textura poderosos dão à criatura as várias tonalidades de tom e variações de superfície para fazer com que ela pareça ter muitos pequenos picos e imperfeições. Este efeito visual ajuda a vender a aparência da criatura quando ela estiver mais perto do jogador.

Creature Texturing Comparison

Aqui estão como criamos os mapas de textura da aparência da superfície:

  1. Os mapas de textura para este personagem estavam todos em um "sheet" por mapa. Isso fez com que a criatura fosse mais eficiente e significasse que tínhamos que lidar com menos mapas de textura ou SurfaceAppearance objetos.

  2. Para áreas que precisavam brilhar ou serem auto-iluminadas, como os "tentáculos de arco-íris", também usamos transparência na SurfaceAppearance para misturar com essas peças.

    Illumination Example

    Achemos útil seguir essas diretrizes ao criar mapas de textura de superfície:

    • Certifique-se de que seus mapas não sejam maiores que 1024×1024.
    • Seu canal verde pode precisar ser invertido dependendo da aplicação em que você trabalhou.

Animando a Criatura

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

Como mencionamos anteriormente, queríamos ter juntas suficientes para movimento de fluido, bem como limbes suficientes, para que a animação de criatura se sentisse natural e "camadas". A camada, também conhecida como movimento secundário, é algo que você vê na vida real - quando você estica seu braço para fora, cada articulação está reagindo 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 animação da criatura para se sentir como se os membros estivessem reagindo ao movimento gerado por seu corpo, como mostrado aqui:

Creature Animation Example

Se usando um aplicativo de DCC externo para animações, encontramos que as seguintes diretrizes funcionam melhor:

  • Definir taxas de quadro para pelo menos 30 FPS.
  • Crie suas animações com o mesmo personagem que você está aplicando.
  • Exporte seus dados de animação como um arquivo separado .fbx.

Como animamos o personagem fora do Studio, precisávamos usar o Editor de Animação para importar o arquivo de animação .fbx. O editor permite que você selecione qualquer avatar com articulados ou motores e o dirija via pontos no tempo.

Para importar uma animações:

  1. Na aba Plugins, selecione o Editor de animação.

    Animation Editor In Studio
  2. Selecione o personagem modelado que você deseja anunciar no Roblox. O personagem deve ser o mesmo que você está modelando em sua aplicação DCC externa.

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

    Animation Import Example 1 Animation Import Example 2
  4. Quando você estiver feliz com sua animações, você pode exportá-la para descobrir o ID da animação, que você pode usar em scripts do Roblox para executá-los. Por exemplo, você pode adicionar um Script ao grupo de modelos do personagem importado e usar o seguinte código para executar a animações:

    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 finais

Depois de alguns ajustes finais para cores, brilhos de luz e alguns efeitos de partículas para dar a você um efeito de halo mais forte na frente das janelas, aqui está o resultado final na estação espacial!

Final Creature Rendering