Como fazer um veículo de FiveM no Blender com o Sollumz 2.9

Por Nilo3D · Atualizado:

Um modelo de veículo de FiveM é um fragment (.yft): uma armature cujos bones são as peças do carro, um drawable que guarda as malhas e um conjunto de bounds de colisão. No Blender com o Sollumz você monta esses três, dá shaders de veículo às malhas e exporta os arquivos .yft, _hi.yft e .ytd. Este guia segue o Sollumz 2.9.0 no Blender 5.2, com os nomes de painéis e botões como aparecem no add-on.

Do que eu preciso?

FerramentaVersãoUsada para
Blender4.2 ou mais novo (o Sollumz 2.9.0 define o 4.2 como mínimo; nós usamos o 5.2)Modelagem, rig, exportação.
Sollumz2.9.0O add-on que lê e grava os arquivos de modelo do GTA V.
CodeWalkerÚltima versãoNavegar pelos arquivos do jogo e extrair um veículo original para usar de referência.
GTA V para PCFonte do veículo de referência e das texturas compartilhadas.

O Sollumz é instalado como uma extension do Blender. No Blender vá em Preferences > Get Extensions > Repositories > +, escolha Add Remote Repository e digite https://repo.sollumz.org/, depois procure por Sollumz e instale. Na primeira vez que abre, o add-on pede para instalar as dependências dele. Aceite: uma delas, o PyMateria, é o que permite ao Sollumz gravar direto os arquivos binários do jogo. Para que serve cada ferramenta está comparado em CodeWalker vs Sollumz.

Onde ficam as ferramentas do Sollumz no Blender?

As ferramentas ficam na barra lateral da viewport 3D (aperte N), na aba Sollumz Tools. As propriedades do que está selecionado ficam no editor Properties, em painéis chamados Sollumz.

OndePainelO que você faz ali
Sollumz ToolsGeneralImport RAGE Assets e Export RAGE Assets. O subpainel View mostra ou esconde as colisões e troca o nível de LOD na tela.
Sollumz ToolsDrawablesCreate Drawable Objects, Shader Tools, LOD Tools e Bone Tools.
Sollumz ToolsCollisionsCreate Bounds e Create Collision Material.
Sollumz ToolsFragmentsCreate Fragment Objects, Set Mass, Copy Bone Physics e Vehicle Tools (light IDs, prévias de roda e de vidro).
Properties > ObjectSollumzO tipo Sollumz do objeto e as configurações dele.
Properties > BoneSollumzBone tag, flags do bone e a opção Fragment Physics.
Properties > Data (malha)Sollumz LODsQual malha é usada em cada nível de detalhe.
Properties > MaterialSollumzShader, texturas e valores do shader.

Como um veículo é estruturado no Blender?

Todo objeto em uma cena do Sollumz tem um tipo Sollumz. Um veículo é esta árvore:

