Connexion
Note: Il s'agit d'une traduction automatique, s'il vous plaît utilisez un langage clair, sans jargon.

La Construction De Votre Propre Générateur De Particules 3D

Dan Ebberts
Tutoriels :
La Construction De Votre Propre Générateur De Particules 3D
La construction de votre propre générateur de particules 3D
from CreativeCow.net's ''25 Cool Things about After Effects 5.5'' Series


Building Your Own 3D Particle Generator
Dan Ebberts Dan ebberts,
Sacramento, Californie, ETATS-UNIS

© 2003 par Dan ebberts et CreativeCow.net. Tous les droits sont réservés.

Article Orientation:
Dans ce tutoriel, Dan ebberts explore la façon dont vous pouvez utiliser des expressions en After Effects 5.5 à construire assez sophistiqué 3d générateur de particules. Nontre volonté de répondre aux particules de vitesse initiale, Gravité, Vent, Glisser, Et bien plus encore. L'utilisation de ce générateur de particules, Nonus verrons comment créer des explosions, Fumée, Un feu de souffle, Des chutes de neige, Et même un liquide comme le flux. Nonus allons étudier comment faire en sorte que chaque particule réutilisables, Ce qui nous permettra de simuler fontaine-like particle flux. Celui-ci est bien avancé.


Téléchargement de films Les dossiers de projet: .Sit Les dossiers de projet: .Zip

--- --- la base



L'idée de base est que nous allons importer une représentation graphique d'une seule particule. Nonus glisser dans nos sociétés et de la rendre 3d. Nonus allons appliquer notre simulation physique des particules à nos expressions et, ensuite, dupliquez ce calque assez de temps pour obtenir un résultat convaincant. Nonus allons fixer les expressions de façon à ce que chaque particule (layer) se comportent différemment. Nonus allons appliquer à de nombreuses expressions de la particule de propriétés, Y compris la PoSition, échelle, Opacité, Et de la rotation.

Nonus allons commencer avec une simple explosion et de développer des expressions plus complexes à partir de là,. Il finira par associer de très velues et des mathématiques en physique (désolé!), Mais la bonne nouvelle est que vous ne devez pas nécessairement à comprendre exactement comment les expressions de travail - vous avez juste besoin de savoir comment les modifier pour les amener à faire ce que vous voulez. Dans la première partie du tutoriel, Ce que je vais essayer de faire, Autant que possible, Est de couvrir l'essentiel de la manière dont les expressions de travail et comment vous les modifiez-les. Puis, Vers la fin, La stouthearted peut me suivre à travers les mathématiques et la physique hairy.


La stratégie --- ---


Nonus voulons que chacun de nos particules ont défini une durée de vie qui sera aléatoire dans une certaine gamme. Car nous allons appliquer des expressions à plusieurs propriétés de la particule, Nonus avons besoin d'une certaine façon de communiquer des informations sur les particules de la durée de vie de toutes les expressions qui en ont besoin. Nonus allons faire cela en effectuant les calculs de durée de vie dans une expression de contrôle (si vous voulez en savoir plus sur l'expression des contrôles, Voir mon tutoriel La construction de la plus grande du monde cameraman). Nonus allons utiliser l'expression comme un contrôle en lecture seule Variable globale Qui peut être accessible par toutes les autres expressions de particules appliquée à nos.


--- C 'est de commencer!---

Aller de l'avant projet et d'ouvrir le fichier, puis ouvrez le "explosion - de base" comp. Vous remarquerez une couche graphique appelé «flare star" et d'une couche null, Qui ont tous deux allumé 3d. Nonus allons utiliser la PoSition de l'null pour définir le centre de l'explosion. Nonus référer à la null que la particule "émetteur" et, plus tard, nous allons passer la null autour de donner "l'émetteur de vitesse" pour les particules. Sélectionnez l'option "star flare" et la couche de type "u" pour afficher tous les biens qui ont des expressions qui leur sont appliquées. Aussi taper ctrl + shift + t (pc) ou cmd + shift + t ( MAC ) Pour afficher les effets de la couche application. Vous verrez que «un point de contrôle a été appliqué et le nom" vie ". Vous mai se demander pourquoi nous avons un point de contrôle au lieu d'un curseur de contrôle de tenir la "vie" valeur. La raison en est que plus tard (lorsque nous avons à nouveau utilisable particules) nous allons avoir besoin de passer à la fois la «vie» et «naissance», nous avons donc besoin de temps un contrôle qui peut passer deux valeurs. Ne pourrions-nous pas simplement utiliser deux curseur contrôle? Non, Parce que les calculs de "naissance" et "vie" se faire au sein de la même expression pour le faire fonctionner. Dans le montâge-chronologique, Cliquez sur le twirly à côté de "point" pour révéler l'expression appliquée à la "vie" point de contrôle:

