Como fazer um veículo de FiveM no Blender com o Sollumz 2.9
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?
| Ferramenta | Versão | Usada para |
|---|---|---|
| Blender | 4.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. |
| Sollumz | 2.9.0 | O add-on que lê e grava os arquivos de modelo do GTA V. |
| CodeWalker | Última versão | Navegar pelos arquivos do jogo e extrair um veículo original para usar de referência. |
| GTA V para PC | Fonte 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.
| Onde | Painel | O que você faz ali |
|---|---|---|
| Sollumz Tools | General | Import 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 Tools | Drawables | Create Drawable Objects, Shader Tools, LOD Tools e Bone Tools. |
| Sollumz Tools | Collisions | Create Bounds e Create Collision Material. |
| Sollumz Tools | Fragments | Create Fragment Objects, Set Mass, Copy Bone Physics e Vehicle Tools (light IDs, prévias de roda e de vidro). |
| Properties > Object | Sollumz | O tipo Sollumz do objeto e as configurações dele. |
| Properties > Bone | Sollumz | Bone tag, flags do bone e a opção Fragment Physics. |
| Properties > Data (malha) | Sollumz LODs | Qual malha é usada em cada nível de detalhe. |
| Properties > Material | Sollumz | Shader, 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"
...
| Parte | Objeto do Blender | Tipo Sollumz |
|---|---|---|
| O veículo | Armature | Fragment |
| Modelo visível | Empty, filho da armature | Drawable |
| Cada malha | Mesh, filho do drawable | Drawable Model |
| Colisão | Empty, filho da armature | Bound Composite |
| Cada forma de colisão | Filho do composite | Bound 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 nomechassis, a sua malha virachassis.001sem 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:
| Bone | Peça |
|---|---|
chassis | Raiz do veículo. |
bodyshell | Painéis da carroceria que nunca se movem. |
wheel_lf, wheel_rf, wheel_lr, wheel_rr | Rodas: dianteira esquerda, dianteira direita, traseira esquerda, traseira direita. |
door_dside_f, door_pside_f, door_dside_r, door_pside_r | Portas, lado do motorista e lado do passageiro, dianteiras e traseiras. |
bonnet, boot | Capô e tampa do porta-malas. |
bumper_f, bumper_r | Para-choques, que podem cair. |
seat_dside_f, seat_pside_f, seat_dside_r, seat_pside_r | Onde cada ped senta. |
steeringwheel | O volante. |
windscreen, window_lf, window_rf | Vidros. |
headlight_l, headlight_r, taillight_l, taillight_r, indicator_lf, brakelight_l, reversinglight_l | De 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ície | Shader | Observação |
|---|---|---|
| Pintura da carroceria que os jogadores podem repintar | vehicle_paint1 e os outros shaders vehicle_paint | A 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, interior | vehicle_mesh | Usa a textura diffuse como ela é. |
| Pneus e aros | vehicle_tire | Use na roda inteira. Partes de uma roda em vehicle_mesh não renderizaram no jogo nos nossos testes. |
| Vidro | vehicle_vehglass, vehicle_vehglass_inner | Face de fora e face de dentro de cada vidro. |
| Lentes de farol, neon | vehicle_lightsemissive | Brilha quando a luz correspondente está acesa. |
| Adesivos, telas, emblemas com transparência | vehicle_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 ID | Luz |
|---|---|
| 0 | Sempre acesa |
| 1, 2 | Farol esquerdo e direito |
| 3, 4 | Lanterna traseira esquerda e direita |
| 5, 6, 7, 8 | Setas: dianteira esquerda, dianteira direita, traseira esquerda, traseira direita |
| 9, 10, 11 | Luzes de freio: esquerda, direita, central |
| 12, 13 | Luzes de ré: esquerda e direita |
| 14 a 17 | Luzes 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ção | Valor | Por quê |
|---|---|---|
| Target Formats | Native | Grava 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 Versions | Gen8 | Gen8 é 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 Selected | Ligado | Exporta só o que está selecionado e visível. |
| Texture Dictionaries | Ligado, Include: Selected | Grava 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
- Coil S-Cooter: Patinete Elétrico FiveM
- Hoverboard Pack: 3 Hoverboards FiveM
- Complete Bundle: Patinete + Hoverboards FiveM
Todos os guias
- Como instalar um resource FiveM do Cfx.re Escrow (Granted Assets)
- Como adicionar um veículo custom num servidor ESX, QBCore ou QBox
- O que são LODs em veículos FiveM?
- Como adicionar um veículo add-on a um servidor FiveM
- vehicles.meta explicado, campo por campo
- handling.meta explicado: campos, unidades e flags
- carvariations.meta e carcols.meta explicados
- vehiclelayouts.meta explicado: assentos, pontos de entrada e animações
- Referência de data_file do fxmanifest para veículos
- Arquivos de modelo do veículo (yft, _hi.yft, ytd) e o aviso de asset grande demais
- Solução de problemas de veículo add-on no FiveM: causas e correções
- Como resolver "You lack the required entitlement" em um servidor FiveM
- Como converter um mod de carro single-player do GTA 5 em add-on de FiveM
- Como um hoverboard de FiveM funciona sem script
- Como otimizar um veículo de FiveM: polígonos, LODs e orçamento de texturas
- Como configurar a colisão de veículo no Sollumz
- Comprar veículos FiveM: o que conferir antes de pagar
- Pack de carros FiveM vs veículos avulsos
- Carro de marca real no FiveM: pode ou não?
- CodeWalker vs Sollumz: qual ferramenta usar em veículos de FiveM?
