MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    GLUtils, ou comment faire des modèles 3D facilement

    Planifier Épinglé Verrouillé Déplacé Autres
    150 Messages 20 Publieurs 60.8k Vues 2 Watching
    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.
    • jglrxavpokJ Hors-ligne
      jglrxavpok Modérateurs
      dernière édition par

      Il ne faut pas utiliser “renderMeshNormals” puisqu’il va dessiner (comme son nom l’indique) les normales de chacun des polygones composant le modèle.
      Utilise glColor3f(1,0,0); (ici mets le mesh en rouge)
      Puis dessine le model comme tu as fais pour ici: https://dl.dropboxusercontent.com/u/28128175/2014-10-14_23.00.18.png
      Et tout devrait être bon

      Modérateur sur MFF. 
      Mon Github: http://github.com/jglrxavpok
      Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

      1 réponse Dernière réponse Répondre Citer 0
      • SugarshyS Hors-ligne
        Sugarshy
        dernière édition par

        @‘jglrxavpok’:

        Il ne faut pas utiliser “renderMeshNormals” puisqu’il va dessiner (comme son nom l’indique) les normales de chacun des polygones composant le modèle.
        Utilise glColor3f(1,0,0); (ici mets le mesh en rouge)
        Puis dessine le model comme tu as fais pour ici: https://dl.dropboxusercontent.com/u/28128175/2014-10-14_23.00.18.png
        Et tout devrait être bon

        En fait c’est presque sa, le truc c’est que je veux pas afficher ma texture, je veux justes les “contours” de mon model, sans sa texture dessus

        edit: je veux juste afficher le “wire” sans la texture

        1 réponse Dernière réponse Répondre Citer 0
        • jglrxavpokJ Hors-ligne
          jglrxavpok Modérateurs
          dernière édition par

          @‘Sugarshy’:

          @‘jglrxavpok’:

          Il ne faut pas utiliser “renderMeshNormals” puisqu’il va dessiner (comme son nom l’indique) les normales de chacun des polygones composant le modèle.
          Utilise glColor3f(1,0,0); (ici mets le mesh en rouge)
          Puis dessine le model comme tu as fais pour ici: https://dl.dropboxusercontent.com/u/28128175/2014-10-14_23.00.18.png
          Et tout devrait être bon

          En fait c’est presque sa, le truc c’est que je veux pas afficher ma texture, je veux justes les “contours” de mon model, sans sa texture dessus

          edit: je veux juste afficher le “wire” sans la texture

          Etant donné la structure de l’API, je ne crois pas que cela soit possible, désolé

          Modérateur sur MFF. 
          Mon Github: http://github.com/jglrxavpok
          Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

          1 réponse Dernière réponse Répondre Citer 0
          • SugarshyS Hors-ligne
            Sugarshy
            dernière édition par

            Mince ><
            Bon, je vais chercher une autre solution…
            merci en tout cas !

            Ah si, une derniere question, comment faire pour que le model n’ai pas d’ombres ?

            1 réponse Dernière réponse Répondre Citer 0
            • jglrxavpokJ Hors-ligne
              jglrxavpok Modérateurs
              dernière édition par

              Avant de le dessiner:
              glDisable(GL_LIGHTING);

              puis après
              glEnable(GL_LIGHTING);

              et c’est tout 😉

              Modérateur sur MFF. 
              Mon Github: http://github.com/jglrxavpok
              Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

              1 réponse Dernière réponse Répondre Citer 0
              • SugarshyS Hors-ligne
                Sugarshy
                dernière édition par

                super, merci !

                1 réponse Dernière réponse Répondre Citer 0
                • SugarshyS Hors-ligne
                  Sugarshy
                  dernière édition par

                  Bon, vu que je me suis dis que je vous ai pas encore assez embêté ^^ :
                  Je n’arrive pas a appliquer une rotation constante a mon model sur l’axe z

                  1 réponse Dernière réponse Répondre Citer 0
                  • jglrxavpokJ Hors-ligne
                    jglrxavpok Modérateurs
                    dernière édition par

                    @‘Sugarshy’:

                    Bon, vu que je me suis dis que je vous ai pas encore assez embêté ^^ :
                    Je n’arrive pas a appliquer une rotation constante a mon model sur l’axe z

                    Constante, c’est-à-dire ?

                    Modérateur sur MFF. 
                    Mon Github: http://github.com/jglrxavpok
                    Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

                    1 réponse Dernière réponse Répondre Citer 0
                    • SugarshyS Hors-ligne
                      Sugarshy
                      dernière édition par

                      @‘jglrxavpok’:

                      Constante, c’est-à-dire ?

                      Que dés que je pose mon bloc, il se met a tourner

                      1 réponse Dernière réponse Répondre Citer 0
                      • jglrxavpokJ Hors-ligne
                        jglrxavpok Modérateurs
                        dernière édition par

                        @‘Sugarshy’:

                        @‘jglrxavpok’:

                        Constante, c’est-à-dire ?

                        Que dès que je pose mon bloc, il se met a tourner

                        Il te faudrait une variable soit dans la TileEntity soit dans le renderer que tu incrémenterai chaque rendu/tick et tu l’utilises comme angle.

                        Modérateur sur MFF. 
                        Mon Github: http://github.com/jglrxavpok
                        Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

                        1 réponse Dernière réponse Répondre Citer 0
                        • SugarshyS Hors-ligne
                          Sugarshy
                          dernière édition par

                          J’ai éssayé avec un

                          
                          public void updateTick(World world, int x, int y, int z, double d0, double d1, double d2)
                          
                           {
                           tick = tick + 0.1;
                           }
                          

                          Et dans ma partie renderTileEntityAt :

                          
                          GL11.glRotatef((float) tick, 0, 0, 1);
                          

                          Mais sa ne marche pas…

                          1 réponse Dernière réponse Répondre Citer 0
                          • jglrxavpokJ Hors-ligne
                            jglrxavpok Modérateurs
                            dernière édition par

                            @‘Sugarshy’:

                            J’ai éssayé avec un

                            
                            public void updateTick(World world, int x, int y, int z, double d0, double d1, double d2)
                            
                             {
                             tick = tick + 0.1;
                             }
                            

                            Et dans ma partie renderTileEntityAt :

                            
                            GL11.glRotatef((float) tick, 0, 0, 1);
                            

                            Mais sa ne marche pas…

                            “tick” est pour tous tes blocs dans ce cas, donc ça ne va pas.
                            Utilise une TileEntity, ce sera mieux.

                            Modérateur sur MFF. 
                            Mon Github: http://github.com/jglrxavpok
                            Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

                            1 réponse Dernière réponse Répondre Citer 0
                            • SugarshyS Hors-ligne
                              Sugarshy
                              dernière édition par

                              C’est a dire ?

                              1 réponse Dernière réponse Répondre Citer 0
                              • robin4002R Hors-ligne
                                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                dernière édition par

                                http://www.minecraftforgefrance.fr/showthread.php?tid=1113#intro

                                1 réponse Dernière réponse Répondre Citer 0
                                • DeletedD Hors-ligne
                                  Deleted
                                  dernière édition par robin4002

                                  0_1536507143470_chemin des .obj et .png MFF.jpg
                                  Salut tout le monde
                                  Depuis peu je me remets à GLUtils spécialement pour les animations mais je rencontre un problème, j’ai décomposé mon block en 3 .obj mais lorsque j’applique la texture (via du code dans ma class du specialRenderer cela ne marche pas : aucune texture). Certes je pourrai passer par des .mtl j’ai essayé ils fonctionnent très bien, cependant je souhaite passer par du code, car je trouve cela plus souple si dans le futur, par exemple : je crée un mob qui quand il lance une boule de feu sa texture change si on passe par un .mtl cela risque d’être beaucoup plus compliqué que par une simple ligne de code.

                                  Voici mes classes :
                                  Merci d’avance

                                  Ma class tesr :

                                  
                                  package mrplaigon.psccraft.minesagasmod.client;
                                  
                                  import mrplaigon.psccraft.minesagasmod.common.TileEntityBlockHayner;
                                  import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
                                  import net.minecraft.tileentity.TileEntity;
                                  import net.minecraft.util.ResourceLocation;
                                  
                                  import org.jglrxavpok.glutils.TessellatorModel;
                                  import org.lwjgl.opengl.GL11;
                                  
                                  public class TileEntityHaynerSpecialRenderer
                                    extends TileEntitySpecialRenderer
                                    implements IInventoryRenderer
                                  {
                                  
                                   private static TessellatorModel glmodel0;//tête
                                   private static final ResourceLocation textureLocation0 = new ResourceLocation(
                                  "/assets/minesagasmod/obj/hayner0.png");
                                  
                                   private static TessellatorModel glmodel1;//cheveux
                                   private static final ResourceLocation textureLocation1 = new ResourceLocation(
                                  "/assets/minesagasmod/obj/hayner0.png");
                                  
                                   private static TessellatorModel glmodel2;//corps
                                   private static final ResourceLocation textureLocation2 = new ResourceLocation(
                                  "/assets/minesagasmod/obj/hayner1.png");
                                  
                                    public TileEntityHaynerSpecialRenderer()
                                    {
                                      this.glmodel0 = new TessellatorModel("/assets/minesagasmod/obj/hayner0.obj");
                                      this.glmodel0.regenerateNormals();
                                  
                                      this.glmodel1 = new TessellatorModel("/assets/minesagasmod/obj/hayner1.obj");
                                      this.glmodel1.regenerateNormals();
                                  
                                      this.glmodel2 = new TessellatorModel("/assets/minesagasmod/obj/hayner2.obj");
                                      this.glmodel2.regenerateNormals();
                                    }
                                  
                                    public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float scale)
                                    {
                                      //renderTileEntityTestAt((TileEntityBlockHayner)tileentity, x, y, z, scale);
                                      GL11.glPushMatrix();
                                      GL11.glTranslated(x + 0.5D, y , z + 0.5D);
                                      //GL11.glRotatef((float) TileEntityBlockHayner.valeurRotation, 0, -1, 0);
                                      this.bindTexture(textureLocation0);
                                      GL11.glScaled(0.011D, 0.0071D, 0.01D);
                                      this.glmodel0.render();   
                                      GL11.glPopMatrix();
                                      //GL11.glShadeModel(7425);
                                  
                                      GL11.glPushMatrix();
                                      GL11.glTranslated(x + 0.5D, y , z + 0.5D);
                                      this.bindTexture(textureLocation1);
                                      //GL11.glRotatef((float) TileEntityBlockHayner.valeurRotation, 0, -1, 0);
                                      GL11.glScaled(0.011D, 0.0071D, 0.01D);
                                      this.glmodel1.render();   
                                      GL11.glPopMatrix();
                                     // GL11.glShadeModel(7425);
                                  
                                      GL11.glPushMatrix();
                                      GL11.glTranslated(x + 0.5D, y , z + 0.5D);
                                      this.bindTexture(textureLocation2);
                                      //GL11.glRotatef((float) TileEntityBlockHayner.valeurRotation, 0, -1, 0);
                                      GL11.glScaled(0.011D, 0.0071D, 0.01D);
                                      this.glmodel2.render();  
                                      GL11.glPopMatrix();
                                      //GL11.glShadeModel(7425);
                                  
                                    }
                                  
                                    public void renderInventory(double x, double y, double z) 
                                    {
                                  
                                    }
                                  }
                                  

                                  et mon tile entity :

                                  
                                  package mrplaigon.psccraft.minesagasmod.common;
                                  
                                  import java.util.Iterator;
                                  import java.util.List;
                                  
                                  import net.minecraft.entity.player.EntityPlayer;
                                  import net.minecraft.inventory.IInventory;
                                  import net.minecraft.item.ItemStack;
                                  import net.minecraft.nbt.NBTTagCompound;
                                  import net.minecraft.nbt.NBTTagList;
                                  import net.minecraft.tileentity.TileEntity;
                                  import net.minecraft.util.AxisAlignedBB;
                                  
                                  public class TileEntityBlockHayner extends TileEntity 
                                  {
                                  public static int valeurRotation = 0;
                                  
                                      public void updateEntity() {
                                      valeurRotation++;
                                      System.out.println("La valeur est de " + valeurRotation);
                                      if (valeurRotation >= 360)
                                      valeurRotation = 0;
                                      }
                                  
                                  }
                                  

                                  Pour ce qui aurait des doutes sur l’emplacement de mes fichiers .obj et .png voici une image du chemin :

                                  EDIT = Apparement l’image ne marche pas, voici tout de même un lien qui vous sauve :

                                  http://hpics.li/2ebe3de

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • DeletedD Hors-ligne
                                    Deleted
                                    dernière édition par

                                    UPPP plz aidez moi ça presse !

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • DeletedD Hors-ligne
                                      Deleted
                                      dernière édition par

                                      Salut ou re pour certains, j’ai (encore …) un problème et cette fois j’ai réalisé une vidéo pour que cela soit plus explicite pour votre cerveau et pour vos yeux. J’ai ce problème là depuis quelque temps mais c’est seulement maintenant que je viens à vous, nan en fait j’ai 2 problème :

                                      -Mon mob marche se balade, me poursuit quand je suis en survival enfin bref, réagit tout comme il faudrait si il a une hitbox minimum (11), cependant quand je viens à changer sa hitbox (10😎 il ne bouge plus du tout : est totalement invisible. Je peux le faire bouger si je le collide, évidemment. Mais il ne bouge plus de lui même. Tout ça à cause de la hitbox, j’en suis sûr.

                                      Mon deuxième problème est un problème d’affichage vous le verrez dans la vidéo quand je me déplace ou que je bouge la tête mon mob est parfois invisible, le model 3d disparaît subitement >< 
                                      J’ai essayé de réduire son rendu (via la méthode translated) mais rien à faire c’est pire et je ne veux pas non plus que mon mob soit gigantesquement géant. Surtout que ça ne réglerait peut être pas totalement le problème m’enfin bon je vous remercie d’avance car je suis sûr que l’un d’entre vous aura une brillante solution 😉

                                      Le lien de la vidéo :
                                      Youtube Video

                                      Il y a une erreur dans la vidéo, le mob ne bouge plus si sa hitbox fait du 10*8, désolé

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • isadorI Hors-ligne
                                        isador Moddeurs confirmés Modérateurs
                                        dernière édition par

                                        le bug 1 tu ne peut rien y faire, c’est juste que minecraft désactive le rendu du bloc/entity/tout ce que tu veux quand le joueur ne le regarde pas

                                        et le bug 2: tu es sur que le mob peut bouger?

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • DeletedD Hors-ligne
                                          Deleted
                                          dernière édition par

                                          @‘isador34’:

                                          le bug 1 tu ne peut rien y faire, c’est juste que minecraft désactive le rendu du bloc/entity/tout ce que tu veux quand le joueur ne le regarde pas

                                          et le bug 2: tu es sur que le mob peut bouger?

                                          Oui isador il peut bouger il n’y a pas de block autour, c’est une map plate les seules choses qui sont à côté du mob sont des entity il pourrait bouger et les collide, mais on peut comparer entre la vidéo de la hitbox 1*1 et la deuxième qu’il a les même coordonnées (ou presque) qu’il se trouve au même endroit (ou presque) et qu’il bouge bien la première fois et pas la seconde on peut en déduire que ce qui fait qu’il ne bouge plus sont les modifications de la hitbox apportées, et j’en suis sûr.

                                          Ok ça reste très dommage pour le 1er problème mais j’avais vu le problème similaire pour les blocks ici : http://www.minecraftforgefrance.fr/showthread.php?tid=584&page=11 en gros à la page 11 
                                          SugarShy se plaint du même problème pour le block :

                                          e%(#555555)[[size=xx-small]t deuxièmement: comment empêcher que l'affichage de mon model ne se limite aux moments ou mon bloc de base est dans mon angle de vue ?]
                                          

                                          [size=xx-smallil a trouvé ensuite la solutiuon]

                                          ​[size=x-small@SideOnly(Side.CLIENT)]
                                          
                                          [size=x-small    public AxisAlignedBB getRenderBoundingBox()]
                                          [size=x-small    {]
                                          [size=x-small        AxisAlignedBB bb = INFINITE_EXTENT_AABB;]
                                          [size=x-small        return bb;]
                                          [size=x-small    }]
                                          

                                          [size=xx-smallAlors ce code là y’en existe pas un similaire ou qui aurait le même pour les entity ???]

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • NeoSyderN Hors-ligne
                                            NeoSyder
                                            dernière édition par robin4002

                                            Bonjour, j’ai voulu m’initier aux modèles 3D mais j’ai quelques soucis.
                                            J’ai bien suivi le tuto mais lorsque je veux lancer minecraft, le jeu crash.
                                            Voici le log :
                                            http://pastebin.com/NCQ8xf0X

                                            Je précise que j’utilise forge 1.8 et que du coup il y a les .json mais j’ai vu que l’on peut toujours bénéficier de tessallator.

                                            Dans ma classe principale j’ai mis

                                            @EventHandler
                                               public void init(FMLInitializationEvent event)
                                               {
                                                    GameRegistry.registerTileEntity(TileEntityMew.class, "Mew");
                                               }
                                            

                                            Ensuite ma classe renderer

                                            package fr.neosyder.****.render;
                                            
                                            import org.jglrxavpok.glutils.TessellatorModel;
                                            import org.lwjgl.opengl.GL11;
                                            
                                            import fr.neosyder.*****.TileEntityMew;
                                            import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
                                            import net.minecraft.tileentity.TileEntity;
                                            import net.minecraft.util.ResourceLocation;
                                            
                                            public class TileMewObjRenderer extends TileEntitySpecialRenderer
                                            {
                                            
                                               private TessellatorModel glmodel;
                                               //public final ResourceLocation texture = new ResourceLocation("****", "textures/entity/mew.png");
                                            
                                               public TileMewObjRenderer()
                                               {
                                                   glmodel = new TessellatorModel("/assets/*****/models/obj/mew.obj");
                                                   this.glmodel.regenerateNormals();
                                               }
                                            
                                               @Override
                                               public void renderTileEntityAt(TileEntity tileentity, double posX, double posY, double posZ, float partialRenderTick, int p_180535_9_)
                                               {
                                                   GL11.glPushMatrix();
                                                   GL11.glTranslated(posX + 0.5F, posY, posZ + 0.5F);
                                                   //GL11.glScaled(0.01, 0.01, 0.01);
                                                   //this.bindTexture(texture);
                                                   glmodel.render();
                                                   GL11.glPopMatrix();
                                            
                                               }
                                            
                                               public void renderTileEntityTestAt(TileEntityMew tileentity, double posX, double posY, double posZ, float partialRenderTick, int p_180535_9_)
                                               {
                                            
                                               }
                                            
                                            }
                                            

                                            La classe TileEntity

                                            package fr.neosyder.****;
                                            
                                            import net.minecraft.tileentity.TileEntity;
                                            
                                            public class TileEntityMew extends TileEntity
                                            {
                                            
                                            }
                                            

                                            Et dans le proxy client j’ai

                                            ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMew.class, new TileMewObjRenderer() );
                                            

                                            J’ai aussi une petite question à propos de l’endroit où on place le fichier GLUtils.jar de jglrxavpok.
                                            Je l’ai placé ici C:\Users***.gradle\caches\modules-2\files-2.1 et dans le .classpath j’ai rajouté ceci
                                            <classpathentry kind=“lib” path=“C:/Users/****/.gradle/caches/modules-2/files-2.1/mcglutils.jar” exported=“true”>Ensuite j’ai refait gradlew –refresh-dependencies et le jar est bien affiché dans eclipse, mais était-ce bien comme ça qu’il fallait faire ?

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 6
                                            • 7
                                            • 8
                                            • 6 / 8
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB