Cómo configurar la colisión de un vehículo en Sollumz

Por Nilo3D · Actualizado:

La colisión de un vehículo de GTA V es un Bound Composite dentro del .yft, con una forma de colisión por cada pieza funcional, cada una siguiendo a un bone. En Sollumz un bound funciona cuando se cumplen dos cosas: el bone tiene Fragment Physics activado y el objeto bound sigue a ese bone mediante un constraint. Un vehículo exportado sin bounds atraviesa el mapa.

¿Dónde está la colisión de un vehículo?

Un vehículo no tiene un archivo de colisión aparte. Su colisión forma parte del fragment, junto al modelo visible:

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"
    ...

El Bound Composite es un contenedor. Las formas que cuelgan de él hacen el trabajo, y cada una pertenece a un bone, así que la colisión de una puerta gira con la puerta y la colisión de una rueda está donde está la rueda. Para verlas mientras trabajas, usa Sollumz Tools > General > View > Show Collisions.

¿Qué tipo de bound va en cada pieza?

Añade formas en Sollumz Tools > Collisions > Create Bounds con Create Bound y el menú de tipo que tiene al lado. Los vehículos originales usan un bound por pieza funcional, nunca una sola forma unida para todo el coche.

PiezaTipo de SollumzForma
Carrocería (chassis)Bound GeometryUn casco cerrado y simple alrededor de la carrocería.
Cada ruedaBound DiscUn disco del tamaño del neumático.
Puertas, capó, maletero, parachoquesBound GeometryUn casco alrededor de cada pieza.
VentanasBound GeometryUna forma fina sobre el cristal, con un material de colisión de cristal.
Bloques simplesBound Box, Bound Sphere, Bound Capsule, Bound CylinderSe dimensionan con los valores del panel Shape del bound.

El comienzo correcto más rápido es copiar los bounds del vehículo original que importaste como referencia. Una copia conserva el tipo, el material y la masa. Después sustituye la malla de cada casco por una que encaje con tu pieza. La malla del casco se escribe relativa a su bone, así que constrúyela con la pieza en la posición del bone.

¿Qué materiales usan los bounds?

Los bounds solo aceptan materiales de colisión. Deciden el sonido, las chispas y el comportamiento de las balas en la superficie. Elige uno en Sollumz Tools > Collisions > Create Collision Material y pulsa Create Collision Material. Para la carrocería de un coche el habitual es Car Metal; también están Car Plastic y los materiales Car Glass para las ventanas.

Nunca dejes un material de render normal en un bound. En uno de nuestros coches, un material visible en el bound de una rueda bastó para que la exportación fallara.

¿Cómo se ajusta la masa?

Cada bound tiene su propia masa, que se muestra en el objeto bound, y las masas se suman para dar el peso del modelo. Sollumz Tools > Fragments > Set Mass escribe un valor en todos los objetos seleccionados. Copiar los bounds de un vehículo original parecido da cifras razonables desde el principio.

La masa también fija el centro de gravedad. Cuando añadimos a un coche bounds auxiliares de 200 kg cada uno, le movieron el centro de masa y cambiaron cómo se conducía. Los bounds extra que solo están para colisionar deberían pesar alrededor de 1 kg. La masa que usa la física de conducción sigue siendo fMass en handling.meta.

¿Los bounds de un vehículo necesitan flags de colisión?

Cada bound tiene un panel Composite Flags con dos filas de interruptores: qué es la forma y con qué colisiona. En los vehículos originales que hemos abierto, están vacíos en los bounds del vehículo, y eso es normal. Los bounds de vehículo no necesitan los flags de mapa.

Los objetos de mapa y los props son distintos. Ahí, un bound sin flags se exporta sin ningún aviso y no colisiona con nada en el juego. Para esos, aplica un preset de flags a cada bound; Sollumz trae uno llamado General (Default). Si pasas de props a vehículos y al revés, no lleves la regla de unos a otros.

¿Por qué mi vehículo atraviesa el mapa?

SíntomaCausaSolución
Atraviesa la carretera nada más hacer spawnEl fragment no tiene Bound Composite, o no se exportóAñade los bounds como hijos del armature y exporta con el armature seleccionado.
Se apoya sobre la panza, con las ruedas dentro del sueloNo hay bounds de rueda, o no siguen a los bones de las ruedasUn Bound Disc por cada bone de rueda, del tamaño del neumático.
La exportación avisa de un bone sin colisiónFragment Physics está activado pero ningún bound sigue al boneAñade el constraint, o desactiva la física de ese bone.
La colisión está desplazada respecto al modeloEl bound se movió a mano y también por el constraintRestablece la posición propia del bound y deja que el constraint lo coloque.
Los jugadores atraviesan una piezaEsa pieza no tiene un bound propioAñade un bound en el bone de esa pieza.
El coche va con el morro hacia abajo o vuelcaUnos bounds extra pesados movieron el centro de masaBaja su masa.

Si el modelo está bien y lo único que falla es la altura de marcha, eso es suspensión, no colisión: consulta la solución de problemas de vehículos.

¿Cómo compruebo la colisión antes de probar en el juego?

Exporta una vez con CW XML marcado en Target Formats y abre el .yft.xml en un editor de texto. En la sección de física, la lista de grupos debería nombrar cada bone al que diste física, y la lista de hijos debería tener una entrada por bound. Si faltan los grupos, ningún bone tenía Fragment Physics activado.

El resto del proceso del modelo está en cómo hacer un vehículo de FiveM en Blender con Sollumz.

Preguntas frecuentes

¿Por qué mi coche atraviesa el mapa en FiveM?
El .yft no tiene colisión. En Sollumz el vehículo necesita un Bound Composite con bounds bajo el armature, cada bound siguiendo a un bone que tenga Fragment Physics activado.
¿Cómo añado colisión a un vehículo en Sollumz?
Crea los bounds en Sollumz Tools > Collisions > Create Bounds, marca Fragment Physics en el bone de cada pieza y añade un constraint de bone a cada bound con Bone Tools > Add Bone Constraint.
¿Qué tipo de bound usan las ruedas?
Un Bound Disc en cada bone de rueda, del tamaño del neumático.
¿Los bounds de un vehículo necesitan flags de colisión en Sollumz?
En los vehículos originales que hemos abierto, los flags de los bounds de vehículo están vacíos, y eso es normal. Los objetos de mapa y los props sí necesitan flags en cada bound.
¿Qué significa "Bone has physics enabled, but no associated collision"?
Un bone tiene Fragment Physics activado pero ningún bound lo sigue. Añade a ese bone un bound con un constraint de bone, o desactiva la física del bone.

Fuentes

Productos de esta guía

Todas las guías