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.4k 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

      @‘anguelwyvern’:

      Slt petite question, qu’elle est la différence de code entre un bloc et une entité,
      car en faite je voudrais appliqué un .obj sur un mob
      merci d’avance

      Il n’y a absolument aucune différence dans l’utilisation de la lib.
      Fais comme d’habitude avec un modèle Techne (fais une petite recherche), mais remplace le model.render() de Techne par model.render() de l’API.

      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
      • A Hors-ligne
        anguelwyvern
        dernière édition par

        je te remercie 😉

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

          Bonjour tout le monde !

          Pour commencer, merci pour ce super tutoriel, j’ai réussi du premier coup !
          Par contre, j’aurai deux petites questions pour pouvoir faire des choses plus poussées avec mon model ^^
          Premièrement: Comment ne faire un rendu que des mesh sans la texture, et donner une couleur à ceux-ci ?
          et 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 ?

          Voila, j’espère avoir réussi à me faire comprendre, et sinon, encore chapeau pour le tuto !

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

            @‘Sugarshy’:

            Bonjour tout le monde !

            Pour commencer, merci pour ce super tutoriel, j’ai réussi du premier coup !
            Par contre, j’aurai deux petites questions pour pouvoir faire des choses plus poussées avec mon model ^^
            Premièrement: Comment ne faire un rendu que des mesh sans la texture, et donner une couleur à ceux-ci ?
            et 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 ?

            Voila, j’espère avoir réussi à me faire comprendre, et sinon, encore chapeau pour le tuto !

            1. GL11.glBindTexture(GL11.GL_TEXTURE_2D,0) avant de dessiner le modèle devrait “décrocher” la texture normalement (mais je ne suis pas sûr)
            2. Il y a une méthode dans TileEntity qui donne la taille du bloc mais je ne me rappelle plus son nom. Il faut renvoyer Infini Positif pour que ton bloc soit tout le temps affiché

            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

              Pour que le rendu reste toujours activé j’ai réussi en suivant ton conseil (rajouter le code suivant dans mon TileEntity)

              
              @SideOnly(Side.CLIENT)
              
                  public AxisAlignedBB getRenderBoundingBox()
                  {
                      AxisAlignedBB bb = INFINITE_EXTENT_AABB;
                      return bb;
                  }
              

              Par contre je reste coincé pour les Mesh.
              J’ai essayé avec le code

              
              glmodel.renderMeshNormals();
              

              Mais cela a un léger bug…
              Model de base: https://dl.dropboxusercontent.com/u/28128175/2014-10-14_23.00.18.png
              Rendu en renderMeshNormals: https://dl.dropboxusercontent.com/u/28128175/2014-10-14_23.26.24.png

              1 réponse Dernière réponse Répondre Citer 0
              • 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
                                            • 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