Aller au contenu principal

Particules FreeMinecraftModels

FreeMinecraftModels joue les images clés de particules des animations Blockbench d'un modèle. Cela couvre les entités personnalisées, les props et les objets tenus. Les joueurs Java voient les particules sous forme de sprites envoyés uniquement par paquets, que FMM simule sur le serveur. Les joueurs Bedrock reçoivent l'effet Snowstorm d'origine, dessiné par leur propre client.

Pour les noms d'animations et les règles de lecture, voir Animations. Pour les locators et le reste des règles d'import, voir les Notes sur la création de modèles.

Création dans Blockbench​

  1. Créez l'effet dans l'éditeur de particules de Blockbench (Snowstorm) et enregistrez-le comme fichier de particules .json.
  2. Ajoutez au modèle un locator à l'endroit d'où l'effet doit partir. Un locator placé dans un os suit l'animation de cet os : un locator sur un bras qui tourne laisse donc une traînée le long de la trajectoire du bras.
  3. Dans une animation, ouvrez l'animateur Effects et ajoutez une image clé particle. Indiquez le nom de l'effet, le locator et le fichier de particules. Le champ de script facultatif s'exécute en Molang avant le démarrage de l'effet, par exemple v.size = 2;.
  4. Placez le fichier de particules et la texture PNG associée à côté du .bbmodel (ou dans un dossier particles/ voisin) et distribuez-les avec le modèle.

Une image clé sans locator est jouée à l'origine du modèle. Une image clé qui désigne un locator absent du modèle est elle aussi jouée à l'origine et consigne un avertissement.

Où FMM trouve les fichiers de particules​

Blockbench n'enregistre que le chemin local du fichier de particules sur la machine de l'auteur : FMM effectue donc la recherche par nom de fichier. Pour chaque effet, il essaie dans cet ordre, d'abord dans le dossier du modèle puis dans un dossier particles/ voisin :

  1. Le nom de fichier enregistré dans l'image clé
  2. <effect>.particle.json
  3. <effect>.json

Un .json qui n'est pas un fichier de particules (par exemple un modèle d'affichage portant le même nom que l'effet) est ignoré. Si rien n'est trouvé, la console affiche Particle effect '<effect>' used by animation '<animation>' in <model> was not found, les images clés concernées sont abandonnées et le reste du modèle se charge normalement.

Textures​

Le basic_render_parameters.texture du fichier de particules est recherché d'après le dernier segment de son chemin : avec textures/particle/spark, FMM cherche spark.png, d'abord à côté du fichier de particules, puis à côté du modèle, puis dans le dossier particles/ du modèle.

Si le PNG est absent, les joueurs Java voient de simples sprites blancs teintés par la couleur de l'effet, et la console affiche un avertissement. Bedrock conserve le chemin de texture d'origine : une texture Bedrock vanilla comme textures/blocks/wool_colored_white y fonctionne donc toujours. Fournissez un PNG sous le nom correspondant pour obtenir le même rendu sur Java.

Quand les effets sont joués​

  • Un effet démarre lorsque son animation atteint l'image clé. Dans une animation en boucle, l'image clé se déclenche de nouveau à chaque boucle et son émetteur redémarre.
  • Lorsque l'animation s'arrête ou change, les émetteurs en boucle cessent de créer des particules. Les particules déjà en l'air vont au bout de leur durée de vie.
  • Les émetteurs se mettent en pause tant qu'aucun joueur Java ne peut voir le modèle. filmicMode garde chaque modèle chargé visible, et donc aussi ses particules actives.
  • La suppression d'un modèle retire immédiatement ses émetteurs et tous ses sprites de particules. Cela inclut la mort, la disparition, le déchargement du chunk et /fmm deleteall.

Props​

Un prop ne joue de lui-même que idle. Placez les images clés de particules dans idle, ou jouez l'animation qui les contient depuis un script Lua de prop :

context.prop:play_animation("sparkle", true, true)

Objets tenus​

