• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Animation bloc

    1.7.x
    1.7.10
    3
    8
    910
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • Folgansky
      Folgansky Correcteurs dernière édition par

      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 réponse Dernière réponse Répondre Citer 0
      • SCAREX
        SCAREX dernière édition par

        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 réponse Dernière réponse Répondre Citer 0
        • Folgansky
          Folgansky Correcteurs dernière édition par

          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 réponse Dernière réponse Répondre Citer 0
          • SCAREX
            SCAREX dernière édition par

            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 réponse Dernière réponse Répondre Citer 0
            • Folgansky
              Folgansky Correcteurs dernière édition par

              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 réponse Dernière réponse Répondre Citer 0
              • Folgansky
                Folgansky Correcteurs dernière édition par

                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 réponse Dernière réponse Répondre Citer 0
                • robin4002
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                  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 réponse Dernière réponse Répondre Citer 0
                  • Folgansky
                    Folgansky Correcteurs dernière édition par

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

                    Merci.

                    1 réponse Dernière réponse Répondre Citer 0
                    • 1 / 1
                    • Premier message
                      Dernier message
                    Design by Woryk
                    Contact / Mentions Légales

                    MINECRAFT FORGE FRANCE © 2018

                    Powered by NodeBB