Creando un Mazda3 para Assetto Corsa - Parte 1

La historia de este proyecto comienza en febrero de este año, cuando me pregunté a mí mismo: "¿bueno y sí modelo y programo un carro para Assetto Corsa?", antes me había hecho esa pregunta y varias veces mi lado procrastinador se había adelantado a responder: "nahhh, es demasiado trabajo, demasiadas cosas que pueden salir mal, demasiadas variables, hay una nueva serie en Netflix, Te lo resumo subió un nuevo video...", pero ese día, irónicamente mi lado procrastinador parece que estaba durmiendo porque me levanté de la cama, apagué el televisor y me dispuse a comenzar el proyecto.

Así va el modelado 3d de este proyecto.

Lo primero que hice fue, ¡obvio buscar un tutorial en YouTube!, el problema es que el que encontré era para cambiarle los rines a un carro, útil, pero era como el 5% de lo que necesitaba, por lo que mi plan súper estratégico no arrancó bien, entonces entré a un foro de Kunos Simulazioni, donde encontré algunas pistas sobre cómo empezar, entonces usé Autodesk 3ds Max para crear un modelo simplificado, que en realidad era más una caja con cuatro rueditas que un carro, aquí les muestro ese primer modelo:


El siguiente paso fue ponerle nombres a los dummies para que el Assetto Corsa reconociera que era cada cosa del carro, por cierto un dummy es un objeto invisible que le "dice" al programa dónde está una llanta, dónde se encuentra la carrocería, hacia donde es adelante, hacia donde es arriba, etc. Aquí les muestro la cajita en el ksEditor que es el programa que hace de puente entre el 3ds Max y el Assetto Corsa.


Quisiera decirles que esta primera prueba funcionó, pero no fue así, damn it, sin embargo después de hacer algunos ajustes, el programa reconoció la cajita y pude competir con ella, la cual tenía la mecánica de un monoplaza y el sonido de un Fiat 500, y como pueden ver en la siguiente imagen tenía un pequeño defecto en la posición de las llantas, pero aquí con la frente en alto, muy en alto porque la carrocería era más alta que la de un furgón mediano, aún así la cajita decidió retar a un flamante BMW M3 E92 en su carrera inaugural... y perdió.


Luego vino la pregunta del millón, bueno ni tan del millón porque ya vieron la respuesta en el título, pero en ese momento no sabía qué carro hacer, lo que sí sabía es que debía ser un carro que me apasionara porque no quería dejar el proyecto a la mitad, también que en lo posible debía tener un sonido de motor que pudiera sacar de alguno de los carros que trae el Assetto Corsa, y que el carro no estuviera ya en el simulador (si no hubiera sido un McLaren F1 LM o un Pagani Huayra BC), así que hice una encuesta en Instagram, que debido a mi superpoder de no aceptar a nadie en mi única red social, tuvo una pequeña pero consistente cantidad de 7 respuestas, más algunas personas del trabajo quienes expresaron su respuesta de forma presencial, cuando eso era posible, gracias China, gracias.

El nuevo Mazda3 (de cuarta generación o BP) fue el ganador y por mucho, aunque con solo 10 participantes no vamos a decir que fue una muestra estadística confiable, sinceramente era el carro que esperaba que ganara, ya lo he manejado varias veces y siempre me ha dejado la sensación de ser aún mejor que el anterior en casi todos los aspectos, y en mi concepto es el mejor carro de su gama, y el de una gama más arriba, tanto así que Mercedes-Benz, Audi y BMW deberían mirar con atención a este competidor japonés; por cierto,si no han visto la prueba del nuevo Mazda3 acá en el blog es porque las veces que lo manejé, olvidé llevar la cámara para hacer una buena sesión de fotos, y cuando pensaba hacerlo comenzó todo esto, gracias China, gracias.


Cuando el Mazda3 ganó limpiamente las elecciones, comenzó el proceso del modelado tridimensional, y tal vez no les he contado esto, pero, uno de mis hobbies es el modelado 3d de carros, ya he hecho varios pero esta vez el asunto era diferente, y es porque en un juego o en un simulador, todo se renderiza en tiempo real, por lo que uno no puede exagerar en la cantidad de polígonos y detalles que le pone al carro, puesto que la tarjeta gráfica/GPU - y en menor medida la CPU - podrían no mover con fluidez al modelo y el juego o el simulador se harían lentos o presentarían errores. ¿Pero cuántos polígonos eran demasiados?, no lo sabía, y tampoco encontré información en el tutorial de Kunos, así que tomé un modelo de los que trae el simulador y le hice un proceso de ingeniería inversa, encontrando que tenían alrededor de los 170.000 polígonos, ¡ups!, mis modelos 3d pueden llegar hasta 4,5 millones de polígonos, para este tendría que bajarle al nivel de detalle.