Lmin = 1.5 / / minimum des particules de vie
Lmax = 2.5 / / maximale des particules à la vie

Voird_random (1,True);
La vie = random (lmin,Lmax);
Naissance = 0;
[naissance,La vie]

Cette expression va générer un hasard "vie" de valeur pour nos particule est comprise entre 1.5 et 2.5 secondes. Cette valeur sera branché sur le deuxième élément de notre point de contrôle variable. Le premier élément ( "naissance") est fixé à zéro depuis la première explosion pour l'ensemble de nos comp particules sera né au temps zéro. Le "seed_random appel juste dit After Effects que nous voulons obtenir la même valeur aléatoire pour la "vie" à chaque fois que nous courons le expression (sinon, la "vie" valeur hop autour de chaque imâge, - qui ne fait pas Nonus aider Ici). Si vous voulez en savoir plus sur "seed_random", Voir mon tutoriel Générer au hasard Motion. Si vous voulez changer la durée de vie des particules, Vous suffit de modifier le "lmin" et "lmax« valeurs.

Cliquez sur le twirly prochain à mesure de révéler cette expression:

Vmin = 500; / / vitesse initiale minimum
Vmax = 700; / / vitesse initiale maximale

= effet de la naissance (la "vie").Param ( "point") [0];
= effet de la vie ( «la vie»).Param ( "point") [1];
Origine = this_comp.Couche ( "null 1").PoSition.Value_at_time (naissance);
âge = temps-naissance;
Voird_random (1,True);
S = random (vmin,Vmax); / / vitesse initiale
A = degrees_to_radians (random (180)) / / angle de la verticale
R = degrees_to_radians (random (360)) / / rotation autour de l'axe y.
X = s * math.Sin (a) * math.Cos (r);
Y =- s * math.Cos (a);
Z = s * math.Sin (a) * math.Sin (r);
V = [x,y,Z];
Origine + v * temps

Telle est la PoSition fondamentale de l'expression d'un "g zéro" explosion. Nons particules, va lancer une Direction aléatoire dans l'espace 3D à partir de l ' "origine" (qui est juste la PoSition de la couche null) avec une vitesse initiale comprise entre 500 et 700 unités (ce qui équivaut à près de pixels par seconde). La particule continuera à cette vitesse et la Direction jusqu'à ce qu'il meurt. Nonus n'avons pas encore pris en compte dans le vent, Gravité, Et faites glisser. Je suis sûr que vous avez remarqué les trois lignes qui utilisent les fonctions javascript déclenchement pour le calcul de la x, y, Et z de la particule de vecteur vitesse. Ce vecteur est généré par le hasard des valeurs de la vitesse ( "s"), Angle de lancement de la verticale ( "a") et de la rotation par rapport à l'axe des y comp's ( "r"). Ne vous inquiétez pas trop sur ce vecteur choses à ce point - comme je l'ai déjà dit, Vous n'avez pas à comprendre comment il fonctionne pour pouvoir l'utiliser et nous allons le couvrir en détail plus loin. La première chose que vous devez savoir sur cette version de la PoSition d'expression, c'est que vous devez éditer le "vmin" et "vmax" valeurs pour changer la vitesse initiale de la particule. Plus tard, nous allons ajouter une contrainte de l'angle de la verticale qui nous permettra de générer une source de type de pulvérisation.

Cliquez sur le petit twirly à côté de l'échelle de révéler l'expression:

Max_échelle = 50, / / maximum de l'échelle
S =.2 / / l'échelle de temps de rampe

= effet de la vie ( «la vie»).Param ( "point") [1];
Age = temps-effet (la "vie").Param ( "point") [0] / / = temps de l'âge de naissance
If (âge s) (
X = (âge / s) * Max_échelle;
[x,x,100]
) else (
[Max_échelle,Max_échelle,100]
}

Tous cette expression ne fait que la rampe d'échelle de 0 à la valeur spécifiée dans "Max_échelle" (50% dans ce cas) au cours de la période définie par le "s" (.2 secondes dans le cas présent). Si vous voulez que les particules atteignent la taille maximale de plus ou moins vite, Vous modifiez la valeur de "s". Nonter que cette valeur doit être inférieure à "lmin» de la «vie», expression si vous voulez être sûr que la particule atteint sa pleine taille, avant qu'il meurt.

Maintenant cliquez sur le côté de twirly z rotation et vous verrez cette expression:

Rmax = 1080 / / rotation maximale
Rmin =- 1080; / / rotation minimum

= effet de la naissance (la "vie").Param ( "point") [0];
Voird_random (1,True);
R = random (rmin,Rmax);
= effet de la vie ( «la vie»).Param ( "point") [1];
âge = temps-naissance;
If (vie == 0) (
0
) else (
R / vie * âge
}