mycar                  Armature, Sollumz type: Fragment (bones = the car's parts)
  mycar.mesh           Empty, Sollumz type: Drawable
    chassis            Mesh, Drawable Model (skinned to the bone "chassis")
    bodyshell          Mesh, Drawable Model
    door_dside_f       Mesh, Drawable Model
    wheel_lf           Mesh, Drawable Model, "Is Wheel Mesh" on
    ...
  mycar.col            Empty, Sollumz type: Bound Composite
    chassis.col        Bound Geometry, follows the bone "chassis"
    wheel_lf.col       Bound Disc, follows the bone "wheel_lf"
    door_dside_f.col   Bound Geometry, follows the bone "door_dside_f"
    ...
ParteObjeto do BlenderTipo Sollumz
O veículoArmatureFragment
Modelo visívelEmpty, filho da armatureDrawable
Cada malhaMesh, filho do drawableDrawable Model
ColisãoEmpty, filho da armatureBound Composite
Cada forma de colisãoFilho do compositeBound Geometry, Bound Disc, Bound Box e assim por diante

A raiz tem que ser a armature. O jogo não encontra portas, rodas e assentos pelo nome da malha. Ele encontra bones, e cada bone carrega uma tag numérica que o Sollumz calcula a partir do nome do bone. É por isso que os nomes dos bones têm que ser exatos.

Por que começar de um veículo original?

Importe o veículo original mais parecido com o seu com Import RAGE Assets e deixe ele na cena enquanto trabalha. Selecione o .yft; quando o _hi.yft está ao lado dele, o Sollumz junta os dois na importação. O veículo original é a especificação: quais bones existem, como se chamam, quais formas de colisão ele usa, quanto pesa cada peça e quais shaders ele tem.

Dois hábitos economizam tempo aqui:

  • Renomeie primeiro os objetos da referência, por exemplo com um prefixo ref_. O Blender mantém os nomes de objeto únicos, então, se a referência ainda for dona do nome chassis, a sua malha vira chassis.001 sem avisar.
  • Copie a armature da referência em vez de criar os bones à mão. A cópia mantém as bone tags, as flags dos bones e as configurações de física. Depois mova os bones para encaixar no seu modelo e apague os que você não usa.

De quais bones um veículo precisa?

Um carro usa um vocabulário fixo de nomes de bone. Estes são os comuns:

BonePeça
chassisRaiz do veículo.
bodyshellPainéis da carroceria que nunca se movem.
wheel_lf, wheel_rf, wheel_lr, wheel_rrRodas: dianteira esquerda, dianteira direita, traseira esquerda, traseira direita.
door_dside_f, door_pside_f, door_dside_r, door_pside_rPortas, lado do motorista e lado do passageiro, dianteiras e traseiras.
bonnet, bootCapô e tampa do porta-malas.
bumper_f, bumper_rPara-choques, que podem cair.
seat_dside_f, seat_pside_f, seat_dside_r, seat_pside_rOnde cada ped senta.
steeringwheelO volante.
windscreen, window_lf, window_rfVidros.
headlight_l, headlight_r, taillight_l, taillight_r, indicator_lf, brakelight_l, reversinglight_lDe onde cada luz ilumina.
misc_a, misc_b, ...Peças extras que se movem ou se soltam, como um aerofólio.

Os assentos e os pontos de entrada do vehiclelayouts.meta apontam para esses mesmos bones. Posições que nós medimos no modelo em vez de chutar:

  • Portas giram no bone, então o bone vai na linha da dobradiça: a borda da frente de uma porta normal.
  • Capô: borda de trás. Porta-malas: borda da frente.
  • Volante: o centro do aro, não o centro do objeto inteiro. Com a coluna de direção incluída, o centro da bounding box ficou 46 cm fora em um carro que convertemos.
  • Bones de luz: o meio das faces que brilham.

Cada malha tem que seguir o bone dela. Dê a ela um vertex group com exatamente o nome do bone e peso 1 em todos os vértices, e adicione um modificador de armature. Bone Tools > Add Armature Modifier faz a segunda parte para os objetos selecionados. Para ver ou mudar uma bone tag, selecione o bone e abra Properties > Bone > Sollumz.

Quais shaders os materiais de veículo usam?

Os materiais do Sollumz são shaders do jogo. Crie um em Drawables > Shader Tools com Create Shader Material, ou transforme um material do Blender que já existe no shader selecionado com os botões de conversão do mesmo painel. Estes são os shaders de veículo que usamos e para quê:

SuperfícieShaderObservação
Pintura da carroceria que os jogadores podem repintarvehicle_paint1 e os outros shaders vehicle_paintA camada de pintura (primária, secundária, perolada, roda, interior) é definida no painel Fragment (Vehicle Paint) do material.
Peças de cor fixa ou com textura: livery, plásticos, metal, interiorvehicle_meshUsa a textura diffuse como ela é.
Pneus e arosvehicle_tireUse na roda inteira. Partes de uma roda em vehicle_mesh não renderizaram no jogo nos nossos testes.
Vidrovehicle_vehglass, vehicle_vehglass_innerFace de fora e face de dentro de cada vidro.
Lentes de farol, neonvehicle_lightsemissiveBrilha quando a luz correspondente está acesa.
Adesivos, telas, emblemas com transparênciavehicle_decal

Duas coisas que não aparecem no Blender decidem como o carro fica no jogo:

  • Cor de vértice. Nos shaders mesh, o canal vermelho do primeiro atributo de cor multiplica a textura. Uma malha com cor de vértice preta fica preta no jogo, por melhor que seja a textura. Preencha com uma cor cujo vermelho seja 255.
  • Light ID. No vehicle_lightsemissive, o canal alpha da cor de vértice diz a qual luz as faces pertencem. Defina em Fragments > Vehicle Tools > Light IDs: entre no Edit Mode com seleção de faces, selecione as faces, escolha a luz e aperte Set Light ID.
Light IDLuz
0Sempre acesa
1, 2Farol esquerdo e direito
3, 4Lanterna traseira esquerda e direita
5, 6, 7, 8Setas: dianteira esquerda, dianteira direita, traseira esquerda, traseira direita
9, 10, 11Luzes de freio: esquerda, direita, central
12, 13Luzes de ré: esquerda e direita
14 a 17Luzes extras

Nas texturas, mantenha a diffuse do seu modelo e pegue os mapas de specular, normal e sujeira das texturas compartilhadas de veículo do jogo quando der. Tamanhos e formatos estão em como otimizar um veículo de FiveM.

Como as rodas funcionam?

O jogo desenha um único modelo de roda em todas as rodas. Modele a roda uma vez como wheel_lf, centralizada no bone dela, e marque Is Wheel Mesh em Properties > Object > Sollumz. Sem essa opção a roda é exportada como parte da carroceria: o carro aparece com uma roda flutuando no lugar e nenhuma nos outros cubos. Vehicle Tools > Preview Wheel Instances mostra a roda nas quatro posições dentro do Blender.

Cada roda também precisa do próprio disco de colisão para o carro ter sobre o que rodar. Isso está em colisão de veículo no Sollumz.

Como funcionam os LODs e o arquivo _hi.yft no Sollumz?

Todo Drawable Model pode guardar cinco malhas: Very High, High, Medium, Low e Very Low. Elas ficam listadas em Properties > Data > Sollumz LODs. Na exportação, o Sollumz grava as malhas Very High em <name>_hi.yft e as outras quatro em <name>.yft. Não há nada para separar à mão: se algum modelo tiver uma malha Very High, o arquivo _hi é criado.

Como gerar os níveis mais baixos, e o que colocar em lodDistances, está em como otimizar um veículo de FiveM.

Como exporto o .yft e o .ytd?

Selecione o fragment (a armature) e aperte Export RAGE Assets em Sollumz Tools > General. As configurações que importam para um veículo:

ConfiguraçãoValorPor quê
Target FormatsNativeGrava arquivos binários que o jogo carrega direto. CW XML grava o XML do CodeWalker, uma versão em texto legível que serve para conferir o resultado.
Target Game VersionsGen8Gen8 é o GTA V Legacy e Gen9 é o GTA V Enhanced. Com os dois ligados, os arquivos vão para as subpastas gen8/ e gen9/.
Limit to SelectedLigadoExporta só o que está selecionado e visível.
Texture DictionariesLigado, Include: SelectedGrava o .ytd. Com All você também recebe o dicionário do veículo de referência.

O resultado é mycar.yft, mycar_hi.yft e mycar.ytd. Um objeto escondido não pode ser selecionado, e o Sollumz esconde malhas quando você troca o nível de LOD, então, se nada for gravado ou o log disser "No Sollumz objects selected for export!", mostre o veículo de novo e selecione outra vez. Depois de cada exportação, olhe a hora do arquivo no disco antes de testar.

O que conferir antes de testar no jogo?

  • Todo bone com Fragment Physics ligado tem uma colisão. Se algum não tiver, a exportação avisa: "Bone has physics enabled, but no associated collision!".
  • Nenhuma malha tem cor de vértice preta.
  • Toda textura usada por um material está no .ytd, ou vem de propósito das texturas compartilhadas de veículo do jogo.
  • A malha da roda está com Is Wheel Mesh ligado.
  • A escala está aplicada: nenhuma escala sobrando na armature.
  • Cada arquivo passa na checagem de tamanho do servidor. Veja o aviso de oversized assets.

Como coloco o modelo no FiveM?

Coloque os três arquivos na pasta stream de um resource. O primeiro teste mais rápido é dar a eles o nome de um veículo original, por exemplo sultan.yft, sultan_hi.yft e sultan.ytd: o jogo passa a desenhar o seu modelo onde quer que um Sultan dê spawn, com o handling e os assentos do Sultan, e você ainda não precisa de nenhum arquivo meta.

Quando o modelo estiver certo, dê a ele nome e metas próprios para que carregue ao lado dos carros originais. Essa parte está em como adicionar um veículo add-on a um servidor FiveM.

Perguntas frequentes

De qual versão do Blender o Sollumz 2.9 precisa?
O Sollumz 2.9.0 define o Blender 4.2 como versão mínima. Nós usamos no Blender 5.2.
O Sollumz exporta arquivos .yft direto?
Sim. Com a opção Target Formats em Native, o Sollumz grava arquivos binários .yft, .ydr e .ytd que o jogo carrega direto. Isso precisa da dependência PyMateria, que o add-on oferece para instalar. A opção CW XML grava o XML do CodeWalker.
Devo exportar em Gen8 ou Gen9 para o FiveM?
Gen8. No Sollumz, Gen8 é o GTA V Legacy e Gen9 é o GTA V Enhanced.
Como o Sollumz cria o arquivo _hi.yft?
Automaticamente. As malhas do slot de LOD Very High são gravadas em name_hi.yft e as malhas High, Medium, Low e Very Low em name.yft.
Por que meu veículo fica preto no jogo?
Normalmente porque a malha tem cor de vértice preta. Nos shaders mesh de veículo, o canal vermelho da cor de vértice multiplica a textura, então pinte a malha com uma cor cujo vermelho seja 255.

Fontes

Produtos deste guia

Todos os guias