Cómo hacer un vehículo de FiveM en Blender con Sollumz 2.9

Por Nilo3D · Actualizado:

Un modelo de vehículo de FiveM es un fragment (.yft): un armature cuyos bones son las piezas del coche, un drawable que contiene las mallas y un conjunto de bounds de colisión. En Blender con Sollumz construyes esas tres cosas, das a las mallas shaders de vehículo y exportas los archivos .yft, _hi.yft y .ytd. Esta guía sigue Sollumz 2.9.0 en Blender 5.2, con los nombres de paneles y botones tal como aparecen en el add-on.

¿Qué necesito?

HerramientaVersiónPara qué se usa
Blender4.2 o posterior (Sollumz 2.9.0 fija 4.2 como mínimo; nosotros usamos 5.2)Modelado, rigging, exportación.
Sollumz2.9.0El add-on que lee y escribe los archivos de modelo de GTA V.
CodeWalkerÚltima versiónExplorar los archivos del juego y extraer un vehículo original para usarlo de referencia.
GTA V para PCOrigen del vehículo de referencia y de las texturas compartidas.

Sollumz se instala como una extensión de Blender. En Blender ve a Preferences > Get Extensions > Repositories > +, elige Add Remote Repository e introduce https://repo.sollumz.org/; después busca Sollumz e instálalo. En el primer arranque el add-on pide instalar sus dependencias. Acepta: una de ellas, PyMateria, es la que permite a Sollumz escribir directamente los archivos binarios del juego. Para qué sirve cada herramienta se compara en CodeWalker vs Sollumz.

¿Dónde están las herramientas de Sollumz en Blender?

Las herramientas están en la barra lateral del viewport 3D (pulsa N), en la pestaña Sollumz Tools. Las propiedades de lo que tengas seleccionado están en el editor Properties, en paneles llamados Sollumz.

DóndePanelQué haces ahí
Sollumz ToolsGeneralImport RAGE Assets y Export RAGE Assets. El subpanel View muestra u oculta las colisiones y cambia el nivel de LOD en pantalla.
Sollumz ToolsDrawablesCreate Drawable Objects, Shader Tools, LOD Tools y Bone Tools.
Sollumz ToolsCollisionsCreate Bounds y Create Collision Material.
Sollumz ToolsFragmentsCreate Fragment Objects, Set Mass, Copy Bone Physics y Vehicle Tools (light IDs, vistas previas de ruedas y ventanas).
Properties > ObjectSollumzEl tipo de Sollumz del objeto y sus ajustes.
Properties > BoneSollumzTag del bone, flags del bone y el interruptor Fragment Physics.
Properties > Data (malla)Sollumz LODsQué malla se usa en cada nivel de detalle.
Properties > MaterialSollumzShader, texturas y valores del shader.

¿Cómo está estructurado un vehículo en Blender?

Cada objeto de una escena de Sollumz tiene un tipo de Sollumz. Un vehículo es este árbol:

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 de BlenderTipo de Sollumz
El vehículoArmatureFragment
Modelo visibleEmpty, hijo del armatureDrawable
Cada mallaMesh, hijo del drawableDrawable Model
ColisiónEmpty, hijo del armatureBound Composite
Cada forma de colisiónHijo del compositeBound Geometry, Bound Disc, Bound Box, etc.

La raíz tiene que ser el armature. El juego no encuentra las puertas, las ruedas y los asientos por el nombre de la malla. Encuentra bones, y cada bone lleva un tag numérico que Sollumz deriva del nombre del bone. Por eso los nombres de los bones tienen que ser exactos.

¿Por qué partir de un vehículo original?

Importa el vehículo original más parecido al tuyo con Import RAGE Assets y mantenlo en la escena mientras trabajas. Selecciona el .yft; cuando el _hi.yft está al lado, Sollumz une los dos al importar. El vehículo original es la especificación: qué bones existen, cómo se llaman, qué formas de colisión usa, cuánto pesa cada pieza y qué shaders tiene.

Dos costumbres ahorran tiempo aquí:

  • Renombra primero los objetos de referencia, por ejemplo con un prefijo ref_. Blender mantiene únicos los nombres de objeto, así que si la referencia sigue teniendo el nombre chassis, tu propia malla pasa a llamarse chassis.001 sin avisar.
  • Copia el armature de referencia en lugar de crear los bones a mano. La copia conserva los tags, los flags y los ajustes de física de los bones. Después mueve los bones para que encajen con tu modelo y borra los que no uses.

¿Qué bones necesita un vehículo?

Un coche usa un vocabulario fijo de nombres de bone. Estos son los habituales:

