• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Solved Animation bloc

    1.7.x
    1.7.10
    3
    8
    882
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Folgansky
      Folgansky Correcteurs last edited by

      Bonsoir les gens,

      Aujourd’hui un bienfaiteur m’a donné un gros coup de pouce pour comprendre un peu mieux comment gérer une animation de bloc (TESR).
      Le p’tit soucis que j’ai dans tout ça c’est que certains “shapes” ont un comportement un peu inattendu.

      Explications:
      Je veux faire une machine à sous. Un modèle possédant 3 rouleaux à 8 facettes chacun.
      Donc chaque facette de chaque rouleau ont le même repère afin d’appliquer la rotation du coup j’ai la moitié des facettes à 45°, ce sont ces facettes qui posent problème.

      En image:

      Voilà donc l’animation ne se fait pas tant que je n’ai pas cliqué sur le bloc et donc ce screen montre le bloc à l’état de repos.
      Cette facette se confond avec une autre sans explication à mes yeux.

      Les classes:

      private void renderTileEntityJackPotAt(TileEntityJackPot tile, double x, double y, double z, float partialRenderTick)
          {
              GL11.glPushMatrix();
              GL11.glTranslated(x + 0.5D, y + 0.35D, z + 0.5D);
              GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
              GL11.glRotatef((90F * tile.getDirection()) + 180F, 0.0F, 1.0F, 0.0F);
              GL11.glScaled(0.25F, 0.25F, 0.25F);
              this.bindTexture(texture);
              model.Wheel1A.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
      //        model.Wheel1B.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
              model.Wheel1C.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
      //        model.Wheel1D.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
              model.Wheel1E.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
      //        model.Wheel1F.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
              model.Wheel1G.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
      //        model.Wheel1H.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
              model.Wheel2A.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
              model.Wheel2B.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
              model.Wheel2C.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
      //        model.Wheel2D.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
              model.Wheel2E.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
      //        model.Wheel2F.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
              model.Wheel2G.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
      //        model.Wheel2H.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
              model.Wheel3A.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
      //        model.Wheel3B.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
              model.Wheel3C.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
      //        model.Wheel3D.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
              model.Wheel3E.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
      //        model.Wheel3F.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
              model.Wheel3G.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
      //        model.Wheel3H.rotateAngleX = (float) Math.toRadians(tile.getAnimateAngle());
              model.renderAll();
              GL11.glPopMatrix();
          }
      

      Les shapes qui sont mals affichés sont en commentaire, le shape qui sert d’exemple sur le screen est** Wheel2B**

      Je suppose que mon soucis provient de la classe de mon modèle. Que voici en partie:

      package fr.powergame.modpg2.client;
      
      import net.minecraft.client.model.ModelBase;
      import net.minecraft.client.model.ModelRenderer;
      
      public class ModelJackPot extends ModelBase
      {
          ModelRenderer Wheel1A;
          ModelRenderer Wheel1B;
          ModelRenderer Wheel1C;
          ModelRenderer Wheel1D;
          […]
      
            public ModelJackPot()
            {
                    textureWidth = 256;
                    textureHeight = 128;
      
                    Wheel1A = new ModelRenderer(this, 192, 110);        // BUG PAS
                    Wheel1A.addBox(-8F, 18.8F, -8.5F, 16, 1, 16);
                    Wheel1A.setRotationPoint(-19F, -8.5F, -5.6F);
                    Wheel1A.setTextureSize(256, 128);
                    Wheel1A.mirror = true;
                    setRotation(Wheel1A, 0F, 0F, 0F);
      
                    Wheel1B = new ModelRenderer(this, 158, 110);        // BUG
                    Wheel1B.addBox(-8F, -8.2F, -20F, 16, 16, 1);
                    Wheel1B.setRotationPoint(-19F, -8.5F, -5.5F);
                    Wheel1B.setTextureSize(256, 128);
                    Wheel1B.mirror = true;
                    setRotation(Wheel1B, 0.7853982F, 0F, 0F);
      
                    Wheel1C = new ModelRenderer(this, 158, 93);        // BUG PAS
                    Wheel1C.addBox(-8F, -7.8F, -20F, 16, 16, 1);
                    Wheel1C.setRotationPoint(-19F, -8.5F, -5.5F);
                    Wheel1C.setTextureSize(256, 128);
                    Wheel1C.mirror = true;
                    setRotation(Wheel1C, 0F, 0F, 0F);
      
                    Wheel1D = new ModelRenderer(this, 222, 76);        //BUG
                    Wheel1D.addBox(-8F, -7.5F, -19.7F, 16, 16, 1);
                    Wheel1D.setRotationPoint(-19F, -8.5F, -5.5F);
                    Wheel1D.setTextureSize(256, 128);
                    Wheel1D.mirror = true;
                    setRotation(Wheel1D, -0.7853982F, 0F, 0F);
                    […]
            }
      
            public void renderAll()
            {
                Wheel1A.render(0.0625F);
                […]
            }
      
            private void setRotation(ModelRenderer model, float x, float y, float z)
            {
                model.rotateAngleX = x;
                model.rotateAngleY = y;
                model.rotateAngleZ = z;
            }
          }
      

      edit: je n’ai pas mis la logique de la méthode updateEntity() du TileEntity car on m’a certifié qu’elle était hors de cause ^^

      1 Reply Last reply Reply Quote 0
      • SCAREX
        SCAREX last edited by

        Essaie d’afficher juste avant d’affecter chaque rotation d’élément la variable tile.getAnimateAngle() et regarde si elle change.

        PS : je te conseille de faire un rendu avec les items de minecraft pour que ce soit compatible avec les textures packs

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

        1 Reply Last reply Reply Quote 0
        • Folgansky
          Folgansky Correcteurs last edited by

          Si le problème venait de cette valeur, le problème serait aussi sensiblement visible sur les autres facettes pourtant.

          Petit edit:
          Peut être insignifiant, mais j’avais essayé de faire .isChild chaque rouleau pour en faire 3 blocs et c’était totalement le bordel (vraiment).

          1 Reply Last reply Reply Quote 0
          • SCAREX
            SCAREX last edited by

            De ce que je vois, le problème vient de toutes les formes qui ont une rotation sur l’axe X, après pourquoi je ne sais pas.

            Site web contenant mes scripts : http://SCAREXgaming.github.io

            Pas de demandes de support par MP ni par skype SVP.
            Je n'accepte sur skype que l…

            1 Reply Last reply Reply Quote 0
            • Folgansky
              Folgansky Correcteurs last edited by

              Non justement sur le screen on peut voir 4 shapes à rotationX:
              Les 3 shapes avec une texture de nether star et un shape bug que j’ai laissé pour vous montrer.

              Voici ce qu’il se passe si je rédige mon code comme il est sensé être au final:

              Depuis j’ai rajouté le bras de la machine, les trois pièces sont inclinées de 14° de l’axe Z et aucun problème pour la rotation de 45° sur l’axe X et surtout aucun bug d’affichage à l’état de repos du bloc

              Bon, texture en cours car si je n’arrive pas à résoudre ce problème je vais devoir faire un système de textures aléatoires. C’est moins beau à voir, mais fonctionnel

              EDIT:
              Je précise que le modèle a été exporté depuis Techne (vu les compliments que j’entends à ce propos), mais bon je vois ait montré la classe du modèle avec le code des shapes qui posent problème en cas.

              1 Reply Last reply Reply Quote 0
              • Folgansky
                Folgansky Correcteurs last edited by

                J’ai opté pour la solution Système D. ça fait simplement quelques textures à gérer.

                J’ai un dernier soucis de parcours. Mon animation s’exécute également dans l’inventaire. Est ce que cela fera lag? Puis-je corriger ça simplement sinon?

                (ce ne sera un bloc accessible qu’en créatif)

                1 Reply Last reply Reply Quote 0
                • robin4002
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                  Pour l’animation dans l’inventaire il suffit d’utiliser un code différent pour le rendu dans l’inventaire et celui en jeu.

                  1 Reply Last reply Reply Quote 0
                  • Folgansky
                    Folgansky Correcteurs last edited by

                    Houla oui, pas faux. Pardon, ça me permet de passer en résolu.

                    Merci.

                    1 Reply Last reply Reply Quote 0
                    • 1 / 1
                    • First post
                      Last post
                    Design by Woryk
                    Contact / Mentions Légales

                    MINECRAFT FORGE FRANCE © 2018

                    Powered by NodeBB