• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Rendu 3D translucide - Le retour

    Sans suite
    1.7.10
    7
    30
    4744
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Folgansky
      Folgansky Correcteurs last edited by

      Ouki, hier je suis allé un peu vite en besogne avec le précédent sujet.

      Donc Plaigon m’avait conseillé d’utiliser le GL_BLEND, qui a permis un grand mieux mais il reste un soucis.

      Parfois ça clignote beaucoup, parfois un peu.

      Voici le morceau de rendu de la classe TESR:

      private void renderTileEntityPlasmaAt(TileEntityPlasma tile, double x, double y, double z, float partialRenderTick)
          {
              GL11.glPushMatrix();
              GL11.glEnable(GL11.GL_BLEND);
              GL11.glTranslated(x + 0.5D, y + 0.15D, 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.1, 0.1, 0.1);
              this.bindTexture(texture);
              model.renderAll();
              GL11.glDisable(GL11.GL_BLEND);
              GL11.glPopMatrix();
          }
      
      1 Reply Last reply Reply Quote 0
      • SCAREX
        SCAREX last edited by

        Et avec la méthode de minecraft ? Je crois que c’est GLStateManager.tryGLBlend

        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 Reply Last reply Reply Quote 0
        • Deleted
          Deleted last edited by

          Essaie ça

          
          private void renderTileEntityPlasmaAt(TileEntityPlasma tile, double x, double y, double z, float partialRenderTick)
             {
                GL11.glPushMatrix();
                GL11.glEnable(GL11.GL_BLEND);
                glBlendFunc(GL_SRC_ALPHA, GL_ONE);
                glDisable(GL_ALPHA_TEST);
                glEnable(GL_CULL_FACE);
                glDepthMask(false);
                GL11.glTranslated(x + 0.5D, y + 0.15D, 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.1, 0.1, 0.1);
                this.bindTexture(texture);
                model.renderAll();
                GL11.glDisable(GL11.GL_BLEND);
                glEnable(GL_ALPHA_TEST);
                glDisable(GL_CULL_FACE);
                glDepthMask(true);
                GL11.glPopMatrix();
             }
          
          
          1 Reply Last reply Reply Quote 0
          • Folgansky
            Folgansky Correcteurs last edited by

            ça me fait des erreurs sur les paramètres comme GL_SRC_ALPHA en demandant de créer les constant ou encore de créer la méthode glDepthMask

            1 Reply Last reply Reply Quote 0
            • Deleted
              Deleted last edited by

              Ah oups oublié le GL11 juste avant x)
              Essaie sinon de faire un import static org.lwjgl.opengl.GL11.*;

              Sa sera beaucoup + pratique que de devoir toujours réecrire à GL11 😃

              1 Reply Last reply Reply Quote 0
              • SCAREX
                SCAREX last edited by

                Rajoute GL11. devant ou importe toutes les fonctions (je te conseille la première méthode)

                EDIT : même chose que Plaigon

                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 Reply Last reply Reply Quote 0
                • Folgansky
                  Folgansky Correcteurs last edited by

                  J’ai toujours les soucis de paramètres, surement liés à l’import dont vous parlez pourtant je l’ai il me semble:

                  package fr.folgansky.powerdeco.client;
                  
                  import org.lwjgl.opengl.GL11;      //en serait-ce un autre?
                  
                  import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
                  import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
                  import net.minecraft.tileentity.TileEntity;
                  import net.minecraft.util.ResourceLocation;
                  
                  public class TileEntityPlasmaSpecialRenderer extends TileEntitySpecialRenderer
                  {
                      public static ModelPlasma model = new ModelPlasma();
                      public static ResourceLocation texture = new ResourceLocation("ModPowerDeco:textures/models/blocks/Plasma.png");
                  
                      public TileEntityPlasmaSpecialRenderer()
                      {
                          this.func_147497_a(TileEntityRendererDispatcher.instance);
                      }
                  
                      @Override
                      public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float partialRenderTick)
                      {
                          this.renderTileEntityPlasmaAt((TileEntityPlasma) tile, x, y, z, partialRenderTick);
                      }
                  
                      private void renderTileEntityPlasmaAt(TileEntityPlasma tile, double x, double y, double z, float partialRenderTick)
                      {
                          GL11.glPushMatrix();
                          GL11.glEnable(GL11.GL_BLEND);     //soucis paramètres
                          GL11.glBlendFunc(GL_SRC_ALPHA, GL_ONE);   //ici aussi
                          GL11.glDisable(GL_ALPHA_TEST);  //ici
                          GL11.glEnable(GL_CULL_FACE);   //ici aussi, enfin voilà le délire
                          GL11.glDepthMask(false);   //Plus de soucis ici
                          GL11.glTranslated(x + 0.5D, y + 0.15D, 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.1, 0.1, 0.1);
                          this.bindTexture(texture);
                          model.renderAll();
                          GL11.glDisable(GL11.GL_BLEND);
                          GL11.glEnable(GL_ALPHA_TEST);
                          GL11.glDisable(GL_CULL_FACE);
                          GL11.glDepthMask(true);    // soucis réglé aussi ici avec le "GL11."
                          GL11.glPopMatrix();
                      }
                  }
                  
                  1 Reply Last reply Reply Quote 0
                  • Deleted
                    Deleted last edited by

                    import STATIC
                    http://patatos.over-blog.com/article-comment-faire-un-import-static-en-java-48226821.html

                    Une fois fait tu pourras donc virer tous les GL11. Et comme ça t’auras appris une autre petite notion bien pratique en Java 😃

                    1 Reply Last reply Reply Quote 0
                    • Folgansky
                      Folgansky Correcteurs last edited by

                      Ah ok, c’est noté oO

                      package fr.folgansky.powerdeco.client;
                      
                      import static org.lwjgl.opengl.GL11.*;
                      
                      import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
                      import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
                      import net.minecraft.tileentity.TileEntity;
                      import net.minecraft.util.ResourceLocation;
                      
                      public class TileEntityPlasmaSpecialRenderer extends TileEntitySpecialRenderer
                      {
                          public static ModelPlasma model = new ModelPlasma();
                          public static ResourceLocation texture = new ResourceLocation("ModPowerDeco:textures/models/blocks/Plasma.png");
                      
                          public TileEntityPlasmaSpecialRenderer()
                          {
                              this.func_147497_a(TileEntityRendererDispatcher.instance);
                          }
                      
                          @Override
                          public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float partialRenderTick)
                          {
                              this.renderTileEntityPlasmaAt((TileEntityPlasma) tile, x, y, z, partialRenderTick);
                          }
                      
                          private void renderTileEntityPlasmaAt(TileEntityPlasma tile, double x, double y, double z, float partialRenderTick)
                          {
                              glPushMatrix();
                              glEnable(GL_BLEND);
                              glBlendFunc(GL_SRC_ALPHA, GL_ONE);
                              glDisable(GL_ALPHA_TEST);
                              glEnable(GL_CULL_FACE);
                              glDepthMask(false);
                              glTranslated(x + 0.5D, y + 0.15D, z + 0.5D);
                              glRotatef(180F, 0.0F, 0.0F, 1.0F);
                              glRotatef((90F * tile.getDirection()) + 180F, 0.0F, 1.0F, 0.0F);
                              glScaled(0.1, 0.1, 0.1);
                              this.bindTexture(texture);
                              model.renderAll();
                              glDisable(GL_BLEND);
                              glEnable(GL_ALPHA_TEST);
                              glDisable(GL_CULL_FACE);
                              glDepthMask(true);
                              glPopMatrix();
                          }
                      }
                      

                      Résultat: Ultra surbrillance tout le temps. Au moins y’a eu un effet tangible pour le coup comparé à mes bidouillages inutiles x]
                      edit: (en gros comme dans le second screen)

                      1 Reply Last reply Reply Quote 0
                      • Deleted
                        Deleted last edited by

                        Bon bah t’as essayé ce qu’avait dit @SCAREX ? Sinon faudra attendre le retour d’un pro, tel que @xavpok 😃

                        1 Reply Last reply Reply Quote 0
                        • Folgansky
                          Folgansky Correcteurs last edited by

                          Je n’ai pas trouvé de choses qui ressemble à GLStateManager dans le focus sur GL11.

                          1 Reply Last reply Reply Quote 0
                          • jglrxavpok
                            jglrxavpok Modérateurs last edited by

                            Me voilà! Alors je regarderai plus en détails ce soir mais je peux déjà conseiller ceci:

                            glEnable (GL_BLEND);
                            glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
                            

                            au lieu de

                            glEnable (GL_BLEND);
                            glBlendFunc (GL_SRC_ALPHA, GL_ONE);
                            

                            (je fais ça de tête, je suis pas trop sûr de ce que je dis)

                            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 Reply Last reply Reply Quote 0
                            • Folgansky
                              Folgansky Correcteurs last edited by

                              Eh bien monsieur, de tête et de façon incertaine, tu as résolu mon problème de surbrillance

                              Petit comble maintenant je me souviens avoir vu cette ligne en faisant une recherche très rapide sur la transparence pour les rendus, mais c’était avant qu’on m’explique pour il n’était pas nécessaire de mettreGL.11 si y’a l’import static, bref

                              Merci =D

                              1 Reply Last reply Reply Quote 0
                              • Folgansky
                                Folgansky Correcteurs last edited by



                                Je me suis réjouis assez vite, il reste des détails à régler x]

                                1 Reply Last reply Reply Quote 0
                                • jglrxavpok
                                  jglrxavpok Modérateurs last edited by

                                  Alors ça c’est plus compliqué, ça vient du fait que les vitres sont dessinées par dessus ton modèle. En théorie, il faudrait dessiner ta table après les vitres quand on regarde dans le sens de la dernière image et l’inverse en regardant par les vitres.
                                  Je dois bien avouer que je ne pense pas qu’il soit possible de dire à Minecraft dans quel ordre dessiner les faces.

                                  De plus, Minecraft a du mal avec les rendus translucides (exemples pris aujourd’hui sur la 1.7.10):


                                  Youtube Video

                                  Je te conseille de séparer ton modèle en deux: la partie opaque et la vitre, tu dessines le modèle de la table normalement puis celui de la vitre avec les options des réponses précédentes pour la transparence.

                                  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 Reply Last reply Reply Quote 1
                                  • Ama
                                    Ama last edited by

                                    Essaie avec ça, j’ai pas fais gaffe au précédents messages donc sorry si c’est du doublon:

                                    
                                    GL11.glPushMatrix();
                                    GL11.glEnable(GL11.GL_NORMALIZE);  
                                    GL11.glEnable(GL11.GL_BLEND);  
                                    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);  
                                    GL11.glColor4f(0.75F, 0.75F, 0.75F, 0.25F);
                                    
                                    //Le rendu du model ici
                                    
                                    GL11.glDisable(GL11.GL_BLEND);
                                    GL11.glPopMatrix();
                                    
                                    

                                    Je te conseille aussi de passer en priorité si possible par des modèles “vanilla” et pas des tiles entity pour de si simple modèles, sans doute sans animations
                                    Utilise donc Cubik de Sphax pour faire tes modèles 3D simple d’utilisation et complet, payant par contre (la version pro) sinon tu as le models creator de MrCrayfish 😉

                                    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 Reply Last reply Reply Quote 0
                                    • Deleted
                                      Deleted last edited by

                                      Il peut pas il est en 1.7x

                                      1 Reply Last reply Reply Quote 0
                                      • Folgansky
                                        Folgansky Correcteurs last edited by

                                        J’ai essayé plusieurs trucs

                                        Je fais deux rendu, en utilisant la technique d’Ama pour la partie en “verre”

                                        Le rendu

                                        private void renderTileEntityGlassTableAt(TileEntityGlassTable tile, double x, double y, double z, float partialRenderTick)
                                            {
                                                glPushMatrix();
                                                glEnable(GL_NORMALIZE);  
                                                glEnable(GL_BLEND);  
                                                glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);   
                                                glColor4f(0.75F, 0.75F, 0.75F, 0.25F);
                                                glTranslated(x + 0.5D, y + 1.5D, z + 0.5D);
                                                glRotatef(180F, 0.0F, 0.0F, 1.0F);
                                                glRotatef((90F * tile.getDirection()) + 180F, 0.0F, 1.0F, 0.0F);
                                                this.bindTexture(texture);
                                                model.renderTop();   //Le plateau de verre
                                                glDisable(GL_BLEND);
                                                model.renderBase();  // Les pieds et le contour du plateau de la table
                                                glPopMatrix();
                                            }
                                        

                                        Deuxième méthode

                                        Le rendu

                                        glPushMatrix();
                                                glEnable(GL_BLEND);
                                                glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
                                                glDisable(GL_ALPHA_TEST);
                                                glEnable(GL_CULL_FACE);
                                                glDepthMask(false);   
                                                glColor4f(0.75F, 0.75F, 0.75F, 0.25F);
                                                glTranslated(x + 0.5D, y + 1.5D, z + 0.5D);
                                                glRotatef(180F, 0.0F, 0.0F, 1.0F);
                                                glRotatef((90F * tile.getDirection()) + 180F, 0.0F, 1.0F, 0.0F);
                                                this.bindTexture(texture);
                                                model.renderTop();   //Le plateau de verre
                                                glDisable(GL_BLEND);
                                                glEnable(GL_ALPHA_TEST);
                                                glDisable(GL_CULL_FACE);
                                                glDepthMask(true);
                                                model.renderBase();  // Les pieds et le contour du plateau de la table
                                                glPopMatrix();
                                        

                                        EDIT:

                                        Au final le deux me convient (je vais changer la couleur du verre) mais l’effet texturé n’y est pas du tout, on n’a pas du tout l’impression qu’il y ait un verre à la table. Du coup je pense que je vais faire une seconde texture par dessus celle du verre mais en terme de code je ne sais pas trop comment gérer et où bind la texture en fait

                                        1 Reply Last reply Reply Quote 0
                                        • AymericRed
                                          AymericRed last edited by

                                          Tu peux bind la texture où tu veux, avant le rendu du modèle correspondant.
                                          Tu peux aussi agrandir ton image et mettre ta texture de verre à côté de celle de la table, ensuite tu spécifie l’u et v (pos sur la texture) dans ton modèle, je pense que c’est moins lourd.

                                          Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                          AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                          Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                          Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                                          1 Reply Last reply Reply Quote 0
                                          • Folgansky
                                            Folgansky Correcteurs last edited by

                                            Mon soucis c’est de bind deux textures différentes sur mon modèle

                                            Mes essais n’ont pas été conclus, en général ça ne prend en compte que la première texture bind

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • First post
                                              Last post
                                            Design by Woryk
                                            Contact / Mentions Légales

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB