Création d'un système de porte autonome avec Xpresso dans Cinema 4D

Dans ce tutoriel, vous apprendrez à créer un système de porte autonome à l'aide du système Xpresso dans Cinema 4D. Ce didacticiel d’introduction vous apprendra les bases du système Xpresso et l’application de ses propres modules, et vous permettra ainsi d’adapter ces connaissances à toute autre idée créative..


Aperçu de l'effet final


Étape 1

Commençons par créer un sol et une sphère. Ce sont des formes très basiques que vous pouvez trouver dans les menus. Je vous suggère d'utiliser "l'objet de sol" plutôt que de créer un "objet plan", car l'objet de sol vous fournit une surface infiniment longue.


Étape 2

Créez maintenant une surface inclinée. Pensez simple: créez simplement un nouvel objet Box, rendez-le modifiable (touche de raccourci: touche C) et abaissez l'un des bords pour obtenir une rampe..


Étape 3

Assignez maintenant la balise "Rigid Body" aux trois objets: Floor, Sphere et Ramp.


Étape 4

Puisque le sol et la rampe agissent comme des objets fixes, vous devez désactiver leur dynamique. Pour ce faire, cliquez sur la balise "Rigid body" que vous avez précédemment assignée et réglez le paramètre susmentionné sur "Off"..


Étape 5

Créez maintenant un "objet Null", puis affectez-lui un "tag Xpresso".


Étape 6

Avant d’entrer dans Xpresso, nous devons créer les portes que nous contrôlerons. Créez donc un nouvel objet Box et modifiez-le à votre guise. Maintenant, en utilisant un objet Symmetry, dupliquez la porte. Alors, quand vous bougez un côté de la porte, disons à droite. L'autre côté se déplacera à gauche.


Étape 7

Maintenant, double-cliquez sur la balise Xpresso que vous avez attribuée auparavant. Vous verrez une fenêtre de l'éditeur Xpresso. Dans la colonne de gauche, il y a deux onglets X-Manager et X-Pool Aller à X-Pool, sous les "opérateurs de système", vous verrez "Xpresso", c'est ce que nous allons utiliser tout au long du tutoriel. Tous les modules sont listés dans les catégories appropriées.


Étape 8

Dans ce système Xpresso, la balle et les portes vont interagir de manière. Nous devons donc les intégrer à l'éditeur Xpresso. Pour ce faire, il suffit de glisser-déposer l'objet Sphère et, pour l'instant, l'une des portes (mais uniquement l'objet cube, pas la porte entière avec l'objet symétrie.)


Étape 9

Lorsque l'objet balle se rapproche de la porte, celle-ci s'ouvrira lentement. Pour ce faire, nous devons d’abord calculer la distance entre ces deux objets. Nous allons simplement utiliser le module "Distance" dans la catégorie "Calculer". Alors, trouvez-le et faites-le glisser dans la zone de travail.


Étape 10

Maintenant, il y a deux entrées et une sortie sur le module "Distance". Ce que nous devons faire, c'est fournir deux entrées. Celles-ci seront la position de l'objet sphère et de la porte. Pour obtenir ces informations à la fois de la sphère et de la porte, nous devons créer une sortie sur celles-ci..


Pour ce faire, cliquez simplement sur le coin rouge de l'objet sphère et activez la "position globale x". Comment décider de la coordonnée à utiliser pour la position globale (x, y ou z) dépend du pivot de coordonnée dans le viseur. En bas à gauche, il y a un petit pivot qui vous aide.


Étape 11

Nous avons donc les deux sorties des objets, nous devons maintenant acheminer ces informations vers le module de distance pour le calcul. Il vous suffit de cliquer sur le point rouge et de faire glisser tout en maintenant le bouton de la souris enfoncé jusqu'à atteindre le point d'entrée bleu, ce qui est assez intuitif..


Étape 12

Le mouvement de la porte sera déclenché en fonction de la distance entre la sphère et la porte. Donc, nous devons déterminer une certaine distance et chaque fois que la balle dépasse cette distance, la porte commence à s'ouvrir. Plus la balle se rapproche, plus la porte s'ouvre. Pour ce faire, nous devons utiliser le module "comparer" comme déclencheur. Encore une fois, nous avons deux entrées. Dans cet exemple, l'une des entrées proviendra de la mesure de distance et l'autre entrée sera prédéterminée par l'utilisateur..


Étape 13

Cliquez maintenant sur le module "Comparer" et passez à l'onglet Nœud du menu Attributs. Il existe une option appelée "Fonction". Celui-ci détermine les règles de comparaison. Puisque nous voulons que cela se déclenche quand une distance est violée, nous devons utiliser " <= " or " < " .


Le premier signifie "Moins ou égal" et le second "Moins". Choisissez celui que vous souhaitez, cela ne fait pas une énorme différence. Et sous l'onglet "Parameter", il y a "Input2" qui sera prédéterminé. Donc, ce sera la distance entre la sphère et la porte avant le déclenchement du module "comparer". Cela dépend de votre scène d'animation, j'ai utilisé "800"mais vous pouvez le changer quand vous le souhaitez, il vous suffit d'attribuer quelque chose 800.


