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, de NPCs a um tecido animado de um barco a vela.Usamos a configuração personalizada do Importador 3D para trazer personagens personalizados mais exóticos, como as criaturas misteriosas do buraco negro e os droides de serviço amigáveis, se não estiverem cientes.

As seções a seguir abordam como usamos rigging e skinning, PBR (aparência da superfície), e VFX para construir um dos nossos personagens mais complicados que chamamos de "Criatura". Queríamos que ele brilhasse, emitisse alguma luz, tivesse rastros de fumaça de partículas e uma movimentação fluida que envolvesse esfolar um rig com articulações suficientes para criar as ondas convincentes de seus tentáculos.

Creature Banner

Equipamento

Quando estávamos rigando a Criatura, achamos melhor modelar o personagem em uma posição neutra, porque essa posição é melhor adequada para dobrar em várias direções.Se modelássemos a Criatura com seus tentáculos já enrolados, teria levado a esticar se animássemos os tentáculos a dobrar na direção oposta.Os seguintes captura de tela mostram a Criatura em seu estado natural:

A partir de uma posição neutra, adicionamos articulações economicamente, focando nas áreas que precisavam de mais movimento.Quanto menos articulações, melhor, porque você terá que gerenciá-las ao esfolar seu personagem e terá menos para controlar quando as animar.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á para os tentáculos e mandíbulas.Com os tentáculos, queríamos muito movimento secundário, ou movimento que é sobreposto, para criar um efeito convincente de que todos estão se movendo por conta possuir.No entanto, a massa central dos tentáculos estava tão próxima um do outro que sentia-se desperdiçado fazer juntas para todos eles, tanto em desempenho quanto esforço para animar.Então, em vez disso, tratamos a massa central como um único grande tentáculo com "céus" menores onde as pontas deixaram a massa central.

Creature Front, Maya

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

  • Juntas e ossos individuais devem ter nomes únicos.
  • Malhas não devem ter o mesmo nome de juntas e ossos.
  • Malhas não devem ter transformações antes de esfolar/vincular; em outras palavras, as transformações devem ser 0 e as escalas devem ser 1.
  • As normais de malha devem virar para fora (o modelo não deve olhar para dentro).
  • Esqueletos não devem ter nenhum fator de escala; todas as articulações devem ser [1, 1, 1].

Skin

Quando terminamos o esqueleto da Criatura, o próximo passo foi esfolar a malha.A esfoliação pode ser uma tarefa árdua, então, para facilitar as coisas, é melhor estar familiarizado com as diferentes configurações iniciais de esfoliação do seu aplicativo DCC para encontrar a que você gosta.Como este é um personagem orgânico, nós o esfolamos com muita queda em cada junta e sobreposição entre elas.Dessa forma, o dobramento se sente suave e não afiado.Os seguintes captura de tela mostram má esfoliação e esfoliação suave, respectivamente:

Pessima Skinagem
Aplainamento Suave da Pele

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

  • Influências de skinning (ou seja, elas afetam uma parte do modelo quando movidas) devem ser um máximo de 4 influências por vértice.
  • Nomes de junção e malha precisam ser únicos, tanto dentro de cada um deles quanto entre eles.
  • Qualquer junta que você deseja importar para o Studio deve ter alguma influência na skinningdo modelo, caso contrário o motor não a importará.Sempre que possível, cubra seu modelo em sua posição original ou "Conectar / Vincular".

Importe o modelo 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á construção / simulação!

Para importar o mesh para o Studio:

  1. Exporte o personagem da aplicação DCC e garanta o seguindo:

    • 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 estão todas sob 10.000 triângulos para cada parte da malha.
    • O tamanho total da malha não excede 2000 unidades em qualquer eixo.
    • Veja Requisitos de Modelo para uma lista completa de especificações de modelo.
    Creature in DCC Tool
  2. No Importador 3D , importe o arquivo personalizado ou .

    Creature Imported Into Studio

Faça a criatura brilhar

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

Glowing Creature Example

Sabíamos que queríamos que a Criatura fosse escura e 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 em que se concentrar.O Studio suporta materiais de néon que se iluminam sozinhos, então, no início, separamos os olhos para que pudessem ser seu próprio material do resto do personagem.Fizemos algo semelhante para os tentáculos, para que eles brilhassem apenas em seus pontas.

Creature Eyes in Studio

O material de neon não emite luz real, então, após alguns testes, adicionamos peças 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 melhorasse o brilho dos olhos e também projetasse sua própria fonte de luz.