Cette expression prend une valeur aléatoire (entre -1080 et 1080 degrés degrés) pour la rotation autour de l'axe z sur la vie de la particule. Nonter que cette expression utilise la "naissance" et "vie" des valeurs du point de contrôle. Nonte également l'utilisation de la "seed_random fonction de veiller à ce que la rotation aléatoire, sélectionnez la valeur reste la même à chaque fois l'expression est calculée. Si vous souhaitez changer la quantité de particules peut pivoter, Vous devez éditer le "rmax et rmin« valeurs.

Enfin, Cliquez sur le twirly à côté de l'opacité de révéler cette expression:

Decay =.75; / / particules fade-out
Max_Opacité = 100; / / maximum d'opacité

= effet de la vie ( «la vie»).Param ( "point") [1];
Age = temps-effet (la "vie").Param ( "point") [0];
If (âge vie) (
0
) else (
If (âge vie-decay) (
((âge de la vie) / decay) * Max_Opacité;
) else (
Max_Opacité
}
}

Cette expression gère le fade-out de la particule à la fin de sa vie. "Désintégration" est le temps, En quelques secondes, Que la durée de fondu. Vous modifiez cette valeur si vous avez voulu changer le fade-out. Cette valeur doit être inférieure à la "lmin" valeur de la "vie" de contrôle. "Max_Opacité" est, Comme vous vous en doutez, La valeur maximale de l'opacité que vous souhaitez la particule pour atteindre.

C'est tout pour les expressions de cette première explosion. Sélectionnez l'option "flare star" en double couche et d'un tas de fois. J'ai l'habitude de simplement appuyer sur la touche ctrl + d (pc) ou cmd + d ( MAC ) Quatre ou cinq fois, L'original et de sélectionner tous les doublons et puis appuyez sur la touche ctrl + d / cmd + da bande plusieurs fois pour générer au moins 50 particules. Un aperçu de la comp. Naturellement, Avec autant de couches, Chacune avec cinq expressions appliquées, Mai il prendre un peu de tout pour rendre la preview. Lorsque vous appliquez cette technique, Vous aurez à rendre l'équilibre du temps de ne pas utiliser suffisamment de particules pour créer un effet de convaincre les. Vous retrouver avec une belle explosion 3d où les particules juste souffle dans toutes les Directions sans forces agissant sur eux, sauf leur vitesse initiale.

--Zero-g explosion avec 65 particules


--- l 'obtenir physique ---


Maintenant, nous allons jeter dans la plus profonde de la piscine et d'ajouter les effets physiques du vent, Gravité, Glisser, émetteur de vitesse et de notre PoSition expression. Nonus allons ajouter tous les code maintenant, Mais nous ne seront pas nécessairement utiliser tous les nouveaux paramètres pour chaque exemple. Nonus irons à travers de nombreux exemples bien, Jusqu'à ce que nous avons couvert tout. Aller de l'avant et ouvrir la "explosion de la physique" comp. Sélectionnez l'une des «étoiles d'arrondi" des couches et le type "p" pour afficher la PoSition de propriété. Cliquez sur le twirly à côté de "PoSition" de révéler notre nouvelle expression qui englobe tous les physics. C'est le nouveau code:

G = 100 / / gravité
W = 0; / / vent
Wdir = 0; / / Direction du vent (0 = à gauche)
Vmin = 700; / / vitesse initiale minimum
Vmax = 1000 / / la vitesse initiale maximale
Amin = 0; / / minimum angle de lancement de la verticale
Amax = 110; / / maximum de l'angle de lancement vertical
D = 4, / / Glisser coeffecient

= effet de la naissance (la "vie").Param ( "point") [0];
= effet de la vie ( «la vie»).Param ( "point") [1];
Origine = this_comp.Couche ( "null 1").PoSition.Value_at_time (naissance);
âge = temps-naissance;
Voird_random (1,True);
S = random (vmin,Vmax); / / vitesse initiale
V_e = this_comp.Couche ( "null 1").PoSition.Velocity_at_time (naissance); / / émetteur de vitesse
A = degrees_to_radians (aléatoire (amin,Amax)) / / angle de la verticale
R = degrees_to_radians (random (360)) / / rotation autour de l'axe y.
X = s * math.Sin (a) * math.Cos (r);
Y =- s * math.Cos (a);
Z = s * math.Sin (a) * math.Sin (r);
V = [x,y,Z] + v_e;
New_speed = longueur (v);
Unit_v = normalize (v);

If (d 0) (
Delta_p = new_speed * (1-math.Exp (-d * âge)) / d;
) else (
Delta_p = âge * new_speed;
}
Delta_w = w * âge;
Delta_g = g * âge * âge / 2;