Étape 14

Obtenez le module "Condition" de la catégorie "logique". Celui-ci a trois entrées; "Switch" sert à déclencher ce module. Si vous le saisissez avec "1"(ce qui signifie" vrai "en logique), il passera de" Input1 "à" Input2 ". Nous devons donc connecter la sortie du module" Compare "à l'entrée" Switch "du module" Condition ", ainsi, nous pouvons déclencher ce module chaque fois que la distance prédéterminée entre la sphère et la porte est violée, car le module "Comparer" émettra "1", ce qui signifie "vrai"..


Étape 15

Jusqu'ici tout va bien, maintenant nous devons déterminer les valeurs de "Input1" et "Input2" sur le module "Condition". Ces valeurs correspondent à la position de la porte sur "l'axe Z" (ici, il s'agit de "l'axe Z de ma scène", mais comme je l'ai déjà mentionné, cela dépend de la façon dont vous avez conçu votre scène. avant de déterminer sur quel axe vous souhaitez déplacer votre porte). La première entrée doit donc être la position initiale de la porte sur l'axe Z. La voici "124.935"pour moi. (L'axe que j'ai mentionné est visible sur la capture d'écran, le pivot vert, bleu et rouge du côté gauche.) Utilisez cette valeur pour la première entrée sous l'onglet de paramètre.


Étape 16

Maintenant, la partie délicate consiste à déterminer la deuxième entrée qui sera modifiée à mesure que la balle se rapprochera de la porte. Donc, cette valeur doit provenir de la distance entre la balle et la porte. Cependant, nous avons besoin d’une valeur croissante. Comme nous avons une valeur décroissante entre le ballon et la porte, nous devons le convertir.


Ici, le module que nous devons utiliser est le module "Invert". Ce module convertit les valeurs hautes en valeurs basses. Donc, à mesure que son entrée augmente, la sortie diminue. Obtenez-le de la catégorie "Calculer" puis connectez la sortie du module "Distance" à l'entrée du module "Inverser".


Étape 17

Si vous connectez un module "résultat" à la sortie du module "Inverser", vous verrez que la valeur obtenue est extrêmement basse. Donc, vous devez d’une certaine manière l’agrandir. Pour ce faire, dans la catégorie "calculer", vous devez utiliser le module "FloatMath: Ajouter".

Au début, cela ressemble à l'opérateur d'addition, mais vous pouvez modifier sa fonction et l'utiliser comme multiplicateur. Transformez-le en un multiplicateur puis connectez la sortie de "Invert" à l'entrée du module "FloatMath". Puis, comme "valeur flottante", entrez une valeur autour "50000". Encore une fois, vous pouvez l’ajuster à tout moment. Cette valeur correspond au nombre que vous multipliez les entrées du module" Inverser ". La sortie du module" Inverser "est trop faible pour que la multiplication par un grand nombre soit nécessaire. l'utiliser.


Étape 18

Nous allons maintenant faire face à un autre problème: la sortie du module "FloatMath" atteindra des valeurs élevées à un degré tel que la porte s’éloignera trop. Nous devons donc limiter cette sortie et déterminer les limites. Pour ce faire, ajoutez le module "Pince", qui se trouve dans la catégorie "Calculer", puis connectez la sortie de "FloatMath" à la partie "Valeur" du module "Pince"..

Nous devons maintenant déterminer les limites qui seront bloquées. Le Min. la valeur doit être la position initiale "axe Z" de la porte. C'était "124.935" et le Max. valeur est la position finale de la porte sur l'axe Z (j'ai utilisé "300 " pour le max.)


Étape 19

La sortie du module "Clamp" sera la deuxième entrée du module "Condition", qui correspond à la valeur changeante de 124.935 à 300.


Étape 20

À la fin, nous avons une valeur passant de 124,935 à 300 lorsque la balle se rapproche de 800 cm de l’objet de la porte. Nous devons maintenant utiliser cette sortie comme entrée dans la "position globale.z" de la porte. Pour ce faire, il suffit de faire glisser l'objet de la porte (là encore, l'objet Cube dans l'objet Symétrie, et non la porte dans son intégralité). le coin bleu gauche pour ajouter "Global Position. Z". Et connectez ensuite la sortie de "Condition" à la nouvelle entrée de l'objet door (appelée "cube.1" sur la capture d'écran).


Étape 21

L'aspect final de l'espace de travail est ci-dessous. Pour initialiser le système Xpresso, vous devez lancer le calcul Xpresso. Ce qui est également montré sur la capture d'écran. Jusqu'à présent, j'ai expliqué comment contrôler l'une des portes. Il suffit donc de dupliquer tout le système de nœuds et d'utiliser les nouveaux objets door (cube) pour contrôler les deux autres portes..