Point Light in Studio

Observe que o SpotLights adiciona brilho visual à Criatura próxima 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 deixassem um rastro de fumaça quando se movesse.Como os tentáculos são muito longos, adicionar o ParticleEmitter à totalidade do tentáculo faria com que as partículas emitissem de todo o tentáculo, em vez do topo.Para combater isso, usamos uma pequena parte posicionada perto do fim do tentáculo, para que pudéssemos controlar o tamanho da emissão, o posicionamento e a direção dos participos.

Particle Example

Faça o VFX seguir o personagem

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

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

    Script Local

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

    -- Este módulo anexou peças às animações para que sejam atualizadas como as
    -- jogos de animação. É uma solução de contorno para as limitações atuais
    -- com Articulações e Ossos e nem sempre será necessário.
    --
    -- Pré-requisitos:
    -- Para ser incluído, os modelos precisam da tag "AnimatedVfxModel" e de uma pasta
    -- de todas as peças que você deseja sincronizar com a animações. Cada peça precisa
    -- um atributo chamado "Nome do Osso Anexado" que se refere ao nome do
    -- osso que você deseja anexar. As peças também devem já estar em seu
    -- posições corretas em relação ao osso desejado.
    --
    -- Para usar:
    -- Um LocalScript deve exigir esse módulo, então conectar
    -- 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 tag
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- onde vamos armazenar todas as peças e deslocamentos
    -- Atribua uma tabela a cada modelo que conterá todas as peças vfx e o deslocamento
    for _, model in vfxModels do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Encontre a pasta theVFX
    -- Encontre o osso via atributo e calcule 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)
    -- ATUALIZAÇÃO - Isso deve estar ligado ao RunService.PreSimulation de todos os clientes
    -- Passe por todos os modelos, então atualize todas as peças no modelo para combinar com o 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 marcado adequadamente com AnimatedVfxModel para atualizar em um evento de reprodução.

  3. Nós marcamos os grupos de modelos necessários com o AnimatedVfxModel usando o Editor de Etiquetas , acessível a partir da aba Ver.Usar tags permite que o VFXUpdateModule saiba qual objeto procurar como a primeira criança VFX e aplique a atualização.

    VFX In Studio Example
  4. Finalmente, adicionamos um atributo personalizado Nome de Osso Anexado à peça que queríamos animar e adicionamos o nome preciso da junta que queríamos seguir.

Texturize a criatura

Em seguida, configuramos os mapas de textura PBR (Physically Based Rendered).Esses poderosos mapas de bits dão à criatura as várias tonalidades e variações de superfície para fazê-la parecer que tem muitos pequenos saltos e imperfeições.Este efeito visual ajuda a vender a aparência da Criatura quando ela está mais perto do jogador.

Creature Texturing Comparison

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

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

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

    Illumination Example

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

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

Anime a criatura

Animar é muito subjetivo e tem um estilo pessoal.As opções incluem capturarde movimento, animação de "quadro-chave" de mão em sua aplicação DCC ou uso do poderoso Editor de Animação do Studio.

Como mencionamos anteriormente, queríamos ter certeza de que tínhamos suficientes articulações para movimento de fluido, assim como suficientes membros, então a animação da criatura se sentiu natural e "dividida". A camadação, também conhecida como movimento secundário, é algo que você vê na vida cotidiana - quando você joga o braço para fora, cada articulação está reagindo ao impulso inicial de 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 a se sentir como se seus membros estivessem reagindo ao movimento impulsionado por seu corpo, como mostrado aqui:

Creature Animation Example

Se usar uma aplicação DCC externa para animações, encontramos as seguintes diretrizes que funcionam melhor:

  • Defina as taxas de quadro para pelo menos 30 FPS.
  • Crie suas animações com o mesmo personagem ao qual 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 articulações ou motores e os dirija através de pontos na linha do tempo.

Para importar uma animações:

  1. Na aba Avatar da barra de ferramentas, abra o Editor de Animação .

  2. Selecione o personagem enquadrado que você deseja animar no Roblox. O personagem deve ser o mesmo que você está enquadrando em sua aplicação DCC externa.

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

    Animation Import Example 2
  4. Quando você estiver satisfeito com a sua animações, você pode exportá-la para descobrir o ID da animação, que você pode então 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 mais fortes para dar a ela um efeito de halo mais forte na frente das janelas, aqui está o resultado final na estação espacial!

Final Creature Rendering