Wa = degrees_to_radians (wdir);

Origine delta_p * unit_v + + [delta_w * math.Cos (wa),0,Delta_w * math.Sin (wa)] + [0,Delta_g,0]

Comme vous pouvez le voir, Nonus avons ajouté du code de la gravité, Le vent (qui nous n'utilisons pas dans cet exemple), Angle de lancement, Glisser, Et l'émetteur de vitesse. Ne vous inquiétez pas encore comment tout cela fonctionne. Vous avez juste besoin de savoir que vous modifiez les sept premiers paramètres à modifier le comportement des particules. Toutes les autres expressions sont toujours les mêmes que dans le "explosion - de base" comp.

Aller de l'avant et un aperçu de la comp. Vous remarquerez que les particules de notre rencontre aujourd'hui la résistance de l'air (Glisser) et sont affectées par la gravité. Nonus avons également limité l'angle de lancement des particules comprise entre 0 et 110 degrés de la verticale.

- explosion de gravité (65 particules)


--- --- erreurs se produisent


Ouvrir et afficher un aperçu de l'explosion twinkle "comp. Il s'agit d'une version antérieure de l'explosion avec la physique "comp qui avait une erreur dans ce. Il s'avère que j'avais laissé à l'appel à la seed_random dans l'expression du point de contrôle. Le résultat est une erreur si l'opacité sur les tours et à l'extérieur de manière aléatoire après la particule de vie a expiré. Que cet effet est en fait assez cool, J'ai décidé de la maintenir autour de. Donc la "faute" est une "fonction". Voici l'erreur de code pour le point de contrôle:

Lmin = 1.5 / / minimum des particules de vie
Lmax = 2.5 / / maximale des particules à la vie

La vie = random (lmin,Lmax);
Naissance = 0;
[naissance,La vie]


Où il ya de fumée .....


Maintenant, nous allons tenter notre part, à créer la fumée d'y aller avec nos explosion. à partir de maintenant, Les choses tout à fait un peu plus facile. Pour obtenir différents effets de particules, Surtout maintenant, nous suffit de modifier les paramètres qui ont été mis en place au début de l'année les différentes expressions. Aller de l'avant et ouvrir la "fumée" comp. Tout ce que j'ai fait pour créer cette comp est de reproduire le "explosion de la physique" comp et remplacer le "flare star" imâge avec la "fumée" imâge. Puis j'ai fait de ces modifications des paramètres dans les expressions:

PoSition:

G = 10 / / gravité
W = 80; / / vent

échelle:

Max_échelle = 150; / / maximum de l'échelle

Z-rotation:

Rmax = 10 / / rotation maximale
Rmin =- 10; / / rotation minimum

Opacité:

Decay = 1.25; / / particules fade-out
Max_Opacité = 50, / / maximum d'opacité

J'ai également changé le mode de mélange de la couche de "normal" à "écran".

Les changements de paramètres de refléter la façon dont se comporte différemment de la fumée dans la réponse aux différentes forces physiques. L'effet de la gravité a été considérablement réduite. L'effet du vent a été considérablement augmenté. Le z-rotation est beaucoup moins. L'opacité de chaque particule ne pourra atteindre 50%. Vous arrivez à ces valeurs par la prise de deviner la façon dont les particules devraient réagir, Et ensuite de les modifier jusqu'à ce qu'elle ressemble à droite. Aller de l'avant et un aperçu de la comp. Nonus l'espérons, vous remarquez comment les changements de paramètres ont fait une grande différence dans le comportement des particules.

- de 40 particules de fumée

à ce stade, vous pourriez vous demander pourquoi nous ne faisons pas que mettre tous ces paramètres sur le curseur de contrôle. Nonus avons pu le faire et il serait certainement le plus facile à ajuster les paramètres. Le problème est que si vous le faites, Vous prenez un très gros hit rendre. Il pourrait être utile, Mais j'aime garder les choses le maigre et la moyenne, autant que possible,, Mais n'héSitez pas à l'essayer pour vous si vous le souhaitez.


--- l 'ajouter un peu de débris à la combinaison ---


Ouvrir et afficher un aperçu de la "débris" comp. Il s'agit juste d'une variation de l'explosion avec la physique "comp où j'ai changé la particule de" specs "et a changé la gravité à 80 et le vent à 80. Max_échelle a être fixé à 75 et l'expression de z-rotation a été modifié afin de sélectionner une juste orientation aléatoire entre 180 et -180 degrés. L'opacité d'expression a été désactivé, Laissant l'opacité à 100%.


--- mettre les pièces ensemble, ---


Ouvrir et afficher un aperçu de la "combo explosion comp". Cette comp le "twinkle explosion", "Fumée", Et de "débris" comps ainsi de démontrer comment les différents types de particules peuvent travailler ensemble pour créer un effet complexe. Remarquerez que les "transformations effondrement" d'interrupteurs ont été activés. Il en est ainsi que les particules des trois comps se mêlent bien dans l'espace 3D.


- combiner plusieurs pour créer des comPoSitions complexes effet


Born-again --- --- particules


Maintenant nous allons chercher à faire de notre particules réutilisables. Qui est, Meurt après une particule, Nonus voulons qu'elle renaisse avec différents attributs, Comme s'il s'agissait d'une nouvelle particule. Cela nous permettra de générer un flux continu de particules. Pour ce faire nous avons besoin de modifier l'expression de notre "vie" point de contrôle. Voici le nouveau code:

Lmin = 1.5 / / minimum des particules de vie
Lmax = 2.5 / / maximale des particules à la vie

I = 1;
Voird_random (I,True);
Delay = random (Lmax);
Naissance = retard;
= retard de mort;
If (temps retard) (
[0,0]
) else (
While (heure = mort) (
I + = 1;
Voird_random (I,True);
Naissance = mort;
La vie = random (lmin,Lmax);
+ = mort la vie;
}
[naissance,La vie]
}

Cette expression a été modifiée pour inclure une variation des expressions élaborées pour mon "générateurs aléatoires Motion "Tutorial. Il est une première, Délai aléatoire avant la création de la première incarnation de la particule. Ce délai sera compris entre 0 et le maximum de particules de la vie. Sinon, Tous les "première génération" des particules serait produite en même temps (comme dans une explosion), Qui n'est pas ce que nous voulons pour une fontaine de type d'effet. En général, Cette expression fonctionne en divisant la ligne de temps en random-length "segments" qui sont entre "lmin" et "lmax" dans la durée. Chaque segment représente une nouvelle durée de vie de la particule. Pour permettre la régénération de particules ont des attributs que l'original, La seed_random () demande à la PoSition et la rotation z-expressions a été changé à cette:

Voird_random (de la naissance,True);

Ce qui provoque la naissance de la particule de temps pour être utilisés comme semences, Qui se traduira, dans chaque "vie" de la particule est différent parce que la naissance sera toujours temps différents. Les autres changements qui ont été réalisés à cette comp est de changer le "amax" (maximum de l'angle de lancement vertical) des paramètres de l'expression à la PoSition 30, afin que toutes les particules sera lancé dans une Direction vers le haut. Aller de l'avant et ouvrir la "fontaine" comp et de le prévisualiser. Vous devriez maintenant voir un jet de particules. Nonter que cette compil contient 100 couches de particules. Si votre processeur chokes, Mai, vous souhaitez supprimer certaines couches et essayer à nouveau.

- fontaine de pulvérisation de 100 particules


--- retour à la physique ---


Quand nous avons ajouté le code de la PoSition d'expression, y compris des effets, Nonus avons ajouté une heure que nous n'avons pas encore regardé. Cet effet est la vitesse donnée par le "émetteur" pour les particules. à ce point nos émetteurs (null couches) ont tous été stationnaire. Il est logique que si nous passons notre émetteur à travers l'espace en 3D, Les particules qui sont émises devraient avoir une tendance à suivre l'émetteur jusqu'à ce que les effets de traînée, Gravité, Et le vent de les envoyer dans d'autres Directions. Puisque nous avons maintenant une fontaine de particules de pulvérisation dans notre arsenal, C'est un bon temps de se pencher sur la propriété de l'émetteur de vitesse. Ouvrir et afficher un aperçu de la notion de "émetteur 1" comp. Dans cette compil l'émetteur a été keyframed de se déplacer dans l'espace 3D et la vitesse de l'émetteur est transmise aux particules. J'ai parented un nouveau calque ( «spike blob") à la nulle de sorte que vous pouvez voir où l'émetteur est. Contraste, Ouvrir et afficher un aperçu de la notion de "émetteur 2" comp. C'est exactement la même comp, Mais le code qui ajoute à l'émetteur de vitesse a été désactivé. Vous remarquerez la différence.

- aller de l'émetteur avec la vitesse donnée à particules



- aller de l'émetteur de ne pas donnée à la vitesse des particules


--- --- d'autres particules de plaisir


Ok maintenant, nous sommes simplement à goofing autour de. Au cours des quatre dernières compétitions que nous allons voir ne sont que des variations sur un thème. Je ne vais pas aller dans beaucoup de détails sur ces, Mais je vous invite à examiner les expressions de chaque ordi pour voir comment les paramètres (et parfois le code) ont été modifiés afin de parvenir à un effet différent.

Ouvert et un aperçu de la "neige" comp. Il ya plusieurs choses à noter à propos de ce comp. Si vous regardez la PoSition de l'expression, Vous remarquerez que nous avons un nouveau paramètre de largeur de l'émetteur. Ce que nous faisons avec ce tour est essentiellement notre point émetteur en "ligne" émetteur. Dans ce cas, nous avons fixé la largeur de l'émetteur ( "ew") à 600. Quand une particule est né, Sa PoSition initiale est à plus ou moins la moitié de la largeur de l'émetteur (dans la Direction x) de la PoSition de l'null. Cela nous permet de produire de nouvelles particules, n'importe où le long de cette ligne. Une autre chose qui est différent à propos de cette comp est l'utilisation de plusieurs imâges de particules. J'ai eu l'ensemble des expressions mis en place pour une particule, Dupliqué trois fois et de les remplacer par des doubles avec un flocon de neige imâge. Alors j'ai choisi les quatre couches du flocon de neige et de les dupliquer un tas de fois.

- sur la neige avec de multiples imâges de particules

Ouvrir et afficher un aperçu de "feu de souffle" comp. Vent dans cette comp, Gravité, Et faites glisser ont été mis à zéro. Toutes les particules sont lancées dans la Direction z négatif (vers l'observateur). Celui-ci a encore besoin de quelques travaux, Mais il a du potentiel.

- incendie explosion

Maintenant ouvert et un aperçu de la "goop" comp. Il s'agit d'une tentative de générer un flux de liquide de type. Cette comp utilise la ligne de l'émetteur "concept de la" neige "et la comp" teinte "l'effet est utilisé pour faire de chaque particule de couleur un peu différente. Celui-ci est aussi un travail en cours.

- simulation de l'écoulement du liquide

Enfin, Ouvrir et afficher un aperçu de notre dernier exemple,, Les "anneaux" comp. Cette compil est similaire au "feu de souffle" en ce qu'il lance toutes ses particules dans la Direction z négatif. Cette compil est également un appareil photo qui est keyframed de passer d'un peu d'une vue de côté, à une première vue sur. J'ai inclus cette comp juste pour montrer que vous pouvez également utiliser ces expressions comme des générateurs de mouvement pour les objets que vous ne pourraient normalement pas de penser que "particules".

- générateur de sonnerie


L'aide de caméras --- ---


C'est probablement un bon endroit pour parler un peu plus sur l'utilisation de caméras à ce système de particules. Les particules sont produites dans AE C 'est un espace 3D, Si le déplacement d'un appareil photo autour de la particules peuvent vraiment ajouter un sens de la profondeur à vos animations. Si vous décidez d'utiliser une caméra en mouvement, Vous avez deux options utiles. Si vous ne faites rien, sauf tourner la caméra autour de l'émetteur, Finalement il deviendra évident que les particules se sont 2d. Cette mai-être l'effet que vous recherchez, Surtout si vous avez d'autres éléments disposés dans l'espace en 3D qui sont clairement des éléments 2d. L'autre option est d'avoir les particules toujours orientés vers la caméra. Vous faire par le biais de la couche menu: Couche transformer auto orienter "orienter vers la caméra". Selon les particules, Cela peut être une illusion convaincante que les particules se sont 3d. Expérience. Amusez-vous!


--- un mot sur les particules ---


L'efficacité de ces simulations dépend, En grande partie, Sur la qualité de l'utilisation de particules. Je vous encourâge à examiner ceux que j'ai utilisés dans ces exemples et de tenter votre chance pour faire vos propres et de les remplacer dans l'une des compétitions. Par exemple, Essayer de remplacer les flocons de neige avec des feuilles d'automne. Ou tout simplement inventer un étrange blob semi-transparent et voir ce que ça ressemble à de la fontaine comp. Expérience. Amusez-vous! également jouer avec les différents modes de fusion. Souvenez-vous que vous pouvez sélectionner tous vos particules, puis lorsque vous changez le mode d'un mélange, Tous les autres changements, ainsi.


--- un coup d'oeil final, sous le capot ---


Bien, Parmi les humbles, vous êtes libre de quitter maintenant. Comme promis, Je vais entrer dans la physique des particules motion d'expression un peu avant de nous emballer jusqu'à ce. Prenons un autre aspect, à un exemple typique de la PoSition d'expression, nous avons utilisé (nous allons utiliser l'une à partir de la notion de "émetteur 1" comp):

G = 100 / / gravité
W = 0; / / vent
Wdir = 0; / / Direction du vent (0 = à gauche)
Vmin = 500; / / vitesse initiale minimum
Vmax = 700; / / vitesse initiale maximale
Amin = 0; / / minimum angle de lancement de la verticale
Amax = 110; / / maximum de l'angle de lancement vertical
D = 4, / / coefficient de traînée

= effet de la naissance (la "vie").Param ( "point") [0];
= effet de la vie ( «la vie»).Param ( "point") [1];
Origine = this_comp.Couche ( "null 1").PoSition.Value_at_time (naissance);
âge = temps-naissance;
Voird_random (de la naissance,True);
S = random (vmin,Vmax); / / vitesse initiale
V_e = this_comp.Couche ( "null 1").PoSition.Velocity_at_time (naissance); / / émetteur de vitesse
A = degrees_to_radians (aléatoire (amin,Amax)) / / angle de la verticale
R = degrees_to_radians (random (360)) / / rotation autour de l'axe y.

X = s * math.Sin (a) * math.Cos (r);
Y =- s * math.Cos (a);
Z = s * math.Sin (a) * math.Sin (r);

V = [x,y,Z] + v_e;
New_speed = longueur (v);
Unit_v = normalize (v);

If (d 0) (
Delta_p = new_speed * (1-math.Exp (-d * âge)) / d;
) else (
Delta_p = âge * new_speed;
}
Delta_w = w * âge;
Delta_g = g * âge * âge / 2;

Wa = degrees_to_radians (wdir);

Origine delta_p * unit_v + + [delta_w * math.Cos (wa),0,Delta_w * math.Sin (wa)] + [0,Delta_g,0]


Je ne suis pas expert sur les systèmes de particules, Mais j'ai vu quelques exemples de code utilisé pour générer les. Celles que j'ai vu souvent faire des calculs fondés sur incrémentale combien les choses ont changé depuis le dernier cycle de calcul. De nombreuses informations sur chaque particule est stocké et mis à jour à chaque cycle de calcul. Dans un exemple simple, La PoSition actuelle, Direction, Vitesse, Couleur, âge, Et la durée de vie de la particule peut être sauvé. Le calcul porte sur ces valeurs, Ainsi que les forces agissant sur les particules et calcule où chacun doit être à la prochaine augmentation.

Nonus devons aborder les choses un peu différemment dans After Effects. Comme vous le savez mai, (surtout si vous avez lu mon "générateurs aléatoires Motion "Tutorial), il n'est pas facile de transmettre des informations d'un cycle (frame) d'un calcul à la prochaine. Variables ne survivent pas d'une imâge à l'autre. Que nous n'avons aucun moyen de stocker toutes les informations sur l'état de la particule à l'imâge précédente. Nonus avons besoin d'un plan différent. Nonus ne, Cependant, Avons quelques morceaux de l'information utile à notre disPoSition. Du point de contrôle, Nonus avons la particule de la naissance et la vie des valeurs. Puisque nous avons accès à l'heure actuelle, On peut calculer l'âge de la particule. En utilisant la déclaration suivante:, Nonus pouvons déterminer où des particules dans l'espace 3D est né:

Origine = this_comp.Couche ( "null 1").PoSition.Value_at_time (naissance);

De même,, La vitesse initiale de l'émetteur peut être obtenue à cette déclaration:

V_e = this_comp.Couche ( "null 1").PoSition.Velocity_at_time (naissance); / / émetteur de vitesse

Avis que «v_e" est un vecteur. Il a une ampleur et une Direction qui représente la vitesse de l'émetteur.

La vitesse initiale et angle de lancement de la particule sont déterminés par ces trois appels à la fonction aléatoire:

S = random (vmin,Vmax); / / vitesse initiale
A = degrees_to_radians (aléatoire (amin,Amax)) / / angle de la verticale
R = degrees_to_radians (random (360)) / / rotation autour de l'axe y.



De veiller à ce que nous avons toujours les mêmes valeurs aléatoires tout au long de la vie de la particule, Ces appels à la fonction aléatoire est précédée par l'appel suivant à la "seed_random" la fonction:

Voird_random (de la naissance,True);

Nonus utilisons des "seed_random" pour régler la semence du générateur de nombres aléatoires à la naissance de la particule. Ce nombre restera le même au cours de la vie de la particule, Que nous serons toujours en mesure de recréer la vitesse initiale et angle de lancement valeurs.

Armés de cette information, Un peu de trigonométrie, Et un peu de math vecteur, Nonus sommes prêts à lutter contre cette chose. Nontre plan est de calculer les conditions actuelles à base des conditions initiales et en combien de temps s'est écoulé depuis la particule est né, Qui devrait nous donner des résultats acceptables.

Ok notre premier calcul sera de transformer la vitesse et l'angle de lancement de la particule à un vecteur vitesse. Nonus le faisons par le calcul de l'individu x, y, Et z du vecteur en utilisant un peu de trigonométrie. Ce sont les déclarations de calculer x, y, Et z:

X = s * math.Sin (a) * math.Cos (r);
Y =- s * math.Cos (a);
Z = s * math.Sin (a) * math.Sin (r);

Vous aurez à prendre mon mot pour ce. J'ai essayé de trouver un chouette schéma pour montrer comment cela est dérivé, Mais il doit être indiqué dans l'espace 3D et la chose devient très encombré dans l'urgence. Si vous savez trig, Vous pouvez par le biais de muscle et de savoir ce qui se passe. De toute manière, Maintenant nous sommes prêts à allier la vitesse initiale du vecteur à l'émetteur initial du vecteur vitesse pour obtenir un composé vecteur vitesse. Voici le code:

V = [x,y,Z] + v_e;

Voir, Vecteur de mathématiques n'est pas trop effrayant (surtout depuis Adobe changé avec 5.5 afin de permettre l'utilisation de l'ordinaire de mathématiques opérateurs, "+" Dans ce cas).

Maintenant nous allons transformer ce nouveau vecteur d'une magnitude (speed) et une unité de valeur de vecteur (un vecteur unitaire est un vecteur de longueur 1):

New_speed = longueur (v);
Unit_v = normalize (v);

Ce que nous allons faire est de calculer l'impact de la Glisserue a eu sur les particules au cours de la vie de la particule à ce point. C'est probablement la plus délicate de calcul de l'ensemble du projet. Il s'avère que ce que nous avons à faire c'est de plier l'effet de faire glisser dans le calcul de la particule à la PoSition de l'actuel cadre. Nonus avons l'ampleur et la Direction de la particule en raison de la particule initiale de la vitesse et l'émetteur initial de la vitesse. Nonus savons que la résistance de l'air va agir pour ralentir la baisse des particules, Quelle que soit la particule est en mouvement. Si ce que nous avons à faire est d'intégrer (comme dans le calcul - sorry!) L'effet de la force de résistance dans le temps. Il en résulte l'équation suivante:

If (d 0) (
Delta_p = new_speed * (1-math.Exp (-d * âge)) / d;
) else (
Delta_p = âge * new_speed;
}

Le résultat de ce calcul ( "delta_p") est la PoSition actuelle de la particule, En ne tenant compte que la vitesse initiale des particules, émetteur de vitesse, Et l'effet de traînée. La Glisserue des actes de diminuer la vitesse de la particule à un rythme exponentiel.

Maintenant nous avons besoin pour calculer l'effet du vent. Celui-ci est plus facile. De la physique, nous nous souvenons que

Distance = vitesse * temps

Afin de calculer dans quelle mesure le vent a déplacé la particule depuis sa naissance, Nonus avons juste besoin de le faire:

Delta_w = w * âge;

La formule de l'effet de la gravité est un peu plus compliqué, Mais pas trop. De revenir à notre physique, Nonus nous rappelons que la distance de notre particule se déplace en raison de l'effet de la gravité est donné par la présente déclaration:

Delta_g = g * âge * âge / 2;


Maintenant tout ce que nous avons à faire est de combiner ces éléments. Nonus avons tous l'ampleur de la distance proposé par la particule en raison des forces. Il nous suffit maintenant de les transformer en vecteurs dans la Direction appropriée et ajoutez-les jusqu'à obtenir la PoSition finale du vecteur. Nonus savons que la gravité agit dans le sens vertical. Vent des actes dans le sens du paramètre "wdir". La composante due à la vitesse initiale des particules, émetteur de vitesse, Actes et faites-la glisser dans la Direction du vecteur unitaire que nous avons calculé précédemment. Alors voici l'étape finale qui combine tous les composants dans les Directions:

Origine delta_p * unit_v + + [delta_w * math.Cos (wa),0,Delta_w * math.Sin (wa)] + [0,Delta_g,0]

Ici vous pouvez voir que la particule vecteur de départ ( «origine») est combinée avec la distance déplacée en raison de la vitesse initiale / Glisserue (dans la Direction du vecteur unitaire), L'effet du vent sur le "x" et "z" de coordonnées, Et l'effet de la gravité dans le "y" en Direction de.

Bien, C'est tout! Toutes ces formules sont vraiment correct? Je ne sais pas. Ils semblent fonctionner assez bien utile pour générer des simulations. J'espère que vous aimerez jouer avec eux.


# # Dan ebberts

N'héSitez pas à discuter de cette technique dans le After Effects forum Ici à CreativeCow.



S'il vous plaît viSitez notre forum et à consulter d'autres articles CreativeCow.net Si vous avez trouvé cette pâge à partir d'un lien direct.


FORUMSTUTORIELSMAGAZINESERVICESVIDEOSACTUALITéSBLOGS


© CreativeCOW.net Tous les droits sont réservés.

Communautés créatives du monde

[Haut]

Englishالعربية中文FrançaisDeutschעבריתहिन्दीItaliano日本語PortuguêsРусскийEspañol