Para hacerse una idea del resultado de este tutorial, lo mejor es ver el vídeo adjunto.
En el archivo de trabajo PSD_C4D_R12_Dyn_Motor_Auto_Start.c4d, los elementos más importantes de la escena ya están preparados para que podamos empezar a trabajar inmediatamente con Dynamics. Como vamos a empezar a construir el pequeño vehículo de juguete, todos los elementos molestos de la escena se ocultan temporalmente utilizando los botones del semáforo del Gestor de Objetos.
Configuración de la escena
Echemos un vistazo rápido a la composición de la escena. Además del coche, la escena contiene un objeto esfera como obstáculo posterior, un objetoHyperNURBS con un objeto paisaje integrado, así como objetos suelo, cielo y luz para el entorno y la iluminación.
Para que la construcción del vehículo sea lo más sencilla y comprensible posible, el coche consta únicamente de la carrocería y las cuatro ruedas. Un total de cuatro objetos tubulares, alineados en la dirección X positiva y colocados en la posición designada en el coche, hacen las veces de ruedas.
Para facilitarnos la integración posterior de conectores y motores, cada rueda tiene su posición adjunta como abreviatura (vl = delantera izquierda).
La carrocería del coche genera un objeto Extrude NURBS a partir de una spline. Por supuesto, también se puede utilizar un coche o carrocería diferente; lo único importante después es la correcta integración mediante conector o etiqueta de carrocería Dynamics.
La anchura de nuestro vehículo se almacena en el diálogo de configuración del objeto Extrude NURBS. Es el resultado del desplazamiento en la dirección X durante la extrusión. Los bordes redondeados de la carrocería proporcionan un aspecto natural y realista.
Oculto en el objeto HyperNURBS hay un objeto paisaje que nos proporciona un terreno utilizable para la inserción todoterreno del coche. Gracias a la subdivisión HyperNURBS, podemos economizar en la segmentación del paisaje sin crear un terreno demasiado anguloso.
Para añadir un poco más de acción al conducir por el terreno, integramos algunos obstáculos. En mi caso, se trata de simples objetos esféricos de 50 cm de radio, que luego se distribuyen aleatoriamente sobre el terreno o el objeto paisaje mediante MoGraph.
Construir el vehículo con conectores y motores
Empecemos por el coche de juguete. ¿Qué funciones debe cumplir para nuestros fines?
En primer lugar, las ruedas deben estar unidas al vehículo para que puedan girar; también necesita un accionamiento en las ruedas para que pueda moverse automáticamente. Y, por supuesto, tiene que reconocer las colisiones, empezando por el hecho de que las ruedas estén en el suelo.
Para que podamos ofrecer esta funcionalidad a través del nuevo Cinema 4D Dynamics, los elementos implicados necesitan etiquetas de cuerpo Dynamics para que puedan ser aceptados por el motor Dynamics.
Comenzamos con las cuatro ruedas, las cuales seleccionamos en el Gestor de Objetos y definimos como cuerpos rígidos a través del menú Simulación>Dinámica.
Como las cuatro ruedas tienen naturalmente las mismas propiedades dinámicas, dejamos seleccionadas las cuatro etiquetas Cuerpo Din ámico y establecemos los parámetros deseados.
En la página Din ámica, podemos aceptar los ajustes por defecto. El disparo inmediato es importante para que las ruedas hagan contacto inmediatamente con el suelo.
En el lado de colisión, ayudamos a la detección de colisión de Dynamics estableciendo el eje X del cilindro como la forma. Esto corresponde en última instancia a la forma de la rueda y aumenta el rendimiento del cálculo de Dynamics. Fijamos una ligera elasticidad del 10% para que el vehículo sólo rebote muy ligeramente al chocar contra el suelo. A cambio, aumentamos el rozamiento al 120% para que las ruedas se agarren bien al suelo.
Pasemos al siguiente elemento del vehículo, la carrocería. Desgraciadamente, el objeto Extruir NURBS no es adecuado como punto de referencia para la carrocería debido a la posición desfavorable de su eje, así que simplemente dejamos que intervenga el objeto nulo superordinado Coche. Su eje se encuentra en el centro del coche.
Por tanto, asignamos una etiqueta Cuerpo Dynamics como Cuerpo Rígido al objeto nulo Coche a través del menú Simulación>Dynamics.
En el diálogo de configuración de la etiqueta Cuerpo Dinámico, también iniciamos el disparo para el coche inmediatamente.
En la página de colisión, necesitamos tener en cuenta la jerarquía de nuestro vehículo para que el cuerpo pueda ser reconocido. Para ello, establecemos la jerarquía en Forma de colisión compuesta y seleccionamos el casco convexo o la malla móvil como la mejor forma.
El resto de propiedades de colisión pueden seguir siendo las mismas; después de todo, el vehículo estará esencialmente parado sobre sus cuatro ruedas y no necesariamente volcará.
Para asegurarnos de que el eje deseado se utiliza como centro de gravedad de nuestro vehículo, tenemos que cambiar brevemente a la página de masa.
Aquí activamos la opción Centro de masa propio - sin embargo, como no queremos desviarnos del eje definido, los valores de desplazamiento X, Y y Z permanecen en 0.
Si ahora iniciáramos la animación, nuestro vehículo simplemente se desplomaría. Esto no es sorprendente, ya que sólo hemos definido cinco cuerpos Dinámicos y Cinema 4D no sabe (todavía) nada sobre las relaciones constructivas.
Ahora estamos cambiando eso con conectores. En primer lugar, los usamos para unir las ruedas al vehículo, en segundo lugar, permitimos la rotación alrededor del eje de la rueda y en tercer lugar, realizamos simultáneamente una suspensión de rueda adecuada para la trayectoria a través del terreno.
Tomemos el primer conector del menú Simulación>Dinámica.
Cada rueda tiene su propio conector. Comenzamos con la rueda delantera izquierda y renombramos el conector recién creado en consecuencia. Para que el conector tome la posición de la rueda, activamos la herramienta Transferir del menú Funciones y arrastramos la rueda al campo de objeto para la transferencia.
Tras hacer clic en el botón Asignar, el conector se encuentra en la misma posición que la rueda especificada.
Creamos el siguiente conector de la misma manera; esta vez para la rueda delantera derecha. También asignamos la posición de la rueda correspondiente a este conector utilizando el comando Aplicar.
Antes de continuar con las ruedas traseras, alineamos correctamente los conectores de las ruedas delanteras. Para ello, seleccionamos el conector y lo giramos hacia fuera utilizando el ángulo de dirección en el Gestor de Atributos con la parte amarilla de la bisagra. El resultado es un ángulo de 90° para la rueda delantera derecha y un ángulo de -90° para la rueda delantera izquierda.
Utilizando el mismo procedimiento, ahora puede colocar las dos ruedas traseras con conectores en la posición correcta y configurarlas con la rotación correcta. La siguiente ilustración muestra los cuatro conectores colocados vistos desde arriba.
Para que los conectores sean visibles aunque no estén seleccionados, basta con activar la opción Siempre visible en la página de visualización del cuadro de diálogo de configuración de los conectores. Reduzca ligeramente el tamaño de los conectores para que se adapten mejor al vehículo.
Ahora debemos determinar finalmente la función correcta para los conectores; después de todo, queremos ejes con muelles y no bisagras en el coche. Esto se hace en la página de objetos, donde definimos el tipo de suspensión de las ruedas para los cuatro conectores.
Dejamos seleccionados los cuatro conectores, ya que también podemos hacer los siguientes ajustes para las suspensiones de las cuatro ruedas. Como primer objeto para enlazar los conectores, arrastramos el objeto nulo Auto como objeto A al campo previsto.
Seleccionamos un valor de 20 para la dureza del muelle y un valor de 20% para la amortiguación del muelle, es decir, la velocidad a la que retorna el muelle.
Activamos el límite inferior y superior en la dirección Y, cada uno con un desplazamiento de 20 cm. Aunque es poco probable que nuestro vehículo alcance estos límites, la escena será más clara como resultado.
Ahora nos ocupamos de los conectores individuales o suspensiones de las ruedas. El único ajuste que nos queda por hacer para cada conector es el segundo objeto para la unión. Para ello, arrastramos la rueda perteneciente al conector respectivo al campo Objeto B.
Una vez que hemos configurado los cuatro conectores o suspensiones de rueda, también los integramos en el vehículo en la jerarquía de objetos. Los colocamos cerca de las ruedas como un subobjeto en el objeto nulo "Coche".
Lo que aún le falta a nuestro coche de juguete es la tracción para que también pueda moverse por sí solo. La tracción total sería deseable para el terreno, pero en nuestro ejemplo sólo las dos ruedas delanteras deben ser accionadas por motores. Dos motores porque así la transmisión de potencia a cada una de las ruedas es físicamente más correcta.
Añadimos el primer motor a la escena a través del menú Simulación>Dinámica.
Análogamente a los conectores, también cambiamos el nombre del motor para que coincida con la rueda accionada. En este caso, el motor accionará la rueda delantera izquierda.
Utilizando la herramienta Aplicar del menú Funciones, dejamos que el motor tome la posición de la rueda. Después de hacer clic en el botón Asignar, el motor está en la posición deseada y sólo necesita ser alineado.
Para ello utilizamos el Gestor de Atributos de la página de coordenadas. Giramos el motor utilizando un ángulo de 90° para que el sentido de giro del amarillo coincida con el sentido de giro de la rueda.
El motor se vincula mediante los campos de objeto en su diálogo de configuración. En nuestro caso, arrastramos la rueda delantera izquierda al campo Objeto A. Para el accionamiento, damos al motor una velocidad angular objetivo de 400° y un par de 50.
Del mismo modo, añadimos otro motor para accionar la rueda delantera derecha. Lo renombramos adecuadamente y de nuevo transferimos la posición de la rueda correspondiente al motor utilizando la herramienta de transferencia.
También giramos el segundo motor en la dirección correcta utilizando el gestor de atributos y esta vez transferimos la rueda delantera derecha como objeto A.
Naturalmente, el segundo motor recibe los mismos parámetros para la velocidad angular y el par.
Esto significa que el accionamiento está ahora correctamente instalado en el vehículo. Recomiendo incluir los motores como subobjetos en la jerarquía de objetos del vehículo para que el editor permanezca claramente organizado durante la simulación.
Antes de que podamos finalmente dejar que nuestro coche se ponga en marcha, seguimos necesitando una superficie estable, ya que hasta ahora el coche de juguete simplemente caería al vacío.
Para nuestra primera prueba y como capa base para más adelante, convertimos el suelo en un objeto de colisión. Para ello, seleccionamos el objeto suelo y le asignamos la correspondiente etiqueta Cuerpo Dinámico a través del menú Simulación>Dinámica.
Como es habitual con un objeto de colisión puro, el diálogo de configuración es bastante claro. Lo que más nos interesa es el valor de fricción. Lo fijamos en 100% para que las ruedas puedan encontrar rápidamente su equilibrio y acelerar correctamente.
Si ahora pulsamos el botón de reproducción, el coche de juguete arranca solo. Más adelante añadiremos un pequeño sistema de control al coche, pero por ahora nos ocuparemos del terreno.
Expandiendo la escena con elementos Dynamics y MoGraph
Anteriormente invisible porque estaba desactivado como objeto paramétrico a través del Gestor de Objetos, el objeto paisaje se va a utilizar ahora como terreno accidentado. Al igual que con el objeto terreno, primero debemos definir el terreno como un objeto de colisión. Para ello, asignamos una etiqueta Cuerpo Dynamics como objeto de colisión al objeto HyperNURBS superordinado a través del menú Simulación>Dynamics.
La página de colisión del diálogo de configuración es también de particular importancia para este objeto de colisión. Aquí necesitamos la malla estática como tipo de colisión para que el coche pueda reconocer posteriormente cada bache de la superficie. De forma análoga al objeto suelo, aquí también asignamos el valor de fricción alto del 100%.
Vamos a probar cómo se desenvuelve nuestro coche en el terreno. Para ello, primero movemos todo el grupo de coches a 3000 cm utilizando la coordenada Z en el gestor de atributos. El coche está ahora preparado en la dirección de desplazamiento y puede dirigirse hacia el terreno con impulso.
Tras pulsar el botón de reproducción, podemos ver cómo nuestro coche de juguete se abre paso valientemente por el paisaje de colinas. Para animar un poco más la escena, también distribuimos obstáculos.
El punto de partida para nuestros obstáculos ya está disponible en forma de objeto esfera. Para asegurarnos de que las esferas clonadas no sólo se interpongan en el camino del coche más adelante, sino que también sean empujadas, tenemos que definirlas como cuerpos rígidos. En principio, no importa si se asigna la etiqueta Cuerpo Dinámico a la propia esfera o al objeto clonado. Eres más flexible con la primera variante, ya que puedes dar a cada tipo de clon sus propias propiedades dinámicas.
Así que vamos a asignar la etiqueta Cuerpo de Dinámicas requerida al objeto esfera como cuerpo rígido; como siempre, podemos encontrarla en el menú Simulación>Dinámicas.
En el diálogo de configuración de la etiqueta Cuerpo Dynamics para la esfera, establecemos el disparo a En colisión en la página Dynamics. Esto significa que las bolas no se ponen en movimiento de forma indeseada, sino que sólo reaccionan cuando el coche u otra bola provocan una colisión.
Debido a la forma simple del objeto, confiamos en la detección automática de colisiones; una fricción aumentada del 80% mantiene las bolas en el suelo tanto como sea posible para que simplemente rueden sobre el terreno sin ningún rebote no deseado.
Ahora se ha dotado a la bola de propiedades dinámicas para que podamos distribuirla por el terreno. Para ello, utilizamos un objeto clon del menú MoGraph.
Usando el Gestor de Objetos, asignamos el objeto esfera al objeto cl on como clon. Como estamos usando una esfera paramétrica que usa el centro de la esfera como punto de referencia, colocar los clones de la esfera en el momento significaría que la mitad de los clones se quedarían atascados en el terreno.
Para evitar esto y mover las esferas hacia arriba por el radio correspondiente, podemos establecer un desplazamiento en la página de transformación del diálogo de configuración. Desplazamos las esferas en la dirección Z 50 cm, es decir, el radio de la esfera.
En la página Objeto del cuadro de diálogo Ajustes, realizamos los ajustes necesarios para la duplicación y la distribución de los clones.
En primer lugar, seleccionamos el modo Objeto; al fin y al cabo, queremos utilizar el objeto Paisaje para distribuir los clones. A continuación, arrastramos el mencionado objeto paisaje al campo Objeto previsto a tal efecto.
Los clones deben distribuirse por la superficie del objeto; por supuesto, puede determinar usted mismo el número. Para que el coche no tenga que quitar de en medio un número innecesariamente grande de bolas, se recomienda un número máximo de 80.
En la imagen de abajo puedes ver el estado actual del renderizado. Las bolas están bien distribuidas en el objeto paisaje, pero siguen apuntando todas en la misma dirección. Sin embargo, este pequeño problema puede resolverse rápidamente con un efecto aleatorio.
Para asignar el efector aleatorio al objeto cl on como lugar de acción tan pronto como se integre en la escena, seleccionamos el objeto clon en el Gestor de Objetos antes de obtener el efector aleatorio del menú MoGraph>Efectores.
En el diálogo de configuración del efector, encontramos los parámetros de transformación en la página de parámetros. Como las esferas sólo van a ser rotadas en todos los ejes, sólo necesitamos cambiar los parámetros de ángulo. Un ángulo de 90° es suficiente para permitir una amplia gama de rotaciones.
Un renderizado de prueba muestra que las esferas se distribuyen ahora aleatoriamente por el paisaje gracias al efecto aleatorio.
Ahora es el momento de soltar nuestro coche de juguete sobre los obstáculos. Como es de esperar que se produzcan algunas colisiones más en el futuro, merece la pena echar un vistazo a los preajustes de Dinámica en los preajustes de Documento, en función del tamaño o la escala de los obstáculos.
Como el tamaño de las bolas, las ruedas y también el coche de juguete están muy cerca de la escala especificada o se llevan bien con la tolerancia de colisión, no son necesarios ajustes aquí en mi ejemplo.
Para garantizar que el coche de juguete no desaparezca de la vista al poco de empezar, también encontrarás una cámara objetivo bajo los elementos de la escena en el Gestor de Objetos, que se alinea automáticamente con el coche. Su expresión de alineación establece que no debe perder de vista el objeto coche.
La activamos haciendo clic en el símbolo del visor blanco en el Gestor de objetos.
Ahora puedes pulsar el botón de reproducción y observar cómo el coche atraviesa el terreno lleno de obstáculos.
Instalación de un sencillo control para el coche con XPresso
Por supuesto, sería más agradable si el coche no sólo condujera directamente a través del terreno, sino si nosotros como usuarios también tuviéramos una opción de control.
Para nuestro ejemplo, una simple opción de dirección a la izquierda o a la derecha a través de un control deslizante debería ser suficiente. Como en realidad tendríamos que controlar dos objetos (las ruedas o los conectores), pero sólo queremos un controlador cómodo, simplemente integramos nuestros propios parámetros de control en forma de datos de usuario.
Para ello, seleccionamos el grupo auto y añadimos nuestros propios datos de usuario a través del menú Usuario en el Gestor de Atributos.
Se abre la ventana Gestionar datos de usuario. Todos los datos de usuario individuales pertenecientes al objeto portador se pueden encontrar aquí. Cambiamos el nombre de la entrada recién creada a Dirección y utilizamos el campo Propiedades para especificar cuál debe ser el parámetro.
Seleccionamos un deslizador de coma flotante en grados como interfaz. Para asegurarnos de que estamos tratando con pasos claros, seleccionamos un ancho de paso de 1°.
Para evitar que las ruedas giren demasiado y se solapen con el vehículo, limitamos la desviación mínima a -30° y la máxima a 30°. El valor por defecto de 0° garantiza que las ruedas estén rectas al principio.
Una vez que hemos cerrado el diálogo con OK y se han creado los datos de usuario, encontramos el parámetro de dirección que hemos creado en la página de datos de usuario de nuestro coche , tal y como deseamos como un deslizador.
Ahora hemos creado una forma de controlar nuestro propio parámetro. Ahora sólo tenemos que reenviarlo al lugar correcto en la carrocería de nuestro vehículo.
Una tarea primordial para XPresso. Para ello, primero necesitamos una etiqueta XPresso, que es más fácil de asignar a través del menú contextual con el botón derecho del ratón en el submenú Etiquetas de Cinema 4D.
Por supuesto, nuestro grupo Auto es un excelente soporte para esta expresión.
Haga doble clic en la etiqueta XPresso para abrir el editor XPresso. Como primera entrada o nodo, arrastramos el objeto nulo Auto desde el Gestor de Objetos a la ventana del editor XPresso.
Para hacer que nuestro parámetro creado por nosotros mismos esté disponible como puerto para enlazar, hacemos click en el botón rojo de los puertos de salida y seleccionamos el puerto de Dirección desde el submenú Datos de Usuario.
Queremos usar nuestro parámetro de dirección para influir en los ángulos de dirección de los conectores de suspensión de las ruedas. Para poder acceder a estos parámetros en el Editor de XPresso, buscamos los dos conectores de la rueda delantera izquierda y derecha en el Gestor de Objetos y arrastramos ambos objetos al Editor de XPresso.
Como queremos transferir un valor a los dos conectores, necesitamos el parámetro ángulo de control en el puerto de entrada. Para ello, hacemos click en el botón azul de los puertos de entrada de los nodos conectores y seleccionamos el puerto de ángulo de control en el submenú Propiedades de Objeto.
Ahora sólo tenemos que conectar los dos puertos de ángulo de dirección al puerto de dirección del coche. Para ello, simplemente mantenemos pulsado el botón del ratón y arrastramos de un puerto al otro.
Lamentablemente, nuestra pequeña excursión en XPresso ya ha terminado, así que podemos cerrar el editor de XPresso. Para que no tengamos que buscar constantemente el objeto nulo y su entrada de datos de usuario para controlar el coche, simplemente integramos el control deslizante en el head-up display (HUD) de la ventana del editor.
Para ello, hacemos clic con el botón derecho en la entrada del parámetro Dirección en el Gestor de Atributos y seleccionamos el comando Añadir al HUD del menú contextual.
Para mover la entrada HUD en el editor, simplemente haz clic en el elemento HUD mientras mantienes pulsada la tecla (Ctrl) y muévelo a una posición adecuada con el ratón.
Para asegurarnos de que el elemento HUD no sólo es visible cuando nuestro vehículo está seleccionado, llamamos al menú contextual correspondiente manteniendo pulsado el botón derecho del ratón y seleccionamos la opción Siempre en el menú Mostrar.
Ahora puedes hacer clic en el botón de reproducción y utilizar el control deslizante para enviar el coche a través del terreno como desees. Asegúrate de reajustar la dirección al principio de cada trayecto para evitar que el coche se pase de velocidad.
Si quieres convertir la aventura en una animación más tarde, simplemente graba fotogramas clave para el valor de dirección respectivo en los puntos de control importantes. ¡Diviértete conduciendo por el terreno!