Por cierto, aquí les muestro un par de modelados 3d que hice desde cero: el McLaren F1 GTR ganador de las 24 horas de LeMans de 1995 y el Suzuki LJ80 que tuvo mi Papá, que es el primer carro del cual tengo un recuerdo.


Pero volvamos al Mazda3, el modelado arrancó así: básicamente lo que hice fue tomar las tres vistas principales y comenzar a hacer una malla a partir de ellas, la idea con esto es aplicar conceptos de Geometría Descriptiva para ubicar tridimensionalmente una serie de puntos en el espacio, los cuales forman una "malla" que le van dando forma al modelo, aquí les dejo algunas imágenes del proceso:
 

Pero una cosa es hacer que el el carro se vea como un Mazda3, y otra muy diferente es hacer que se maneje como un Mazda3, y para eso tenía que programar todos los parámetros del carro: motor, caja, transmisión, suspensión, distribución de pesos, momento polar de inercia, aerodinámica, llantas... cuando vi la cantidad de parámetros que trae el Assetto Corsa para "darle vida" a un carro me asombré, el nivel de realismo de ese simulador tiene su razón de ser y así mismo trabajo era lo que me esperaba por delante, pero por algo tenía que comenzar, y fue por el motor.


El motor es uno de los parámetros más sencillos, pues básicamente hay que generar unos valores (X,Y), las rpm en el eje "X" y el torque expresado en [Nm] para el eje "Y", para ello busqué los valores de potencia medidos cada 500 rpm y luego creé una tabla en Excel aplicando la fórmula Potencia = (Torque x RPM) / 5252 para luego ubicar los valores de toque en la programación. Así mismo, se debe "indicar" a programa cuál es la pérdida de potencia de acuerdo a la altitud, pues como ya deben saberlo, a medida que subimos sobre el nivel del mar se reduce la presión atmosférica, lo que reduce la cantidad de oxígeno presente en el aire, reduciendo así la potencia del motor, para esta caso se trata de un motor naturalmente aspirado por lo que dejé la pérdida de potencia por altura en 10% cada 1000 metros. Otros valores que se programan son el "ralentí" o marcha mínima del motor, las rpm a las cuales la ECU corta inyección, la retención del motor, entre otros.


Luego vino la caja de cambios, básicamente hay dos opciones de transmisión, la mecánica Skyactive-MT y la automática Skyactiv-Drive de la que hablé acá, la información de las relaciones de reducción las saqué de la ficha técnica del Mazda3 publicada en la página de Mazda Colombia; por otra parte, el tiempo en que demora hacer los cambios en reducción lo obtuve de un documento publicado por un tal Dave Coleman, que no es nadie más sino uno de los principales ingenieros de desarrollo de vehículos en Mazda Norteamérica; ahora bien, para calcular el tiempo en los cambios ascendentes fue donde eché mano de mi experiencia personal y la percepción (la cual no es exacta pero se puede acercar mucho si la usamos bien), pues cualquier persona que haya manejado un Mazda con la caja Skyactiv-Drive sabrá que los cambios descendentes son muy rápidos, tan rápidos como una caja de doble embrague, información que concuerda con el tiempo anunciado de 150 milisegundos, sin embargo los cambios ascendentes son más lentos, no encontré el tiempo oficial pero lo estimé en unos 280 ms. Aquí les dejo la programación de la caja de cambios y la explicación de algunos valores:


En este punto volví al modelado 3d y realicé algunos avances que les muestro acá para que vean el proceso, y cómo se llegó a la primera imagen de este artículo:



Bueno hasta aquí esta primera entrada, el proyecto va más adelantado que esto, pero voy a contarlo por partes, eso sí, les dejo un video de cómo va la programación hasta ahora, comparando un video real de un Mazda3 2.0 litros en Laguna Seca con el que estoy programando para el simulador Assetto Corsa, que ya cuenta con versiones 2.0, 2.5 y 2.5 turbo.



Comentarios

  1. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  2. Hola Andares, Excelente blog, amigo yo tengo un blog parecido al suyo con temáticas parecidas, me gustaría hacer un trato contigo para mejorar la autoridad de ambos blogs, los dos ganamos. mi blog se llama Librovial.blogspot, si estas interesado me envías un mensaje.

    ResponderBorrar
  3. Increible como aplicas todo ese conocimiento al mundo del 3D. Que gran proyecto ese!

    ResponderBorrar
  4. Increíble, en serio. Por fin un sitio donde van diciendo lo que se hace, y cómo se hace. Estoy interesado en hacer mi propio coche, un Citroen Xsara 2.0 hdi 90cv. Y la verdad, me ayudaste. Muchas gracias. No lo dejes aqui :(

    ResponderBorrar

Publicar un comentario