Les particules sont aussi jouées sur les objets personnalisés FMM, c'est-à-dire les objets donnés avec /fmm giveitem ou le menu d'administration. Le modèle de l'objet doit comporter des images clés de particules. FMM lit les transformations thirdperson_righthand et thirdperson_lefthand de son modèle d'affichage (le .json voisin) pour savoir où se trouve l'objet dans la main. Sans modèle d'affichage, Java place les particules comme si l'objet n'avait aucune transformation d'affichage, et Bedrock n'affiche aucune particule sur l'objet tenu.

  • FMM joue en boucle l'animation held du modèle tant que l'objet est dans l'une ou l'autre main. En l'absence d'une animation held comportant des images clés de particules, il utilise la première animation, par ordre de nom, qui en contient.
  • Les os ne s'animent pas sur un objet tenu. Les locators restent à leur position de repos sur l'objet.
  • Java : le serveur ne peut pas savoir si un joueur est en vue à la première personne, à la troisième personne ou en caméra frontale. FMM place les particules à l'extrémité de l'objet dans la pose à la troisième personne, à partir de la rotation du corps du porteur, de son accroupissement, de la main qui tient l'objet, de son attribut scale et des transformations du modèle d'affichage. Tous les joueurs Java, porteur compris, les voient à cette seule position. À la première personne, le porteur les voit à l'emplacement de sa main en vue à la troisième personne, et non sur l'objet affiché à la première personne. Les mouvements de bras et les poses d'utilisation d'objet ne sont pas suivis : les particules peuvent donc traîner légèrement derrière l'objet pendant que le bras bouge. Les joueurs Java à moins de 48 blocs du porteur voient les particules.
  • Bedrock : les particules sont ajoutées à l'attachable Bedrock de l'objet, et le client Bedrock les dessine sur la vraie main dans toutes les vues de caméra. Cela nécessite la conversion Bedrock de ResourcePackManager.

Rendu Java​

  • Chaque particule est une entité envoyée par paquets de type item_display. Elle n'existe jamais dans le monde : les autres plugins ne peuvent donc ni la toucher, ni l'enregistrer, ni la supprimer.
  • FMM déplace les particules tous les 2 ticks, et le client lisse le mouvement entre deux mises à jour.
  • Les expressions UV sont échantillonnées au chargement en 16 variantes de texture au maximum par effet, et chaque image flipbook de chaque variante devient son propre sprite. Ces sprites sont placés dans le resource pack sous assets/freeminecraftmodels/items/particle/<model>/<effect>/, avec leur texture dans textures/entity/fmm_particles/<model>/<effect>.png. FMM écrit aussi assets/freeminecraftmodels/rspm_item_java_only/particle/<model>/<effect>.json, qui indique à ResourcePackManager de ne pas transformer les objets sprites en objets personnalisés Bedrock.
  • Les particules s'affichent en pleine luminosité, sauf si l'effet comporte minecraft:particle_appearance_lighting.
  • Un même effet sur un même modèle affiche au plus maxParticlesPerEmitter particules, ou le max_particles propre au fichier lorsqu'il est inférieur. Un même joueur Java voit au plus maxParticlesPerViewer particules, tous modèles confondus. Au-delà de cette limite, les nouvelles particules destinées à ce joueur sont ignorées jusqu'à l'expiration des plus anciennes.
  • particleEffectsEnabled: false désactive tous les effets sans modifier les modèles.

Composants pris en charge par Java​

ComposantPrise en charge Java
emitter_rate_instant, emitter_rate_steadyComplète
emitter_lifetime_once, emitter_lifetime_looping, emitter_lifetime_expressionComplète
emitter_initializationExpressions de création et de mise à jour
emitter_local_spacePosition et rotation
emitter_shape_point, _sphere, _box, _disc, _customDécalage, rayon, demi-dimensions, normale du plan, surface_only, et direction outwards, inwards ou personnalisée
particle_initializationExpressions de mise à jour et de rendu
particle_initial_speed, particle_initial_spinComplète
particle_motion_dynamicAccélération et traînée linéaires, accélération et traînée de rotation
particle_lifetime_expressionmax_lifetime et expiration_expression
particle_appearance_billboardTaille, mode d'orientation, direction et UV, flipbooks compris
particle_appearance_tintingCouleurs fixes, expressions par canal et dégradés
particle_appearance_lightingDésactive la pleine luminosité par défaut

