Emitter de Static-Mesh
Le Mesh emitter est différent de tous les autres emitters car il est le seul qui ne permet pas d'émettre des texture ou des particules selon tel ou tel plan, mais bel et bien des OBJETS sous forme de Static-Mesh.
Par conséquent, de nombreuses fonctions des emitters normaux ne sont pas utilisables sur le Mesh Emitter. De par sa polyvalence limitée, il est assez peu utilisé, mais vous pouvez en voir de bons exemplaires dans des maps d'assaut, comme par exemple l'explosion final à la fin de AS-FallenCity, où des bouts de barrières brisées s'envolent, mais surtout dans AS-RobotFactory, à travers des vitres où vous voyez défiler sur des tapis roulants, des pièces détachées de robots.
Le Mesh emitter tire surtout parti des propriétés destinées aux mouvements : les propriétés des onglets Velocity, acceleration etc. Les onglets se rapportant à la texture utilisée, par exemple, ne sont pas utiles et ne marchent pas.
Fonctionnement
Commencez par... Ajouter un emitter. A ce stade de la série sur les emitters, vous connaissez certainement le différence entre XEmitter et Emitter, je n'ai donc pas à vous préciser que vous devez utiliser le deuxième type, qui apparait en premier dans la liste des actors.
Ajoutez dans l'onglet "Emitter", un objet "Mesh Emitter". Ensuite, sélectionnez dans le Static Mesh Browser, le Static-Mesh que vous souhaitez voir émis. J'ai personnellement choisi le Static-Mesh "Head", du group "Xan_Parts" du package "Plutonic_Robot_SM".
Pour l'ajouter dans votre emitter comme objet à émettre, allez dans l'onglet "Mesh", cliquez sur le champ "StaticMesh", puis sur le bouton "util.". Votre Static-Mesh apparait. Son pivot est placé au centre de l'emitter, paramètre à prendre en compte si votre pivot est excentré :
Voyons maintenant les différentes propriétés de cet onglet "Mesh", propre au MeshEmitter :
- RenderTwoSided : pas d'effet.
- StaticMesh : Défini le Static Mesh qui est émis.
- UseMeshBlendMode : permet d'activer le mode d'affichage en transparence des Static-Meshes : lorsque deux Static-Meshes se chevauchent, les parties communes s'éclaircissent. Par défaut à faux, cette propriété permet d'éviter cet effet graphique immonde.
- UseParticleColor : permet de changer les couleurs des Static-Meshes en utilisant les propriétés de l'onglet "Color"
Pour commencer, notez que l'éclairage du Static-Mesh est dynamique : il change au fur et à mesure que la lumière autour de lui change. Par contre, il ne projette pas d'ombre, car cette ombre serait, elle, une lumière dynamique, non gérée par le moteur.
Comme pour toute particules, vous pouvez utiliser les onglets acceleration, Velocity, rotation et autre Revolution pour déplacer le Mesh émit. Malgré tout, le plus intéressant lorsque l'on utilise un Mesh Emitter est de jouer sur les collisions.
C'est donc dans l'onglet "Collision" que nous allons travailler. Notez d'ailleurs que tout ce qui va être dit ici s'applique également aux Sprites Emitters.
Collision Planes : devrait créer des plans invisibles de collision pour les particules, mais ne fonctionne pas.
Damping Factor Range : Lorsqu'une particule entre en contact avec le monde, elle rebondit. Par défaut, elle a un vitesse toujours égale tout au long de sa vie. Mais en ajustant les valeurs minimales et maximales des valeurs X, Y et Z, vous affectez la force du rebond. Par exemple, si vous mettez à Min et à Max de Z la valeur 0.5, la particule divisera la hauteur de son rebond à chaque impact. Si vous laissez à 1, la particule rebondira toujours aussi haut.
Extent Multiplier : étend la collision des particules par le facteur indiqué sur chaque axe. Peu utile pour un Mesh emitter vu qu'en général, les Static-Meshes ont une collision bien adaptée. Plus utile pour les sprites qui ne sont que des points blancs au milieu d'une grande zone noire transparente, car elle permet de se débarrasser de la collision de la partie noire de la texture, et donc d'avoir une collision réaliste.
MaxCollision : deux bornes (min et max) déterminent le nombre d'impact que peu subir la particule avant de disparaitre.
SpawnAmount : permet de déterminer le nombre de particules qui sont émises à chaque impact si SpawnFromOtherEmitter : est activé.
SpawnedVelocityScaleRange : Modificateur de vitesse et de direction applicables aux particules générées si SpawnFromOtherEmitter est activé.
SpawnFromOtherEmitter : Propriété très intéressante : elle permet d'activer un emitter au point d'impact des particules avec le décor. Vous pouvez ainsi faire jaillir des étincelles d'un spark emitter, là où un Mesh emitter envoie un morceau de métal contre le sol. Pour cela, il faut indiquer le numéro de l'emitter dans le champ qui apparait : -1 indique pas d'emitter à l'impact. Si vous possédez un actor qui comprend plusieurs emitters, ils sont numérotés :
Use Collision : Si mit à vrai, les particules sont sensibles au décor. Sinon, elles passent à travers.
Use Collision Planes : devrait activer les collision Planes si ceux-ci daignaient fonctionner.
Use Max Collision : active ou non la limite de collisions.
UseSpawnedVelocityScaled : permet d'activer ou de désactiver le facteur de vitesse des particules émises aux chocs, spécifié dans SpawnedVelocityScaleRange.
Pour nos besoins, le mieux est de commencer par mettre Usecollision sur Vrai. Ensuite, pour avoir des rebonds réalistes, mieux vaux mettre max = 0.6 et min=0.4 dans tous les axes de DampingFactorRange.
Pour l'instant, pas d'effet car vos particules n'ont pas de mouvement. Elles ne touchent donc rien. Pour changer cela, dans l'onglet Acceleration, il va falloir mettre -600 dans Z (pour obtenir un effet proche de la gravitée terrestre). Ensuite, dans l'onglet Velocity, mettez dans Start velocity Range Y=-400 max et -400 min, 200max et -200 min a X, ou toute autre valeur adaptée à votre scène. Baissez enfin la durée de vie de vos particules dans l'onglet Time en diminuant LifeTimeRange à 2 max et 2min :
Notez que les particules n'ont pas de collisions entre elles. Pour le reste, le Mesh emitter est en tout point semblable à un Sprite emitter. Vous ne devriez pas avoir de problèmes pour l'utiliser.