Animações

Emotes personalizados no FiveM: transforme qualquer vídeo em animação

Crie animações personalizadas no FiveM a partir de um vídeo: grave com o celular, converta em YCD e faça o stream pelo seu servidor em poucos passos.

· 7 min de leitura

Emotes são um dos jeitos mais baratos de deixar um servidor de FiveM com vida. Uma dança exclusiva do server, um cumprimento marcante de facção ou uma animação própria para os mecânicos dá aos players algo para mostrar, e os clipes acabam rodando no TikTok e no Discord.

O jeito tradicional de fazer um é lento: equipamento de captura de movimento ou horas de keyframe no Blender, depois rigging no esqueleto do GTA e exportação com ferramentas da comunidade. Este guia mostra o caminho rápido para criar animações personalizadas no FiveM: você se grava com o celular, converte o vídeo em um arquivo de animação do GTA e faz o stream pelo seu servidor.

Resumindo: grave um vídeo limpo de 1 a 30 segundos, transforme em um arquivo .ycd, coloque na pasta stream/ de um resource e rode com TaskPlayAnim ou adicione ao seu menu de emotes.

Como as animações funcionam no FiveM

O GTA V guarda as animações em dicionários de clips: arquivos .ycd. Cada dicionário tem um ou mais clips, que são as animações de fato.

Do vídeo do celular ao emote no jogo

Para tocar uma animação, um script precisa de dois nomes:

  • o dicionário – o nome do arquivo .ycd sem a extensão, por exemplo my_dance;
  • o clip – o nome da animação dentro desse arquivo, por exemplo anim.

O FiveM deixa você fazer stream dos seus próprios arquivos .ycd, igual a carros ou roupas custom. Qualquer .ycd dentro da pasta stream/ de um resource é enviado aos players quando eles entram, e a partir daí funciona exatamente como uma animação original do GTA.

Passo 1: Grave um bom vídeo

A qualidade da animação depende quase totalmente do vídeo de entrada. Algumas regras fazem a diferença entre um emote limpo e um todo tremido:

Gravações boas e ruins para captura de movimento

  • Grave o corpo inteiro, da cabeça aos pés, durante o clipe todo. Pé saindo do enquadramento é a causa mais comum de deslize e tremedeira.
  • Deixe a câmera parada. Use um tripé ou apoie o celular em alguma coisa. Nada de mexer a câmera ou dar zoom.
  • Só uma pessoa no quadro. Gente se mexendo no fundo confunde o tracking.
  • Ilumine bem o ambiente e fique na frente de um fundo liso.
  • Use roupa justa. Moletom largo e casaco comprido escondem as articulações que o tracker precisa enxergar.
  • Fique de frente para a câmera, reto ou levemente de lado. Evite ficar muito tempo de costas.
  • Comece e termine na mesma pose neutra se o emote for em loop. Assim o loop não dá um pulo visível.

Seja breve. A maioria dos emotes tem de 2 a 10 segundos de movimento em loop. Dá para gravar uma take mais longa e cortar depois.

Passo 2: Converta o vídeo em uma animação YCD

Com a ferramenta de vídeo para animação da BLDR:

Tela de exportação do BLDR Mocap com o dicionário de clips, o clip anim e o botão Download YCD

  1. Abra Mocap e escolha Video to Animation.
  2. Envie seu clipe. Os vídeos precisam ter de 1 a 30 segundos e menos de 100 MB.
  3. Dê um nome curto ao projeto. Ele vira o nome do arquivo da animação e, portanto, o nome do dicionário, então use só letras minúsculas, números e underline: bldr_wave, e não My Wave (final).mp4.
  4. Espere o processamento. A BLDR extrai o movimento do corpo do vídeo, faz o retarget para o esqueleto de ped do GTA V e gera um .ycd.
  5. Confira o preview e baixe o .ycd (downloads estão incluídos nos planos pagos).

O clip dentro de toda exportação da BLDR se chama anim, então o dicionário é o nome do seu arquivo e o clip é sempre anim.

Escolha um nome único. Se o seu dicionário tiver o mesmo nome de um dicionário do jogo base ou da animação de outro resource, um vai substituir o outro sem aviso nenhum. Colocar o prefixo do seu servidor em tudo (myrp_wave, myrp_dance01) evita isso.

Passo 3: Crie um resource para os seus emotes

Crie uma pasta em resources/ para as suas animações personalizadas:

resources/ └── [emotes]/ └── myrp_anims/ ├── fxmanifest.lua └── stream/ ├── myrp_wave.ycd └── myrp_dance01.ycd

O fxmanifest.lua só precisa declarar o resource. Tudo que estiver em stream/ entra no stream automaticamente:

fx_version 'cerulean'
game 'gta5'

Adicione no server.cfg para ele iniciar junto com o servidor:

ensure myrp_anims

Reinicie o resource, ou o servidor, e as animações ficam disponíveis para todos os players conectados.

