Pour vous faire une idée du résultat de ce tutoriel, il est préférable de regarder la vidéo associée.
Dans le fichier de travail PSD_C4D_R12_Dyn_Motor_Auto_Start.c4d, les éléments les plus importants de la scène sont déjà préparés, ce qui nous permet de commencer immédiatement à travailler avec la dynamique. Comme nous allons commencer par la construction du petit jouet, tous les éléments gênants de la scène sont temporairement masqués via les commutateurs de lumière du Gestionnaire d'objets.
Structure de la scène
Examinons brièvement la composition de la scène. En plus de la voiture, il y a aussi un objet sphérique qui servira d'obstacle plus tard, un objet HyperNURBS avec objet paysage intégré, ainsi que des sol, ciel et lumières pour l'environnement et l'éclairage de la scène.
Pour rendre la construction du véhicule aussi simple et compréhensible que possible, la voiture se compose uniquement de la carrosserie et des quatre roues. Les roues sont au total quatre objets de type tube, alignés dans la direction X positive et placés à leur emplacement prévu sur la voiture.
Pour faciliter l'ajout ultérieur des connecteurs et des moteurs, chaque roue est marquée de sa position comme abréviation (av = avant à gauche).
La carrosserie est générée par un objet Extrude NURBS à partir d'une spline. Vous pouvez bien sûr utiliser une autre voiture ou une autre carrosserie ; l'important est son intégration correcte ultérieurement via un connecteur ou une balise de corps dynamique.
Dans la boîte de dialogue des objets Extrude NURBS, la largeur de notre véhicule est spécifiée. Elle est déterminée par le déplacement en direction X lors de l'extrusion. Pour un look naturel et réaliste, les arrondis aux bords de la carrosserie sont essentiels.
Caché dans l'objet HyperNURBS se trouve un objet paysage qui nous fournit un terrain utilisable pour la séquence tout-terrain de la voiture. Grâce à la subdivision HyperNURBS, nous pouvons économiser lors de la segmentation du paysage sans aboutir à un terrain trop anguleux.
Pour ajouter un peu plus d'action pendant la course à travers le terrain, nous intégrons quelques obstacles. Dans mon cas, des objets sphériques simples avec un rayon de 50 cm, qui seront ensuite répartis de manière aléatoire sur le terrain ou dans l'objet paysage via MoGraph.
Construction du véhicule avec connecteurs et moteurs
Abordons en premier lieu le jouet auto. Quelles fonctions doit-il remplir pour nos besoins ?
Tout d'abord, les roues doivent être fixées de manière rotative au véhicule ; de plus, il a besoin d'une propulsion aux roues pour pouvoir se déplacer de manière autonome. Et il doit bien sûr détecter les collisions - cela commence déjà par le fait que les roues touchent le sol.
Pour fournir cette fonctionnalité à travers les nouvelles Dynamics de CINEMA 4D, les éléments concernés ont besoin de balises de corps dynamique pour être acceptés par le moteur Dynamics.
Nous commençons par les quatre roues, que nous sélectionnons toutes dans l'Gestionnaire d'objets et que nous définissons en tant que Rigid Body via le menu Simulation>Dynamics.
Comme les quatre roues reçoivent évidemment les mêmes propriétés dynamiques, nous laissons les quatre balises de corps dynamique sélectionnées et nous configurons les paramètres souhaités.
Sur la page des Dynamics, nous pouvons accepter les valeurs par défaut. Le déclenchement instantané est important pour que les roues soient en contact direct avec le sol.
Sur la page des collisions, nous aidons à la détection des collisions par Dynamics en définissant la forme en axe cylindrique X. Cela correspond finalement à la forme de la roue et améliore les performances lors du calcul des Dynamics. Pour que le véhicule ne saute que légèrement en cas de collision avec le sol, nous réglons une élasticité légère de 10%. En revanche, nous augmentons le frottement à 120%, pour que les roues puissent adhérer correctement au sol.
Passons à l'élément suivant du véhicule, la carrosserie. Malheureusement, l'objet Extrude NURBS ne convient pas en raison de son mauvais alignement des axes comme point de référence pour la carrosserie, nous laissons simplement le Null-Objet Auto supérieur intervenir. Son axe se trouve au centre de la voiture.
Nous attribuons alors à l'objet Null-Objekt Auto un Dynamics Body-Tag en tant que Rigid Body via le menu Simulation>Dynamics.
Dans la boîte de dialogue des Tags de corps dynamiques, nous permettons également que le déclenchement pour la voiture commence immédiatement.
Sur la page de collision, nous devons considérer la hiérarchie de notre véhicule afin que la carrosserie puisse être reconnue. Nous définissons la hiérarchie en Forme de collision composite et choisissons de préférence la coque convexe ou le maillage animé comme forme.
Les autres propriétés de collision peuvent rester telles quelles; après tout, le véhicule restera essentiellement sur les quatre roues et ne se renversera pas nécessairement.
Pour garantir que l'axe désiré est bien utilisé comme centre de gravité pour notre véhicule, nous devons passer brièvement à la page de masse.
Ici, nous activons l'option de centre de masse personnalisé - cependant, comme nous ne voulons pas nous écarter de l'axe défini, les valeurs de décalage X, Y et Z restent à 0.
Si nous devions maintenant démarrer l'animation, notre véhicule s'effondrerait simplement. Ce n'est pas surprenant, car nous avons simplement défini cinq corps dynamiques, sans que CINEMA 4D ne connaisse (encore) les connexions structurelles.
Nous changeons cela maintenant avec les connecteurs. Avec eux, nous fixons d'une part les roues au véhicule, permettons d'autre part la rotation autour de l'axe de la roue, et réalisons en même temps une suspension de roue acceptable pour parcourir le terrain.
Allons chercher le premier connecteur dans le menu Simulation>Dynamique.
Chaque roue reçoit son propre connecteur. Nous commençons par la roue avant gauche et renommons le connecteur nouvellement créé de manière appropriée. Pour que le connecteur prenne la position de la roue, nous activons l'outil Prendre en charge dans le menu Fonctions et glissons la roue avant gauche dans le champ Objet pour la prise en charge.
Après avoir cliqué sur le bouton d'attribution, le connecteur se trouve à la même position que la roue prédéfinie.
De la même manière, nous créons le connecteur suivant; cette fois pour la roue avant droite. Nous attribuons également la position de la roue respective au connecteur via la commande Prendre en charge.
Avant de continuer avec les roues arrière, nous alignons correctement les connecteurs sur les roues avant. Pour cela, nous sélectionnons le connecteur et le tournons à l'extérieur en utilisant L'angle de direction dans le Gestionnaire des attributs avec la pièce en charnière jaune. Pour la roue avant droite, un angle de 90° est approprié, et pour la roue avant gauche un angle de -90°.
En suivant le même processus, vous pouvez maintenant équiper les deux roues arrière de connecteurs à la bonne position et les ajuster avec la rotation correcte. L'image ci-dessous montre les quatre connecteurs placés depuis une vue du dessus.
Pour que les connecteurs restent visibles même lorsqu'ils ne sont pas sélectionnés, activez simplement l'option Toujours visible dans la page de visualisation de la boîte de dialogue de paramètres du connecteur. Réduisez la taille des connecteurs pour qu'ils s'adaptent mieux au véhicule.
Il est temps maintenant de déterminer enfin la fonction correcte des connecteurs; après tout, nous voulons des essieux suspendus et non des charnières sur la voiture. Cela se fait sur la page d'objet, où nous définissons le type de suspension de roue pour les quatre connecteurs.
Nous laissons encore les quatre connecteurs sélectionnés, car nous pouvons également effectuer les prochains réglages pour les quatre suspensions de roue. Comme premier objet pour la liaison des connecteurs, nous glissons l'objet null Auto en tant qu'objet A dans le champ prévu à cet effet.
Pour la dureté de la suspension, nous choisissons la valeur 20, pour l'amortissement de la suspension, c'est-à-dire la vitesse à laquelle la suspension se réajuste, nous prenons une valeur de 20 %.
Nous activons la limite inférieure et supérieure dans la direction Y, avec un décalage de 20 cm chacune. Il est peu probable que notre véhicule atteigne ces limites, mais la scène en sera d'autant plus claire.
Maintenant, occupons-nous des connecteurs individuels ou des suspensions de roue. L'unique ajustement que nous devons encore faire pour chaque connecteur est le deuxième objet pour la liaison. Pour cela, nous glissons la roue correspondante au connecteur dans le champ Objet B correspondant.
Une fois que nous avons configuré les quatre connecteurs ou suspensions de roues, nous les intégrons également dans la hiérarchie des objets du véhicule. Nous les plaçons près des roues en tant que sous-objet dans l'objet nul "Voiture".
Il ne manque plus qu'une chose à notre voiture-jouet, à savoir la propulsion, pour qu'elle puisse se déplacer automatiquement. Un entraînement intégral serait souhaitable pour le terrain, mais dans notre exemple, seules les deux roues avant seront entraînées par des moteurs. Deux moteurs sont nécessaires pour que la transmission de puissance aux roues individuelles se fasse de manière plus physique correcte.
Nous installons le premier moteur dans la scène via le menu Simulation>Dynamique.
De manière analogue aux connecteurs, nous rebaptisons également le moteur pour correspondre à la roue entraînée. Ici, le moteur doit entraîner la roue avant gauche.
En utilisant l'outil d'adoption du menu Fonctions, nous transférons la position de la roue au moteur. Après avoir cliqué sur le bouton d'attribution, le moteur est placé à l'endroit désiré et il ne reste plus qu'à l'orienter.
Nous effectuons cette opération via le Gestionnaire d'attributs dans la page des coordonnées. Nous tournons le moteur avec un angle de rotation de 90°, de sorte que le sens de rotation jaune corresponde à la direction de rotation de la roue.
Le moteur est lié par les champs d'objet dans sa boîte de dialogue de réglage. Dans notre cas, nous plaçons la roue avant gauche dans le champ Objet A. Pour la propulsion, nous donnons au moteur une vitesse angulaire cible de 400° et un couple de 50.
De la même manière, nous installons maintenant un autre moteur pour entraîner la roue avant droite. Nous le renommons de manière appropriée et transférons à nouveau la position de la roue correspondante au moteur à l'aide de l'outil d'adoption.
Nous tournons également le deuxième moteur avec le Gestionnaire d'attributs dans la bonne direction de rotation et transmettons cette fois la roue avant droite en tant qu'Objet A.
Le deuxième moteur reçoit bien entendu les mêmes paramètres pour la vitesse angulaire cible et le couple.
Ainsi, la propulsion est maintenant correctement intégrée dans le véhicule. Je recommande d'inclure les moteurs en tant que sous-objet dans la hiérarchie d'objets du véhicule afin que l'éditeur reste clair pendant la simulation.
Avant de pouvoir enfin faire rouler notre voiture, nous avons besoin d'une surface portante, car jusqu'à présent, la voiture-jouet tomberait dans le vide. Pour notre premier test et comme plate-forme pour plus tard, nous transformons le sol en un objet de collision. Pour ce faire, nous sélectionnons l'objet sol et lui attribuons via le menu Simulation>Dynamique la balise de corps dynamique correspondante.
Comme c'est habituel pour un objet de collision pur, le dialogue de réglage est assez simple. Ce qui nous intéresse principalement, c'est le coefficient de friction. Nous l'augmentons à 100% pour que les roues accrochent rapidement et puissent accélérer correctement.
En appuyant sur le bouton de lecture maintenant, la voiture-jouet démarre déjà toute seule. Plus tard, nous équiperons la voiture d'une petite commande; pour l'instant, concentrons-nous sur le terrain.
Expansion de la scène avec des éléments dynamiques et MoGraph
Jusqu'à présent invisible car désactivé en tant qu'objet paramétrique via le Gestionnaire d'objets, l'objet de paysage doit maintenant être utilisé comme terrain vallonné. Tout comme pour l'objet sol, nous devons d'abord définir le terrain comme objet de collision. Nous attribuons à l'objet HyperNURBS parent via le menu Simulation>Dynamique une balise de corps dynamique comme objet de collision.
Également pour cet objet de collision, la page de collision du dialogue de réglage est particulièrement importante. Nous avons besoin du maillage statique comme forme de collision afin que la voiture puisse ensuite reconnaître chaque bosse sur la surface. De même que pour l'objet sol, nous attribuons également ici le coefficient de friction élevé de 100%.
Testons dès maintenant comment notre voiture se débrouille dans le terrain. Pour ce faire, nous déplacerons d'abord l'intégralité du groupe de voitures sur l'axe Z dans le Gestionnaire d'attributs à 3000 cm. Ainsi, la voiture est prête dans la direction de déplacement et peut prendre de l'élan pour atteindre le terrain.
Après avoir cliqué sur le bouton de lecture, nous pouvons voir notre voiture miniature progresser vaillamment à travers le paysage vallonné. Pour donner un peu plus de caractère à la scène, nous ajoutons des obstacles supplémentaires.
La base de départ pour nos obstacles est déjà sous forme d'un objet sphérique. Afin que les sphères clonées ne gênent pas seulement la voiture mais soient également repoussées, nous devons les définir comme un corps rigide. En principe, il est indifférent de savoir si la sphère elle-même ou l'objet clone reçoit la balise de corps dynamique. Vous êtes plus flexible avec la première option, car vous pouvez ainsi attribuer des propriétés dynamiques propres à chaque type de clone.
Attribuons donc à l'objet sphérique la balise de corps dynamique nécessaire en tant que corps rigide; nous la trouvons comme d'habitude dans le menu Simulation>Dynamics.
Dans la boîte de dialogue des balises de corps dynamique pour la sphère, nous réglons sur la page Dynamics Déclencher sur En cas de collision. Ainsi, les sphères ne se mettent pas en mouvement indésiré, mais réagissent seulement lorsque la voiture ou une autre sphère provoque une collision.
En raison de la forme d'objet simple, nous faisons confiance à la détection automatique des collisions; un frottement accru de 80% maintient les sphères principalement au sol, leur permettant de rouler sur le terrain sans sauter indésirément.
Maintenant que la sphère est dotée de propriétés dynamiques, nous pouvons la répartir sur le terrain. Pour ce faire, nous utilisons un objet clone dans le menu MoGraph.
À travers le Gestionnaire d'objets, nous assignons l'objet sphérique à l'objet clone en tant que clone. Comme nous utilisons une sphère paramétrique qui utilise le centre de la sphère comme point de référence, placer les clones de sphères signifierait actuellement que tous les clones sont enfoncés de moitié dans le sol.
Pour empêcher cela et déplacer les sphères vers le haut en fonction du rayon, nous trouvons sur la page Transformation de la boîte de dialogue des paramètres la possibilité de définir un décalage. Nous déplaçons les sphères dans la direction Z de 50 cm, c'est-à-dire le rayon de la sphère.
Les paramètres réels de duplication et de distribution des clones se font sur la page d'objet de la boîte de dialogue des paramètres.
Nous choisissons d'abord le mode Objet; nous voulons en effet utiliser l'objet de paysage pour la distribution des clones. Ensuite, nous glissons l'objet de paysage mentionné dans le champ prévu à cet effet Objet.
La distribution des clones doit se faire à la surface de l'objet, vous pouvez bien sûr décider du nombre. Pour que la voiture n'ait pas à dégager inutilement de nombreuses sphères de son chemin, un nombre maximal de 80 serait recommandé.
Dans l'image ci-dessous, vous pouvez voir l'état actuel du rendu. Les sphères ont été correctement réparties sur l'objet paysage, mais elles pointent toutes dans la même direction. Ce petit problème est rapidement résolu avec un effecteur aléatoire.
Afin d'attribuer l'effet aléatoire à l'objet clone dès son intégration dans la scène, sélectionnons d'abord l'objet clone dans le Gestionnaire d'objets, puis prenons l' effecteur aléatoire dans le menu MoGraph>Effecteurs.
Dans la boîte de dialogue de l'effecteur, sur la page Paramètres, nous trouvons les paramètres de transformation. Comme les sphères doivent simplement être tournées sur tous les axes, seuls des paramètres d'angle modifiés sont nécessaires. Un angle de 90° sur chaque axe est suffisant pour offrir suffisamment de variété dans les rotations.
Un rendu de test montre que les sphères, grâce à l'effet aléatoire, sont désormais réparties de manière totalement aléatoire sur le paysage.
Il est grand temps de lâcher notre voiture jouet sur les obstacles. Comme nous devons nous attendre à plus de collisions à l'avenir, il est conseillé, en fonction de la taille ou de l'échelle des obstacles, de jeter un œil aux réglages Dynamics dans les préférences de document.
Étant donné que la taille des billes, des roues et même de la voiture jouet est très proche de l'échelle prédéfinie et s'entend bien avec la tolérance aux collisions, aucune adaptation n'est nécessaire dans mon exemple ici.
Pour éviter que la voiture jouet ne disparaisse du champ de vision peu de temps après le départ, vous trouverez, parmi les éléments de scène du Gestionnaire d'objets, une caméra cible qui s'aligne automatiquement sur la voiture. Son expression d'alignement stipule qu'elle ne doit pas perdre de vue l'objet voiture.
Activez-la en cliquant sur le symbole de viseur blanc dans le Gestionnaire d'objets.
Vous pouvez maintenant appuyer sur le bouton de lecture et observer la voiture se déplacer à travers le terrain parsemé d'obstacles.
Intégration d'un contrôle simple pour la voiture avec XPresso
Il serait préférable que la voiture ne se contente pas de rouler droit à travers le terrain, mais que nous, en tant qu'utilisateurs, ayons également la possibilité de la contrôler.
Pour notre exemple, une simple possibilité de direction vers la gauche ou la droite à l'aide d'un curseur suffira. Comme nous devrions en fait contrôler deux objets (les roues ou les connecteurs), mais que nous voulons n'avoir qu'un seul curseur confortable, intégrons notre propre paramètre de contrôle sous forme de données utilisateur.
Sélectionnez le Groupe de voitures et ajoutez vos propres données utilisateur via le menu Utilisateur dans le Gestionnaire d'attributs.
La fenêtre Gérer les données utilisateur s'ouvre. Vous y trouverez toutes les données utilisateur individuelles liées à l'objet porteur. Renommez la nouvelle entrée en Direction et précisez, via le champ Propriétés, la nature du paramètre.
Choisissez un Curseur à virgule flottante en unité de degrés comme interface. Pour une facilité d'utilisation, optez pour un pas de 1°. Pour éviter que les roues ne soient trop pivotées et ne se chevauchent avec le véhicule, limitez l'angle minimal à -30° et l'angle maximal à 30°. La valeur par défaut de 0° garantit que les roues sont droites au départ.
Après avoir fermé le dialogue avec OK et que les données utilisateur ont été créées, vous trouverez dans la page des données utilisateur de votre voiture le paramètre Direction créé par vos soins, sous forme de curseur, comme souhaité.
Nous avons donc créé une possibilité de contrôler un paramètre personnalisé. Il ne nous reste plus qu'à le transmettre au bon endroit dans notre assemblage de véhicule.
Un défi parfait pour XPresso. Pour cela, nous avons besoin en premier lieu d'une balise XPresso, que nous pouvons assigner le plus facilement via le menu contextuel avec le clic droit dans le sous-menu Tags CINEMA 4D.
Notre Groupe de voitures est bien sûr le support idéal pour cette expression.
En double-cliquant sur la balise XPresso, ouvrez l'Éditeur XPresso. Pour le premier élément ou nœud, nous faisons glisser le Null-Objet Auto du Gestionnaire d'objets dans la fenêtre de l'Éditeur XPresso.
Pour mettre notre paramètre personnalisé à disposition en tant que port pour la liaison, cliquez sur le bouton rouge des sorties et sélectionnez le Port de direction dans le sous-menu Données utilisateur.
Avec notre paramètre de direction, nous souhaitons influencer les angles de direction des connecteurs de suspension du pneu. Pour accéder à ces paramètres dans l'Éditeur XPresso, cherchez les deux connecteurs de la roue avant gauche et droite dans le Gestionnaire d'objets et faites glisser les deux objets dans l'Éditeur XPresso.
Comme nous voulons transmettre une valeur aux deux connecteurs, nous avons besoin des paramètres d'angle de direction à l'entrée. Pour cela, cliquez sur le bouton bleu des entrées des nœuds de connecteurs et choisissez les ports Angle de direction dans le sous-menu Propriétés de l'objet.
Il ne reste plus qu'à connecter les deux ports d'angle de direction au port de direction de la voiture. Pour ce faire, il suffit de faire glisser simplement d'un port à l'autre en maintenant le bouton de la souris enfoncé.
Notre petite excursion dans XPresso est malheureusement terminée, donc nous pouvons fermer l'Éditeur XPresso. Afin de ne pas avoir à chercher constamment l'objet nul et son entrée de données utilisateur pour contrôler la voiture, nous intégrons simplement le contrôle du curseur dans le Head-Up Display (HUD) de la fenêtre de l'éditeur.
Pour ce faire, nous cliquons avec le bouton droit de la souris sur l'entrée de paramètre direction dans le Gestionnaire d'attributs et sélectionnons dans le menu contextuel la commande Ajouter au HUD.
Pour déplacer l'entrée HUD dans l'éditeur, il vous suffit de cliquer en maintenant enfoncée la touche (Ctrl) sur l'élément HUD et de le positionner avec la souris à un endroit approprié.
Pour que l'élément HUD ne soit pas visible uniquement lorsque notre véhicule est sélectionné, nous appelons le menu contextuel correspondant en maintenant le bouton droit de la souris enfoncé et sélectionnons dans le menu Afficher l'option Toujours.
Maintenant, vous pouvez cliquer sur le bouton de lecture et envoyer la voiture à travers le terrain à l'aide du curseur selon vos souhaits. Assurez-vous de remettre la direction à zéro au début de chaque trajet pour éviter que la voiture ne dérape.
Celui qui souhaite rendre le voyage aventureux en une animation ultérieurement, enregistre simplement des Keyframes aux points de contrôle importants pour la valeur de direction respective. Amusez-vous bien à parcourir le terrain de façon sinueuse!