BonePieza
chassisRaíz del vehículo.
bodyshellPaneles de la carrocería que nunca se mueven.
wheel_lf, wheel_rf, wheel_lr, wheel_rrRuedas: delantera izquierda, delantera derecha, trasera izquierda, trasera derecha.
door_dside_f, door_pside_f, door_dside_r, door_pside_rPuertas, lado del conductor y lado del pasajero, delante y detrás.
bonnet, bootCapó y tapa del maletero.
bumper_f, bumper_rParachoques, que pueden desprenderse.
seat_dside_f, seat_pside_f, seat_dside_r, seat_pside_rDónde se sienta cada ped.
steeringwheelEl volante.
windscreen, window_lf, window_rfCristales.
headlight_l, headlight_r, taillight_l, taillight_r, indicator_lf, brakelight_l, reversinglight_lDesde dónde alumbra cada luz.
misc_a, misc_b, ...Piezas extra móviles o desmontables, como un alerón.

Los asientos y los puntos de entrada de vehiclelayouts.meta se refieren a estos mismos bones. Posiciones que medimos en el modelo en lugar de adivinarlas:

  • Las puertas pivotan sobre el bone, así que el bone va en la línea de las bisagras: el borde delantero de una puerta normal.
  • Capó: borde trasero. Maletero: borde delantero.
  • Volante: el centro del aro, no el centro del objeto entero. Con la columna de dirección incluida, el centro de la caja envolvente quedaba desplazado 46 cm en un coche que convertimos.
  • Bones de luces: el centro de las caras que brillan.

Cada malla tiene que seguir a su bone. Dale un grupo de vértices con exactamente el mismo nombre que el bone y peso 1 en todos los vértices, y añade un modificador armature. Bone Tools > Add Armature Modifier hace la segunda parte para los objetos seleccionados. Para ver o cambiar el tag de un bone, selecciona el bone y abre Properties > Bone > Sollumz.

¿Qué shaders usan los materiales de un vehículo?

Los materiales de Sollumz son shaders del juego. Crea uno en Drawables > Shader Tools con Create Shader Material, o convierte un material de Blender existente al shader seleccionado con los botones de conversión del mismo panel. Estos son los shaders de vehículo que usamos y para qué:

SuperficieShaderNota
Pintura de carrocería que los jugadores pueden repintarvehicle_paint1 y los demás shaders vehicle_paintLa capa de pintura (primaria, secundaria, perlada, ruedas, interior) se elige en el panel Fragment (Vehicle Paint) del material.
Piezas de color fijo o con textura: livery, plásticos, metal, interiorvehicle_meshUsa la textura diffuse tal cual.
Neumáticos y llantasvehicle_tireÚsalo para la rueda entera. En nuestras pruebas, las partes de una rueda con vehicle_mesh no se dibujaban en el juego.
Cristalvehicle_vehglass, vehicle_vehglass_innerCara exterior e interior de cada cristal.
Lentes de faros, neónvehicle_lightsemissiveBrilla cuando la luz correspondiente está encendida.
Pegatinas, redes, emblemas con transparenciavehicle_decal

Dos cosas que no se ven en Blender deciden cómo se ve el coche en el juego:

  • Color de vértice. En los shaders mesh, el canal rojo del primer atributo de color multiplica la textura. Una malla con color de vértice negro sale negra en el juego por buena que sea su textura. Rellénala con un color cuyo rojo sea 255.
  • Light ID. En vehicle_lightsemissive, el canal alfa del color de vértice dice a qué luz pertenecen las caras. Se ajusta en Fragments > Vehicle Tools > Light IDs: entra en Edit Mode con selección de caras, selecciona las caras, elige la luz y pulsa Set Light ID.
Light IDLuz
0Siempre encendida
1, 2Faro izquierdo y derecho
3, 4Luz trasera izquierda y derecha
5, 6, 7, 8Intermitentes: delantero izquierdo, delantero derecho, trasero izquierdo, trasero derecho
9, 10, 11Luces de freno: izquierda, derecha, central
12, 13Luces de marcha atrás: izquierda y derecha
14 a 17Luces extra

En cuanto a las texturas, conserva la diffuse de tu modelo y, cuando puedas, toma los mapas specular, normal y de suciedad de las texturas de vehículo compartidas del juego. Los tamaños y formatos están en optimizar un vehículo de FiveM.

¿Cómo funcionan las ruedas?

El juego dibuja un solo modelo de rueda en todas las ruedas. Modela la rueda una vez como wheel_lf, centrada en su bone, y marca Is Wheel Mesh en Properties > Object > Sollumz. Sin ese interruptor la rueda se exporta como parte de la carrocería: el coche aparece con una rueda flotando en su sitio y ninguna en los demás bujes. Vehicle Tools > Preview Wheel Instances muestra la rueda en las cuatro posiciones dentro de Blender.

