Como configurar a colisão de veículo no Sollumz
A colisão de um veículo do GTA V é um Bound Composite dentro do .yft, com uma forma de colisão por peça funcional, cada uma seguindo um bone. No Sollumz um bound funciona quando duas coisas são verdade: o bone está com Fragment Physics ligado, e o objeto do bound segue esse bone por uma constraint. Um veículo exportado sem bounds atravessa o mapa.
Onde fica a colisão do veículo?
Um veículo não tem arquivo de colisão separado. A colisão dele faz parte do fragment, ao lado do modelo visível:
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"
...
O Bound Composite é um contêiner. As formas embaixo dele fazem o trabalho, e cada uma pertence a um bone, então a colisão de uma porta abre junto com a porta e a colisão de uma roda fica onde a roda está. Para ver as colisões enquanto trabalha, use Sollumz Tools > General > View > Show Collisions.
Qual tipo de bound vai em qual peça?
Adicione formas em Sollumz Tools > Collisions > Create Bounds com Create Bound e o menu de tipo ao lado. Os veículos originais usam um bound por peça funcional, nunca uma forma única juntando o carro inteiro.
| Peça | Tipo Sollumz | Forma |
|---|---|---|
Carroceria (chassis) | Bound Geometry | Um casco simples e fechado em volta da carroceria. |
| Cada roda | Bound Disc | Um disco do tamanho do pneu. |
| Portas, capô, porta-malas, para-choques | Bound Geometry | Um casco em volta de cada peça. |
| Vidros | Bound Geometry | Uma forma fina sobre o vidro, com um material de colisão de vidro. |
| Blocos simples | Bound Box, Bound Sphere, Bound Capsule, Bound Cylinder | Dimensionados pelos valores do painel Shape do bound. |
O começo certo mais rápido é copiar os bounds do veículo original que você importou como referência. A cópia mantém o tipo, o material e a massa. Depois troque a malha de cada casco por uma que encaixe na sua peça. A malha do casco é gravada em relação ao bone dela, então monte com a peça na posição do bone.
Como ligo um bound a um bone?
São dois passos, e um bound que pula qualquer um deles não faz nada.
- Ligue a física do bone. Selecione o bone, abra Properties > Bone > Sollumz e marque Fragment Physics. O painel passa a mostrar as configurações daquela peça: resistência, vida de dano e as opções de vidro para as janelas.
- Faça o bound seguir o bone. O objeto do bound precisa de uma constraint Copy Transforms cujo alvo é a armature e cujo bone é o bone da peça. Sollumz Tools > Drawables > Bone Tools > Add Bone Constraint adiciona a constraint com as configurações certas; depois você escolhe o bone nela. Versões mais antigas do Sollumz usavam uma constraint Child Of para isso, que parou de funcionar depois do Blender 4.2.
Quando um bone está com a física ligada mas nada o segue, a exportação avisa: "Bone has physics enabled, but no associated collision! A collision must be linked to the bone for physics to work." O caso contrário também importa: um bone que ficou com a física ligada depois que você apagou o bound dele deve ser desligado.
A constraint também posiciona o bound. Deixe o bound na própria origem e deixe a constraint levá-lo até o bone, para ele acompanhar quando você mover o bone depois.
Quais materiais os bounds usam?
Bounds só aceitam materiais de colisão. Eles decidem o som, as faíscas e o comportamento das balas na superfície. Escolha um em Sollumz Tools > Collisions > Create Collision Material e aperte Create Collision Material. Para a carroceria de um carro o usual é Car Metal; também existem o Car Plastic e os materiais Car Glass para os vidros.
Nunca deixe um material normal de render em um bound. Em um dos nossos carros, um material visível em um bound de roda bastou para a exportação falhar.
Como a massa é definida?
Cada bound tem a própria massa, mostrada no objeto do bound, e as massas somadas dão o peso do modelo. Sollumz Tools > Fragments > Set Mass grava um valor em todos os objetos selecionados. Copiar os bounds de um veículo original parecido já dá números sensatos de início.
A massa também define o centro de gravidade. Quando adicionamos bounds auxiliares de 200 kg cada a um carro, eles deslocaram o centro de massa e mudaram o jeito de ele andar. Bounds extras que só estão ali para colidir devem pesar cerca de 1 kg. A massa que a física de direção usa continua sendo o fMass do handling.meta.
Os bounds de veículo precisam de flags de colisão?
Cada bound tem um painel Composite Flags com duas fileiras de opções: o que a forma é, e com o que ela colide. Nos veículos originais que abrimos, elas estão vazias nos bounds do veículo, e isso é normal. Bounds de veículo não precisam das flags de mapa.
Com objetos de mapa e props é diferente. Neles, um bound sem flags é exportado sem nenhum aviso e não colide com nada no jogo. Para esses, aplique um preset de flags em todos os bounds; o Sollumz vem com um chamado General (Default). Se você alterna entre props e veículos, não leve a regra de um para o outro.
Por que meu veículo atravessa o mapa?
| Sintoma | Causa | Solução |
|---|---|---|
| Atravessa a rua assim que dá spawn | O fragment não tem Bound Composite, ou ele não foi exportado | Adicione os bounds como filhos da armature e exporte com a armature selecionada. |
| Fica apoiado na barriga, com as rodas dentro do chão | Sem bounds de roda, ou eles não seguem os bones das rodas | Um Bound Disc por bone de roda, do tamanho do pneu. |
| A exportação avisa sobre um bone sem colisão | Fragment Physics está ligado mas nenhum bound segue o bone | Adicione a constraint, ou desligue a física desse bone. |
| A colisão está deslocada em relação ao modelo | O bound foi movido à mão e também pela constraint | Zere a posição própria do bound e deixe a constraint posicioná-lo. |
| Os jogadores atravessam uma peça andando | Essa peça não tem um bound próprio | Adicione um bound no bone dessa peça. |
| O carro anda com a frente baixa ou capota | Bounds extras pesados deslocaram o centro de massa | Diminua a massa deles. |
Se o modelo está certo e só a altura do carro está errada, isso é suspensão, não colisão: veja a solução de problemas de veículos.
Como confiro a colisão antes de testar no jogo?
Exporte uma vez com CW XML marcado em Target Formats e abra o .yft.xml em um editor de texto. Na seção de física, a lista de groups deve trazer o nome de cada bone ao qual você deu física, e a lista de children deve ter uma entrada por bound. Se os groups estiverem faltando, nenhum bone estava com Fragment Physics ligado.
O resto do processo do modelo está em como fazer um veículo de FiveM no Blender com o Sollumz.
Perguntas frequentes
- Por que meu carro atravessa o mapa no FiveM?
- O .yft não tem colisão. No Sollumz o veículo precisa de um Bound Composite com bounds embaixo da armature, cada bound seguindo um bone que está com Fragment Physics ligado.
- Como adiciono colisão a um veículo no Sollumz?
- Crie os bounds em Sollumz Tools > Collisions > Create Bounds, marque Fragment Physics no bone de cada peça e adicione uma bone constraint a cada bound com Bone Tools > Add Bone Constraint.
- Qual tipo de bound as rodas usam?
- Um Bound Disc em cada bone de roda, do tamanho do pneu.
- Os bounds de veículo precisam de flags de colisão no Sollumz?
- Nos veículos originais que abrimos, as flags dos bounds de veículo estão vazias, e isso é normal. Objetos de mapa e props precisam, sim, de flags em todos os bounds.
- O que significa "Bone has physics enabled, but no associated collision"?
- Um bone está com Fragment Physics ligado mas nenhum bound o segue. Adicione um bound com uma bone constraint nesse bone, ou desligue a física do bone.
Fontes
Produtos deste guia
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 fazer um veículo de FiveM no Blender com o Sollumz 2.9
- Como otimizar um veículo de FiveM: polígonos, LODs e orçamento de texturas
- 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?
