¿Qué formato de archivo 3D debería usar mi motor si no quiero tener que cambiarlo más tarde? [cerrado]

8

¿Existe un formato de facto para exportar un modelo 3D del software de modelado a un motor de juego?

Sé que varía según el motor y la situación, pero ¿cuál es la idea general que se les ocurre a los desarrolladores de juegos expertos cuando surge esta pregunta?

En mi opinión, aparece el formato obj, pero no admite animación.

Entonces, ¿cuál podría ser el mejor formato que admita / cubra más o menos todas las características que puede cubrir un motor moderno? FBX? Collada?

Algún conocimiento profesional ayudaría.

Quazi Irfan
fuente
Creo que el término que estaba buscando es "de facto", no "De-factor".
Nicol Bolas
@ nicol-bolas arreglado
Quazi Irfan

Respuestas:

8

No hay "mejor formato"; solo hay diferentes niveles de molestia.

Collada hace casi todo lo que posiblemente quieras hacer, a costa de hacer todo lo que no quieres hacer también. Esto lo convierte en un formato de intercambio útil, pero no es algo que probablemente deba buscar cargar directamente en su juego.

FBX no es tan ampliamente compatible, ya que es un formato propietario. Y es ... un formato propietario, pero al menos la especificación de formato está disponible.

La mayoría de los desarrolladores de juegos necesitan masajear los datos, sea cual sea el tipo, en algo que su juego pueda cargar y arrojar a la pantalla lo más rápido posible. Por lo tanto, la mayoría de los motores de juegos que admiten los formatos de intercambio utilizarán una herramienta fuera de línea para transformarlos en sus formatos específicos del juego.

Y esa es generalmente una buena forma de trabajar. Tienes una buena separación de código: el código que da masajes a los datos está separado del código que los carga en tu juego. Obtiene un rendimiento de carga rápido, al tiempo que tiene la capacidad de formatear los datos según lo necesite para obtener la máxima velocidad y uso. Y aún puede ver cómo se ven los datos en su formato de archivo exportado original, que generalmente es algún tipo de archivo de texto.

Nicol Bolas
fuente
"pero no es algo que probablemente debas buscar cargar directamente en tu juego". ¿por qué?
Quazi Irfan
"... usa una herramienta fuera de línea para transformarlos en sus formatos específicos de juego". ¿Tiene que ser conversión de nivel binario?
Quazi Irfan
44
@iamcreasy: "¿por qué?" ¿Has mirado a Collada? ¿Realmente quieres cargar eso, hacer tantas conversiones de ASCII a flotante, y luego, después de todo eso, comprimir los datos en la forma final utilizada por tu juego?
Nicol Bolas
2
@iamcreasy: No tiene que ser un archivo binario, pero tampoco es una mala idea que sea uno. Puede cargarlo directamente como imagen de memoria en algunos casos. Incluso podría cargar datos de vértices directamente en un puntero de objeto de búfer mapeado. Los tiempos de carga en los juegos son suficientemente malos sin que alguien los empeore.
Nicol Bolas
1
@iamcreasy Se tiene que ser datos binarios, todo lo demás es una pérdida para un motor
Maik Semder