Cada rueda necesita además su propio disco de colisión para que el coche tenga algo sobre lo que rodar. Eso se explica en colisión de vehículos en Sollumz.

¿Cómo funcionan los LOD y el archivo _hi.yft en Sollumz?

Cada Drawable Model puede contener cinco mallas: Very High, High, Medium, Low y Very Low. Aparecen en Properties > Data > Sollumz LODs. Al exportar, Sollumz escribe las mallas Very High en <name>_hi.yft y las otras cuatro en <name>.yft. No hay nada que separar a mano: si algún modelo tiene una malla Very High, se crea el archivo _hi.

Cómo generar los niveles más bajos, y qué poner en lodDistances, está en optimizar un vehículo de FiveM.

¿Cómo exporto el .yft y el .ytd?

Selecciona el fragment (el armature) y pulsa Export RAGE Assets en Sollumz Tools > General. Los ajustes que importan para un vehículo:

AjusteValorPor qué
Target FormatsNativeEscribe archivos binarios que el juego carga directamente. CW XML escribe XML de CodeWalker, una versión de texto legible que sirve para comprobar el resultado.
Target Game VersionsGen8Gen8 es GTA V Legacy y Gen9 es GTA V Enhanced. Con los dos activados, los archivos van a las subcarpetas gen8/ y gen9/.
Limit to SelectedActivadoExporta solo lo que está seleccionado y visible.
Texture DictionariesActivado, Include: SelectedEscribe el .ytd. Con All obtienes además el diccionario del vehículo de referencia.

El resultado es mycar.yft, mycar_hi.yft y mycar.ytd. Un objeto oculto no se puede seleccionar, y Sollumz oculta mallas cuando cambias de nivel de LOD, así que si no se escribe nada o el log dice "No Sollumz objects selected for export!", vuelve a mostrar el vehículo y selecciónalo otra vez. Después de cada exportación, mira la hora del archivo en disco antes de probar.

¿Qué debo comprobar antes de probar en el juego?

  • Todo bone con Fragment Physics activado tiene una colisión. Si alguno no la tiene, la exportación avisa: "Bone has physics enabled, but no associated collision!".
  • Ninguna malla tiene color de vértice negro.
  • Toda textura que usa un material está en el .ytd, o sale a propósito de las texturas de vehículo compartidas del juego.
  • La malla de la rueda tiene Is Wheel Mesh activado.
  • La escala está aplicada: no queda escala en el armature.
  • Cada archivo pasa la comprobación de tamaño del servidor. Consulta el aviso de assets sobredimensionados.

¿Cómo meto el modelo en FiveM?

Pon los tres archivos en la carpeta stream de un resource. La primera prueba más rápida es darles el nombre de un vehículo original, por ejemplo sultan.yft, sultan_hi.yft y sultan.ytd: el juego dibuja entonces tu modelo allí donde aparezca un Sultan, con el handling y los asientos del Sultan, y todavía no necesitas ningún archivo meta.

Cuando el modelo se vea bien, dale su propio nombre y sus metas para que se cargue junto a los coches originales. Esa parte está en cómo añadir un vehículo add-on a un servidor FiveM.

Preguntas frecuentes

¿Qué versión de Blender necesita Sollumz 2.9?
Sollumz 2.9.0 fija Blender 4.2 como versión mínima. Nosotros lo usamos en Blender 5.2.
¿Puede Sollumz exportar archivos .yft directamente?
Sí. Con la opción Target Formats en Native, Sollumz escribe archivos binarios .yft, .ydr y .ytd que el juego carga directamente. Hace falta la dependencia PyMateria que el add-on ofrece instalar. La opción CW XML escribe en su lugar XML de CodeWalker.
¿Debo exportar Gen8 o Gen9 para FiveM?
Gen8. En Sollumz, Gen8 significa GTA V Legacy y Gen9 significa GTA V Enhanced.
¿Cómo crea Sollumz el archivo _hi.yft?
Automáticamente. Las mallas del hueco de LOD Very High se escriben en name_hi.yft y las mallas High, Medium, Low y Very Low en name.yft.
¿Por qué mi vehículo sale negro en el juego?
Normalmente porque la malla tiene color de vértice negro. En los shaders mesh de vehículo, el canal rojo del color de vértice multiplica la textura, así que pinta la malla con un color cuyo rojo sea 255.

Fuentes

Productos de esta guía

Todas las guías