Les autres composants sont ignorés sur Java, par exemple particle_motion_parametric, particle_motion_collision, emitter_rate_manual et emitter_shape_entity_aabb. La console les liste par nom au chargement du modèle. Les joueurs Bedrock voient toujours l'effet complet.

Les modes d'orientation correspondent aux modes billboard des entités d'affichage. rotate_xyz, lookat_xyz et lookat_direction font face à la caméra. rotate_y et lookat_y ne pivotent qu'autour de l'axe vertical. direction_x, direction_y, direction_z et les modes emitter_transform_* conservent une orientation fixe, déterminée par la direction de la particule ou la rotation de l'émetteur.

Molang​

Les expressions prennent en charge l'arithmétique, les comparaisons, ?:, ??, les affectations et return. Fonctions mathématiques :

abs, acos, asin, atan, atan2, ceil, clamp, cos, die_roll, die_roll_integer, exp, floor, hermite_blend, lerp, lerprotate, ln, max, min, mod, pow, random, random_integer, round, sin, sqrt, trunc, ainsi que la constante math.pi.

La trigonométrie fonctionne en degrés, comme sur Bedrock. Variables intégrées :

  • variable.particle_age, variable.particle_lifetime, variable.particle_random_1 à _4
  • variable.emitter_age, variable.emitter_lifetime, variable.emitter_random_1 à _4

Vos propres variables v. issues des expressions d'initialisation et des scripts d'images clés fonctionnent, de même que les courbes (linear, catmull_rom, bezier, bezier_chain). Les variables et requêtes inconnues valent 0.

Bedrock​

Lorsque sendCustomModelsToBedrockClientsV2 est activé, l'ensemble Bedrock contient chaque effet sous la forme particles/<model>_<effect>.json, avec l'identifiant fmm:<model>_<effect>. Il contient aussi la texture de la particule, les locators sur les os de la géométrie et les images clés de particules dans les animations Bedrock. Les clients Bedrock jouent alors l'effet nativement, y compris les composants que Java ignore.

Pour les objets tenus, FMM écrit assets/freeminecraftmodels/rspm_item_particles/display/<item>.json dans sa sortie Java. ResourcePackManager le lit pendant la conversion de l'objet et ajoute les locators et une animation de particules en boucle à l'attachable de l'objet.

Dépannage​

Particle effect '<effect>' ... was not found. FMM n'a pas trouvé le fichier de particules. Placez-le à côté du modèle sous le nom <effect>.json ou <effect>.particle.json, ou sous le nom de fichier enregistré dans l'image clé. Voir Où FMM trouve les fichiers de particules.

... uses <components>, which Java players do not see yet. Ce message est informatif. Java joue tout le reste de l'effet, et Bedrock le joue en entier.

... uses texture '<path>', which is not next to <file>. Placez la texture PNG à côté du fichier de particules, en la nommant d'après le dernier segment de ce chemin.

... follows locator '<name>', which the model does not have. Le locator a été renommé ou supprimé. L'effet est joué à l'origine du modèle jusqu'à ce que l'image clé désigne un locator existant.

Les particules de mon prop n'apparaissent jamais. Les props ne jouent d'eux-mêmes que idle. Déplacez les images clés dans idle ou jouez l'animation depuis un script.

À la première personne, les particules de mon objet tenu flottent à l'écart de l'objet. C'est le comportement attendu sur Java. Le serveur les place au niveau de la main en vue à la troisième personne. Les autres joueurs et les vues à la troisième personne les voient sur l'objet.

Mon objet tenu n'affiche aucune particule. L'objet doit être un objet personnalisé FMM (il porte fmm_item_id), et l'une des animations de son modèle doit comporter des images clés de particules dont FMM a trouvé les fichiers.