Passo 4: Toque a animação

Com um comando simples

O jeito mais rápido de testar é um client script pequeno. Adicione um client.lua no mesmo resource e registre no manifest com client_script 'client.lua':

local function playEmote(dict, clip, flags)
    RequestAnimDict(dict)
    while not HasAnimDictLoaded(dict) do
        Wait(0)
    end

    TaskPlayAnim(PlayerPedId(), dict, clip, 8.0, -8.0, -1, flags, 0, false, false, false)
    RemoveAnimDict(dict)
end

RegisterCommand('wave', function()
    playEmote('myrp_wave', 'anim', 49)
end, false)

RegisterCommand('stopemote', function()
    ClearPedTasks(PlayerPedId())
end, false)

Digite /wave no jogo para testar. O argumento flags controla como a animação é tocada:

FlagValorEfeito
Loop1Repete até ser cancelada
Só parte de cima do corpo16As pernas continuam com o movimento normal
Controle do player32O player continua podendo se mexer durante a animação

Some os valores para combinar. 49 (1 + 16 + 32) é o clássico "loop na parte de cima enquanto anda", ótimo para acenos e gestos. Use 1 para danças de corpo inteiro em que as pernas devem acompanhar a animação.

Se você usa ox_lib, lib.requestAnimDict(dict) substitui o loop de request e espera.

No seu menu de emotes

A maioria dos servidores usa um menu de emotes como o rpemotes-reborn em vez de comandos separados. Esses menus vêm com um arquivo para animações custom, onde cada entrada liga um comando de emote a um dicionário e um clip. No rpemotes-reborn uma entrada fica mais ou menos assim:

["myrpwave"] = {
    "myrp_wave",   -- dicionário (nome do seu arquivo .ycd)
    "anim",        -- nome do clip (sempre "anim" nas exportações da BLDR)
    "MyRP Aceno",  -- texto exibido no menu
    AnimationOptions = {
        EmoteLoop = true,
        EmoteMoving = true,
    },
},

O nome exato do arquivo e a estrutura da tabela mudam entre versões, então confira no README do seu menu de emotes onde ficam os emotes custom. Mantenha seus arquivos .ycd no seu próprio resource de stream, e não dentro da pasta do menu; assim, atualizar o menu nunca apaga as suas animações.

Resolução de problemas

A animação não toca. Confira se o resource está iniciado (ensure myrp_anims), se o nome do dicionário no script bate exatamente com o nome do arquivo .ycd (sem o .ycd) e se o nome do clip é anim. Na prática os nomes diferenciam maiúsculas de minúsculas; deixe tudo em minúsculo.

O personagem trava em T-pose ou na pose padrão. O dicionário não carregou. Normalmente é erro de digitação no nome do dicionário ou o arquivo não está dentro de stream/.

Os pés deslizam ou o corpo sai do lugar. Isso vem do vídeo original: a câmera mexeu ou os pés saíram do enquadramento. Grave de novo com a câmera fixa e o corpo inteiro visível.

O loop dá um pulo no final. Comece e termine a gravação na mesma pose, ou corte o clipe para o primeiro e o último frame baterem.

Fica diferente em ped feminino. Os peds freemode masculino e feminino têm proporções diferentes, então a mesma animação pode ficar um pouco estranha em um deles. Teste nos dois e grave uma take separada se algum ficar errado.

Ideias de emotes exclusivos para o seu servidor

  • Emotes de trend. Recrie uma dança que está em alta agora. Os players adoram usar os mesmos passos que viram na internet, e clipes do seu servidor fazendo isso são uma ótima divulgação.
  • Animações de emprego. Mecânico limpando as mãos, paramédico medindo o pulso, policial orientando o trânsito.
  • Marcas de facção e crew. Um cumprimento ou pose única para cada organização do seu servidor.
  • Emotes de staff e eventos. Animações de comemoração para quem vence eventos ou um emote especial para apoiadores.

Precisa de um servidor para usar? Comece com Como criar um servidor de FiveM. Se você também está escolhendo framework, Qbox vs QBCore vs ESX compara as três principais opções.

Perguntas frequentes

Preciso de equipamento de captura de movimento?

Não. Um celular no tripé dá conta da maioria dos emotes, desde que o corpo inteiro fique no enquadramento e a câmera não se mexa.

Os players precisam baixar alguma coisa?

Não. As animações numa pasta stream/ são enviadas automaticamente aos players quando eles entram, como qualquer outro asset em stream.

Posso vender os emotes que eu fizer?

A sua própria performance gravada é sua. Se for vender, siga as regras de monetização da Cfx.re, e não recrie coreografias protegidas por direitos autorais nem a imagem de pessoas sobre as quais você não tem direitos.

Funciona no RedM?

Este guia cobre GTA V e FiveM. O RedM usa outro esqueleto e outro conjunto de animações, então os arquivos .ycd do FiveM não funcionam lá.

Continue lendo