MFF

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

    Model d'une sphère ?

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8.9
    20 Messages 6 Publieurs 3.8k Vues 1 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.
    • FolganskyF Hors-ligne
      Folgansky Correcteurs
      dernière édition par

      Je pense que le lien cité est toujours d’actualité.
      Mais tu ne sauras qu’en essayant.

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

        ça marche, je vais essayer alors 🙂

        Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

        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

          Forge a un chargeur d’obj intégré maintenant.
          https://github.com/MinecraftForge/MinecraftForge/tree/master/src/test/resources/assets/forgedebugmodelloaderregistry
          https://github.com/MinecraftForge/MinecraftForge/blob/master/src/test/java/net/minecraftforge/debug/ModelLoaderRegistryDebug.java

          1 réponse Dernière réponse Répondre Citer 1
          • DylemD Hors-ligne
            Dylem
            dernière édition par

            Merci Robin ! Je n’étais pas au courant tu me sauve la vie la  🙂

            Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

              Tu as tout simplement une classe Sphere inclue dans les package de lwjgl. Ca marche parfaitement avec, et sa t’évites aussi d utiliser le chargeur d’obj

              1 réponse Dernière réponse Répondre Citer 1
              • DylemD Hors-ligne
                Dylem
                dernière édition par

                @‘Plaigon’:

                Tu as tout simplement une classe Sphere inclue dans les package de lwjgl. Ca marche parfaitement avec, et sa t’évites aussi d utiliser le chargeur d’obj

                J’ai absolument aucune idée de comment utiliser un objet comme la sphere du package lwjgl dans le code minecraft. Une fois l’avoir draw, que faire avec ?
                Merci de l’aide !

                Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                  Bah tu draw la sphère dans la méthode render de ton tesr.
                  Voici un code qui t’aidera :

                  
                  glColor4f(0F, 255F, 0F, 0.5F);
                  Sphere sphere = new Sphere();
                  sphere.setOrientation(GLU.GLU_INSIDE);
                  sphere.draw(1F, 128, 128);
                  
                  
                  1 réponse Dernière réponse Répondre Citer 0
                  • DylemD Hors-ligne
                    Dylem
                    dernière édition par

                    ça je l’avais à peu près écris (juste pas les même paramètres dans draw), ce que je me demandais c’est comment dire au GlStateManager d’utiliser la sphere ?

                    Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                      Envoie ton code, ça fait longtemps que je n’ai pas refait de tesr x)

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

                        Ben pour l’instant y’a quasiment rien, mais après c’est la première fois ou presque que j’utilise tesr donc bon 😛

                        package mod.dylems.bloodplus.client.renderer.tilentity;
                        
                        import org.lwjgl.util.glu.GLU;
                        import org.lwjgl.util.glu.Sphere;
                        
                        import mod.dylems.bloodplus.tileentity.TileEntityBloodSphere;
                        import net.minecraft.client.renderer.GlStateManager;
                        import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
                        
                        public class TileEntityBloodSphereSpecialRenderer extends TileEntitySpecialRenderer<tileentitybloodsphere>{
                        
                        private static final ResourceLocation BLOOD_SPHERE_TEXTURE = new ResourceLocation("bloodPlus:textures/blocks/blood_sphere.png");
                        
                        public TileEntityBloodSphereSpecialRenderer() {
                        }
                        
                        @Override
                        public void renderTileEntityAt(TileEntityBloodSphere te, double x, double y, double z, float partialTicks,
                        int destroyStage) {
                           GlStateManager.pushMatrix();
                           GlStateManager.translate(x, y, z);
                           GlStateManager.enableCull();
                           Sphere sphere = new Sphere();
                           sphere.setOrientation(GLU.GLU_INSIDE);
                           sphere.draw(1F, 128, 128);
                        this.bindTexture(BLOOD_SPHERE_TEXTURE);
                           GlStateManager.popMatrix();
                        }
                        }
                        ```</tileentitybloodsphere>

                        Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                          Bah logiquement tu vires tout ce qu’il y a dans ta méthode renderTileEntityAt pour y mettre ton code qui rend la sphère.

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

                            @‘Plaigon’:

                            Bah logiquement tu vires tout ce qu’il y a dans ta méthode renderTileEntityAt pour y mettre ton code qui rend la sphère.

                            Justement, c’est ce que je veux faire… C’est pour ça que je te demande ton aide

                            Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                              Bah c’est pas compliqué, ta méthode ressemblera donc à ceci:

                              
                              glPushMatrix();
                              glTranslatef((float) x, (float) y, (float) z);
                              glShadeModel(GL_SMOOTH);
                              glEnable(GL_BLEND);
                              glBlendFunc(GL_SRC_ALPHA, GL_ONE);
                              glDisable(GL_ALPHA_TEST);
                              glEnable(GL_CULL_FACE);
                              glDepthMask(false);
                              glColor4f(0F, 255F, 0F, 0.5F);
                              Sphere sphere = new Sphere();
                              sphere.setOrientation(GLU.GLU_INSIDE);
                              sphere.draw(1F, 128, 128);
                              glPopMatrix
                              
                              

                              Tu peux créer un deuxième sphère aux même coords que la première mais avec GLU.GLU_OUTSIDE, si tu souhaites que lorsque tu rentres dans la sphère, tu n’ais aucun bug de texture. N’oublie pas l’import static !

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

                                Bon c’est très flou pour moi, ton code n’a aucun effet mais ça doit être de ma faute, je vais voir demain. Faut vraiment que j’apprenne l’open gl…

                                package mod.dylems.bloodplus.client.renderer.tilentity;
                                
                                import org.lwjgl.opengl.GL11;
                                import org.lwjgl.util.glu.GLU;
                                import org.lwjgl.util.glu.Sphere;
                                
                                import mod.dylems.bloodplus.tileentity.TileEntityBloodSphere;
                                import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
                                import net.minecraft.util.ResourceLocation;
                                
                                public class TileEntityBloodSphereSpecialRenderer extends TileEntitySpecialRenderer <tileentitybloodsphere>{
                                
                                private final ResourceLocation location = new ResourceLocation("blocks/blood_sphere");
                                public TileEntityBloodSphereSpecialRenderer() {
                                }
                                
                                @Override
                                public void renderTileEntityAt(TileEntityBloodSphere te, double x, double y, double z, float partialTicks,
                                int destroyStage) {
                                this.bindTexture(location);
                                GL11.glPushMatrix();
                                GL11.glTranslatef((float) x, (float) y, (float) z);
                                GL11.glShadeModel(GL11.GL_SMOOTH);
                                GL11.glEnable(GL11.GL_BLEND);
                                GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
                                GL11.glDisable(GL11.GL_ALPHA_TEST);
                                GL11.glEnable(GL11.GL_CULL_FACE);
                                GL11.glDepthMask(false);
                                GL11.glColor4f(0F, 255F, 0F, 0.5F);
                                Sphere sphere = new Sphere();
                                sphere.setOrientation(GLU.GLU_INSIDE);
                                sphere.draw(1F, 128, 128);
                                GL11.glPopMatrix();
                                }
                                }
                                
                                ```</tileentitybloodsphere>

                                Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                                  Bon, encore un gros merci à toi car tout fonctionne, sauf la texture de la sphere qui ne s’applique pas. Mon code (j’ai retiré la partie qui render la table, la fonction qui render la sphère est appelée avant TileEntityRenderAt):

                                  package mod.dylems.bloodplus.client.renderer.tilentity;
                                  
                                  import org.lwjgl.opengl.GL11;
                                  import org.lwjgl.util.glu.GLU;
                                  import org.lwjgl.util.glu.Sphere;
                                  
                                  import mod.dylems.bloodplus.tileentity.TileEntityBloodTable;
                                  import net.minecraft.client.Minecraft;
                                  import net.minecraft.client.model.ModelBook;
                                  import net.minecraft.client.renderer.GlStateManager;
                                  import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
                                  import net.minecraft.entity.Entity;
                                  import net.minecraft.util.MathHelper;
                                  import net.minecraft.util.ResourceLocation;
                                  
                                  public class TESRBloodTable extends TileEntitySpecialRenderer<tileentitybloodtable>{
                                      /** The texture for the book above the enchantment table. */
                                  private static final ResourceLocation BLOOD_TABLE_BOOK_TEXTURE = new ResourceLocation("bloodPlus:textures/entity/blood_table_book.png");
                                  private static final ResourceLocation BLOOD_SPHERE_TEXTURE = new ResourceLocation("bloodPlus:textures/entity/blood_sphere_full.png");
                                      private ModelBook field_147541_c;
                                  public static int sphereIdOutside;
                                  public static int sphereIdInside;
                                  
                                      public TESRBloodTable() {
                                              this.field_147541_c = new ModelBook();
                                      }
                                  
                                      public void renderTileEntityAt(TileEntityBloodTable te, double x, double y, double z, float partialTicks, int destroyStage)
                                      {
                                     GL11.glPushMatrix();
                                     GL11.glTranslated((float)x + 0.5F, (float)y + 2.75F, (float)z + 0.5F);
                                     GL11.glScalef(3.0F, 3.0F, 3.0F);
                                     GL11.glEnable(GL11.GL_BLEND);
                                     GL11.glDepthMask(false);
                                  
                                     GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
                                     GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F);
                                     GL11.glEnable(GL11.GL_ALPHA_TEST);
                                     GL11.glCallList(sphereIdOutside);
                                     GL11.glCallList(sphereIdInside);
                                     GL11.glPopMatrix();
                                      }
                                  
                                      public static void renderSphere() {
                                      Sphere sphere = new Sphere();
                                      sphere.setDrawStyle(GLU.GLU_FILL);
                                      sphere.setNormals(GLU.GLU_SMOOTH);
                                      sphere.setOrientation(GLU.GLU_OUTSIDE);
                                      sphereIdOutside = GL11.glGenLists(1);
                                      GL11.glNewList(sphereIdOutside, GL11.GL_COMPILE);
                                      Minecraft.getMinecraft().getTextureManager().bindTexture(BLOOD_SPHERE_TEXTURE);
                                      sphere.draw(0.25F, 16, 16);
                                      GL11.glEndList();
                                      sphere.setOrientation(GLU.GLU_INSIDE);
                                      sphereIdInside = GL11.glGenLists(1);
                                      GL11.glNewList(sphereIdInside, GL11.GL_COMPILE);
                                      Minecraft.getMinecraft().getTextureManager().bindTexture(BLOOD_SPHERE_TEXTURE);
                                      sphere.draw(0.25F, 16, 16);
                                      GL11.glEndList();
                                      }
                                  }
                                  

                                  Et le rendu :

                                  Comme tu peux le voir, la texture ne s’applique malheureusement pas !</tileentitybloodtable>

                                  Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                                    Moi j’aurais mis la méthode qui applique la texture au début de la fonction, essaie voir

                                    Si je t'ai filé un coup de main n'oublie pas le + / -
                                    Par contre évite les demandes d'aides en MP, tu sera sympa'

                                    La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                                    Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

                                      Je la mets avant chaque draw (le draw de la sphère vu de l’extérieur et celui de la sphère vu de l’intérieur), je viens d’essayer au début de la fonction mais pas de changement 😕

                                      Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                                        J’ai réussi à résoudre le problème (grâce à l’aide du forum EN), je mets la balise.

                                        Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                                          Poste la solution ici au cas où quelqu’un en aurait besoin.
                                          Et un lien vers le forum EN aussi s’il te plaît 😉

                                          Sent from my GT-I9195I using Tapatalk

                                          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
                                          • 1 / 1
                                          • Premier message
                                            Dernier message
                                          Design by Woryk
                                          ContactMentions Légales

                                          MINECRAFT FORGE FRANCE © 2024

                                          Powered by NodeBB