Problème rotation Model



  • Bonsoir,

    Je veux faire un rendu d'un sac à dos au dos du joueur. Le sac est rendu, il suit le joueur quand le joueur bouge mais il n'a pas de rotation.
    J'ai fais quelques recherches et trouvé une façon d'y remédier, mais j'aimerais être sur qu'il n'y ai pas une meilleur façon.

    Le model:

    
    public class ModelBackpack extends ModelBase
    {
        ModelRenderer Shape1;
    
      public ModelBackpack()
      {
        textureWidth = 64;
        textureHeight = 32;
    
          Shape1 = new ModelRenderer(this, 0, 0);
          Shape1.addBox(-4F, 0F, 2F, 8, 12, 2);
          Shape1.setRotationPoint(0F, 0F, 0F);
          Shape1.setTextureSize(64, 32);
          Shape1.mirror = true;
          setRotation(Shape1, 0F, 0F, 0F);
      }
    
      public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
      {
        super.render(entity, f, f1, f2, f3, f4, f5);
        setRotationAngles(f, f1, f2, f3, f4, f5, entity);
        GL11.glPushMatrix();
        GL11.glTranslatef(0F, 0.790F, 0F);
        GL11.glRotatef(180.0F, 0F, 1F, 0F);
        GL11.glRotatef(-((EntityPlayer)entity).renderYawOffset, 0F, 1F, 0F);
        Shape1.render(f5);
        GL11.glPopMatrix();
      }
    
      private void setRotation(ModelRenderer model, float x, float y, float z)
      {
        model.rotateAngleX = x;
        model.rotateAngleY = y;
        model.rotateAngleZ = z;
      }
    
      public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
      {
        super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
      }
    
    }
    
    

    Ma classe Event:

    
    public class EventHandling
    {
    ModelBiped model = new ModelBackpack();
    
    @SubscribeEvent
    public void onRenderPlayer(RenderPlayerEvent.Post event) {
         Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("backpack", "textures/models/backpack.png"));
         model.render(event.entityPlayer, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
    }
    }
    
    

    Et une petite question en plus, si le mod est sur un serveur les joueurs verront les backpack des autres joueurs ?

    Merci d'avance



  • GL11.glPushMatrix();
    GL11.glTranslatef(0F, 0.790F, 0F);
    GL11.glRotatef(180.0F, 0F, 1F, 0F);
    GL11.glRotatef(-((EntityPlayer)entity).renderYawOffset, 0F, 1F, 0F);
    Shape1.render(f5);
    GL11.glPopMatrix();
    

    Normalement avec ça ça devrait marcher.

    Tout dépend de l'event utilisé



  • Désolé pour avoir "abandonné ce post", je n'avais plus le temps. Donc, le code déjà donné marche, le modèle se tourne bien en fonction de la rotation du corps du joueur mais le rendu n'est pas fluide. Si on se tourne rapidement, on voit bien que le rendu "saccade". Bref, je ne sais pas comment faire, je ne suis pas doué avec les rendus joueur… Je vais regarder pour utiliser RenderPlayer API.



  • Je crois qu'il faut utiliser les partialTicks pour ça, je suis pas sur, essaye de regarder dans les autres classes de rendu pour voir comment c'est utilisé.



  • Normalement tu dois utiliser les paramètres donner dans la fonction, par contre je ne me rappelle plus lequel, pour ça il faut regarder le rendu des autres mobs


  • Correcteurs

    J'ai regardé un peu comment Flan's mod s'y prenait avec son armure 3D, j'ai rien pigé évidemment

    La classe du modèle 3D

    La classe ModelCustomArmor

    J'avais jamais vu de tableau pour un rendu 3D surtout…


Log in to reply