Cómo optimizar un vehículo de FiveM: polígonos, LOD y presupuesto de texturas

Por Nilo3D · Actualizado:

Un vehículo de FiveM está optimizado cuando cada archivo en stream necesita 16 MiB de memoria o menos, el modelo tiene mallas de menor detalle para la distancia y vehicles.meta le dice al juego cuándo cambiar entre ellas. En la práctica eso significa texturas de 2048 píxeles o menos en un formato comprimido, cuatro niveles de LOD por debajo de la malla de alto detalle y unos lodDistances como 10, 25, 50, 100, 500, 500.

¿A qué debo apuntar?

FiveM no fija ningún límite de polígonos. Lo que el servidor mide es la memoria que necesita cada archivo en stream una vez cargado, y avisa por encima de 16 MiB por archivo. Así que el objetivo es por archivo, no por vehículo: el .yft, el _hi.yft y el .ytd se comprueban cada uno por separado. Los escalones de ese aviso están en archivos de modelo del vehículo y el aviso de assets sobredimensionados.

ArchivoQué lo hace pesadoQué hacer
.ytdResolución y formato de las texturasRedimensionar y comprimir las texturas.
_hi.yftNúmero de triángulos de la malla detalladaQuitar la geometría que nadie ve, reducir las partes densas.
.yftNúmero de triángulos de los niveles más bajos, más la colisiónHacer LOD más bajos de verdad en lugar de copias de la malla detallada.

Una cifra de nuestro propio trabajo: un coche de sim racing que convertimos llegó con unos 512.000 triángulos. Después de la conversión y antes de cualquier reducción, su archivo de modelo todavía necesitaba unos 28 MiB de memoria virtual, muy por encima del primer escalón de aviso. Los modelos hechos para otros juegos no están hechos para este presupuesto, así que cuenta con reducirlos.

¿Cómo mido un vehículo?

  • Consola del servidor. Inicia el resource y lee la consola. Por cada archivo de más de 16 MiB aparece una línea con el nombre del archivo y sus MiB. Si no hay línea, todos los archivos pasaron.
  • Triángulos por nivel en Blender. En Sollumz Tools > Drawables > LOD Tools > Auto LOD, selecciona un Drawable Model y el panel muestra LOD Statistics: triángulos y vértices de cada nivel que tiene malla.
  • Texturas. La memoria por textura depende solo de la resolución y del formato. La tabla está en la guía de archivos de modelo: una textura DXT5 de 2048 x 2048 ocupa 5,33 MiB, una de 4096 ocupa 21,3 MiB.

¿Qué niveles de LOD tiene un vehículo?

Sollumz da cinco huecos a cada Drawable Model. Al exportar, el de arriba pasa a ser el _hi.yft y los otros cuatro van al .yft principal.

Nivel de SollumzArchivoValor de lodDistances que lo terminaSultan original
Very High_hi.yft1.º10 m
High.yft2.º25 m
Medium.yft3.º50 m
Low.yft4.º100 m
Very Low.yft5.º500 m

El sexto valor es la distancia a la que el vehículo deja de dibujarse. Las distancias están en vehicles.meta, no en el modelo:

<!-- _hi, High, Medium, Low, Very Low, fade out (metres) -->
<lodDistances content="float_array">
  10.000000
  25.000000
  50.000000
  100.000000
  500.000000
  500.000000
</lodDistances>

La scooter Faggio original usa 15, 30, 50, 100, 500, 500. Un error que hemos visto en coches convertidos es una línea como 10, 150, 150, 150, 150, 150: la malla High se dibuja hasta los 150 m y después el coche desaparece, así que los niveles más bajos nunca se muestran aunque el modelo los tenga. El campo se explica en vehicles.meta explicado, y qué son los LOD en qué son los LOD en los vehículos de FiveM.

¿Cómo creo los LOD con Sollumz?

Abre Sollumz Tools > Drawables > LOD Tools > Auto LOD. La herramienta copia una malla de referencia y la reduce para cada nivel que marques; después Generate LODs rellena los huecos.

AjustePor defectoSignificado
Reference MeshLa malla que se copia y se reduce. Usa la más detallada.
MethodCollapseCollapse es la opción de uso general. Un-Subdivide va bien con mallas hechas por subdivisión, Planar disuelve las zonas planas.
Decimate Step0.6Un paso uniforme que se aplica en cada nivel.
Per-LOD RatiosDesactivadoActivado, cada nivel tiene su propia proporción. Los valores por defecto son 0.90, 0.70, 0.50, 0.30 y 0.15 de Very High a Very Low, y un nivel puede usar en su lugar un número objetivo de triángulos.
Decimate from OriginalDesactivadoReduce cada nivel a partir de la referencia en lugar de a partir del nivel superior.

