Rendu 3D translucide - Le retour
-
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

-
Rajoute GL11. devant ou importe toutes les fonctions (je te conseille la première méthode)
EDIT : même chose que Plaigon
-
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(); } } -
import STATIC
http://patatos.over-blog.com/article-comment-faire-un-import-static-en-java-48226821.htmlUne fois fait tu pourras donc virer tous les GL11. Et comme ça t’auras appris une autre petite notion bien pratique en Java

-
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) -
Bon bah t’as essayé ce qu’avait dit @SCAREX ? Sinon faudra attendre le retour d’un pro, tel que @xavpok

-
Je n’ai pas trouvé de choses qui ressemble à GLStateManager dans le focus sur GL11.
-
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)
-
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
-


Je me suis réjouis assez vite, il reste des détails à régler x] -
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):



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.
-
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
-
Il peut pas il est en 1.7x
-
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
-
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. -
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
-
Ça je ne pense pas que ce soit possible, mais sinon combiné juste les textures
Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk
-
Pour utiliser deux textures, il faut couper en deux modèles complètement distincts et faire quelque comme ceci:
utiliser texture1 dessiner modele1 utiliser texture2 dessiner modele2 -
Ah en effet c’est le “complètement distincts” qui fait la différence ^^
Il me reste un ou deux détails à vérifier et je conclurai ensuite sur l’état du sujet, merci pour les infos et conseils
-
Donc à ce que j’ai cru comprendre Minecraft ne me permettra pas d’obtenir mieux que:


:::
Voyez-vous le verre de bière à moitié vide ou à moitié remplis?
:::Malheureusement il y a des bouts des rendus qui ne sont pas copains et certains sont même portés sur la délation puisqu’ils laissent clairement voir où sont leurs camarades…
Mais je suis déjà bien plus à l’aise avec les rendus par transparence et les rendus multiples, alors je vous remercie de m’avoir aidé et/ou éclairé sur certains points et je clos le sujet dans la nuit si il n’y a pas de choses à ajouter.