La reducción automática es un punto de partida. Lo que revisamos a mano después:

  • Luces. Las piezas pequeñas que brillan son las primeras que colapsan hasta desaparecer. Conserva la malla original de los intermitentes y las luces traseras en todos los niveles, o protégelas de la reducción.
  • Piezas en bones distintos. Reduce cada modelo por separado para que una puerta nunca comparta un vértice con la carrocería.
  • Silueta. El nivel más bajo solo tiene que verse bien desde 100 m o más. El interior, el motor y los bajos pueden desaparecer por completo.
  • Ruedas de moto. En los vehículos de dos ruedas que hicimos, el juego no dibujaba el modelo de rueda separado en el nivel más bajo. Las motos originales lo resuelven metiendo una forma de rueda simple dentro de la malla de la carrocería de ese nivel, y nosotros hacemos lo mismo.

¿Qué tamaños de textura debe usar un vehículo?

Estos son los tamaños que usamos según la función. Nunca amplíes: una textura que llega a 1024 se queda en 1024.

TexturaTamaño
Livery, atlas principal, lentes de faros2048
Mapa normal de la carrocería, neumático1024
Texturas de detalle repetibles (carbono, tela, rejillas)512
Piezas pequeñas del interior256
Colores planos4 x 4
  • Formato. DXT1 (BC1) sin transparencia, DXT5 (BC3) con ella. Una textura DXT1 usa la mitad de memoria que la misma textura en DXT5.
  • Colores planos. Guarda sin comprimir las texturas de 4 x 4 de un solo color. No cuestan casi nada, y la compresión por bloques nos desviaba los grises oscuros hacia el morado y el verde.
  • Texturas compartidas. Los mapas specular, normal y de suciedad que ya existen en las texturas de vehículo compartidas del juego no necesitan una copia en tu .ytd.
  • Texturas sin usar. Los modelos convertidos arrastran texturas que ningún material usa. Bórralas.
  • Convierte fuera de Blender. Redimensiona y comprime con una herramienta de texturas y carga el resultado. Volver a guardar las imágenes desde Blender oscurecía las nuestras.

¿Puedo optimizar un vehículo que ya está terminado?

Sí, desde su archivo de origen. Abre el .blend desde el que se exportó el vehículo, añade los niveles más bajos y exporta otra vez. Lo que evitamos es importar un .yft terminado en Blender y volver a exportarlo: la ida y vuelta reescribía valores pequeños del esqueleto, y en uno de nuestros vehículos eso bastó para romper sus animaciones de entrada y salida en el juego.

Las texturas son más seguras de cambiar después. Un .ytd se puede abrir, sustituir sus texturas por otras más pequeñas con los mismos nombres y guardar, sin tocar el modelo. Las herramientas para cada tarea están en CodeWalker vs Sollumz.

Lista de comprobación de optimización

  1. Ninguna textura por encima de 2048, ninguna sin comprimir salvo los colores de 4 x 4.
  2. Ninguna textura sin usar en el .ytd.
  3. El modelo tiene una malla Very High y cuatro niveles más bajos.
  4. Las luces siguen viéndose en todos los niveles.
  5. lodDistances tiene seis valores crecientes, no el mismo número repetido.
  6. La consola del servidor no imprime ninguna línea de tamaño para el resource.

Todo el proceso de modelado está en cómo hacer un vehículo de FiveM en Blender con Sollumz. Como referencia de nuestro catálogo, el Coil S-Cooter y los tres hoverboards traen cuatro LOD, de High a Very Low.

Preguntas frecuentes

¿Cuántos polígonos debe tener un coche de FiveM?
FiveM no fija ningún límite de polígonos. El servidor mide la memoria por archivo en stream y avisa por encima de 16 MiB, así que el límite práctico es un .yft y un _hi.yft que se queden cada uno en ese tamaño o por debajo.
¿Qué lodDistances debo usar en un coche add-on?
El Sultan original usa 10, 25, 50, 100, 500, 500 y es un punto de partida seguro. Cada valor termina un nivel: _hi, High, Medium, Low, Very Low y, por último, el desvanecimiento.
¿Cómo hago los LOD en Sollumz?
Usa Sollumz Tools > Drawables > LOD Tools > Auto LOD. Elige la malla de referencia, marca los niveles que quieres crear y pulsa Generate LODs. Después revisa a mano las luces y la silueta.
¿Qué tamaño de textura es mejor para los vehículos de FiveM?
Usamos 2048 para la livery o el atlas principal, 1024 para el mapa normal de la carrocería y los neumáticos, 512 para los detalles repetibles y 256 para las piezas pequeñas del interior, todo en DXT1 o DXT5.
¿El _hi.yft cuenta para la comprobación de 16 MiB?
Cada archivo se comprueba por separado. El .yft, el _hi.yft y el .ytd tienen que quedarse cada uno en 16 MiB o menos para que la consola no avise.

Fuentes

Productos de esta guía

Todas las guías