Résolu Problème de rendu techne
-
Bonjour,
j’ai un problème de rendu de mon animal en jeu.
L’animal a une forme correcte mais :- il clignote noir
- on dirait qu’il s’enfonce dans le sol, à la fin seule sa tête dépasse…
C’est très bizarre et je n’arrive pas à voir d’où cela peut venir. Peut-être avez déjà rencontré ce genre de souci…
Il s’agit d’un modèle récupéré directement sur le site de techne : http://techne.zeux.me/7370b6b5
Le code de l’entité
package minetux.common; import net.minecraft.entity.EntityAgeable; import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.world.World; public class EntityOstrich extends EntityAnimal { public EntityOstrich(World par1World) { super(par1World); } @Override public EntityAgeable createChild(EntityAgeable entityageable) { return null; } }
Code du model
package minetux.proxy; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelOstrich extends ModelBase { //fields ModelRenderer Body1; ModelRenderer body2; ModelRenderer LLeg1; ModelRenderer Rleg1; ModelRenderer LLeg2; ModelRenderer Lfoot1; ModelRenderer RLeg2; ModelRenderer Lfoot2; ModelRenderer Lfoot3; ModelRenderer LClaw1; ModelRenderer LClaw2; ModelRenderer LClaw3; ModelRenderer Lfoot4; ModelRenderer LClaw4; ModelRenderer Rfoot1; ModelRenderer Rfoot2; ModelRenderer Rclaw1; ModelRenderer Rfoot3; ModelRenderer Rclaw3; ModelRenderer Rfoot4; ModelRenderer Rclaw2; ModelRenderer Rclaw4; ModelRenderer Body3; ModelRenderer Tail1; ModelRenderer Tail2; ModelRenderer Tail3; ModelRenderer Body4; ModelRenderer head; ModelRenderer leftleg; ModelRenderer Neck1; ModelRenderer Head1; ModelRenderer mouth1; ModelRenderer neck2; ModelRenderer rightleg; ModelRenderer Lwing; ModelRenderer Rwing; public ModelOstrich() { textureWidth = 256; textureHeight = 128; Body1 = new ModelRenderer(this, 0, 28); Body1.addBox(-4F, 0F, 0F, 8, 9, 8); Body1.setRotationPoint(0F, 0F, -6F); Body1.setTextureSize(256, 128); Body1.mirror = true; setRotation(Body1, -0.2230717F, 0F, 0F); body2 = new ModelRenderer(this, 25, 111); body2.addBox(-4F, 0F, 0F, 8, 8, 8); body2.setRotationPoint(0F, 2F, -1F); body2.setTextureSize(256, 128); body2.mirror = true; setRotation(body2, 0F, 0F, 0F); LLeg1 = new ModelRenderer(this, 25, 70); LLeg1.addBox(-1F, 3F, -5F, 2, 7, 3); LLeg1.setRotationPoint(3F, 8F, 1F); LLeg1.setTextureSize(256, 128); LLeg1.mirror = true; setRotation(LLeg1, 0.4833219F, 0F, 0F); Rleg1 = new ModelRenderer(this, 25, 70); Rleg1.addBox(-2F, 3F, -5F, 2, 7, 3); Rleg1.setRotationPoint(-2F, 8F, 1F); Rleg1.setTextureSize(256, 128); Rleg1.mirror = true; setRotation(Rleg1, 0.4833219F, 0F, 0F); LLeg2 = new ModelRenderer(this, 29, 59); LLeg2.addBox(-1F, 7F, 4F, 2, 7, 3); LLeg2.setRotationPoint(3F, 8F, 1F); LLeg2.setTextureSize(256, 128); LLeg2.mirror = true; setRotation(LLeg2, -0.4370552F, 0F, 0F); Lfoot1 = new ModelRenderer(this, 29, 50); Lfoot1.addBox(-1F, 14F, -5F, 2, 2, 6); Lfoot1.setRotationPoint(3F, 8F, 1F); Lfoot1.setTextureSize(256, 128); Lfoot1.mirror = true; setRotation(Lfoot1, 0F, 0F, 0F); RLeg2 = new ModelRenderer(this, 29, 59); RLeg2.addBox(-2F, 7F, 4F, 2, 7, 3); RLeg2.setRotationPoint(-2F, 8F, 1F); RLeg2.setTextureSize(256, 128); RLeg2.mirror = true; setRotation(RLeg2, -0.4370552F, 0F, 0F); Lfoot2 = new ModelRenderer(this, 0, 9); Lfoot2.addBox(-1F, 15F, -4F, 2, 1, 5); Lfoot2.setRotationPoint(3F, 8F, 1F); Lfoot2.setTextureSize(256, 128); Lfoot2.mirror = true; setRotation(Lfoot2, 0F, 0.2602503F, 0F); Lfoot3 = new ModelRenderer(this, 0, 9); Lfoot3.addBox(-1F, 15F, -4F, 2, 1, 5); Lfoot3.setRotationPoint(3F, 8F, 1F); Lfoot3.setTextureSize(256, 128); Lfoot3.mirror = true; setRotation(Lfoot3, 0F, -0.260246F, 0F); LClaw1 = new ModelRenderer(this, 16, 10); LClaw1.addBox(0F, 14F, -7F, 0, 2, 3); LClaw1.setRotationPoint(3F, 8F, 1F); LClaw1.setTextureSize(256, 128); LClaw1.mirror = true; setRotation(LClaw1, 0F, 0F, 0F); LClaw2 = new ModelRenderer(this, 19, 16); LClaw2.addBox(-0.5F, 15F, -5F, 0, 1, 3); LClaw2.setRotationPoint(3F, 8F, 1F); LClaw2.setTextureSize(256, 128); LClaw2.mirror = true; setRotation(LClaw2, 0F, 0.260246F, 0F); LClaw3 = new ModelRenderer(this, 19, 16); LClaw3.addBox(0.5F, 15F, -5F, 0, 1, 3); LClaw3.setRotationPoint(3F, 8F, 1F); LClaw3.setTextureSize(256, 128); LClaw3.mirror = true; setRotation(LClaw3, 0F, -0.260246F, 0F); Lfoot4 = new ModelRenderer(this, 0, 0); Lfoot4.addBox(-1F, 14F, -1F, 2, 2, 4); Lfoot4.setRotationPoint(3F, 8F, 1F); Lfoot4.setTextureSize(256, 128); Lfoot4.mirror = true; setRotation(Lfoot4, 0F, 0F, 0F); LClaw4 = new ModelRenderer(this, 16, 10); LClaw4.addBox(0F, 14F, 2F, 0, 2, 3); LClaw4.setRotationPoint(3F, 8F, 1F); LClaw4.setTextureSize(256, 128); LClaw4.mirror = true; setRotation(LClaw4, 0F, 0F, 0F); Rfoot1 = new ModelRenderer(this, 29, 50); Rfoot1.addBox(-2F, 14F, -5F, 2, 2, 6); Rfoot1.setRotationPoint(-2F, 8F, 1F); Rfoot1.setTextureSize(256, 128); Rfoot1.mirror = true; setRotation(Rfoot1, 0F, 0F, 0F); Rfoot2 = new ModelRenderer(this, 0, 0); Rfoot2.addBox(-2F, 14F, -1F, 2, 2, 4); Rfoot2.setRotationPoint(-2F, 8F, 1F); Rfoot2.setTextureSize(256, 128); Rfoot2.mirror = true; setRotation(Rfoot2, 0F, 0F, 0F); Rclaw1 = new ModelRenderer(this, 16, 10); Rclaw1.addBox(-1F, 14F, -7F, 0, 2, 3); Rclaw1.setRotationPoint(-2F, 8F, 1F); Rclaw1.setTextureSize(256, 128); Rclaw1.mirror = true; setRotation(Rclaw1, 0F, 0F, 0F); Rfoot3 = new ModelRenderer(this, 0, 9); Rfoot3.addBox(-2F, 15F, -4F, 2, 1, 5); Rfoot3.setRotationPoint(-2F, 8F, 1F); Rfoot3.setTextureSize(256, 128); Rfoot3.mirror = true; setRotation(Rfoot3, 0F, -0.260246F, 0F); Rclaw3 = new ModelRenderer(this, 19, 16); Rclaw3.addBox(-0.5F, 15F, -5F, 0, 1, 3); Rclaw3.setRotationPoint(-2F, 8F, 1F); Rclaw3.setTextureSize(256, 128); Rclaw3.mirror = true; setRotation(Rclaw3, 0F, -0.260246F, 0F); Rfoot4 = new ModelRenderer(this, 0, 9); Rfoot4.addBox(-2F, 15F, -4F, 2, 1, 5); Rfoot4.setRotationPoint(-2F, 8F, 1F); Rfoot4.setTextureSize(256, 128); Rfoot4.mirror = true; setRotation(Rfoot4, 0F, 0.2602503F, 0F); Rclaw2 = new ModelRenderer(this, 19, 16); Rclaw2.addBox(-1.5F, 15F, -5F, 0, 1, 3); Rclaw2.setRotationPoint(-2F, 8F, 1F); Rclaw2.setTextureSize(256, 128); Rclaw2.mirror = true; setRotation(Rclaw2, 0F, 0.260246F, 0F); Rclaw4 = new ModelRenderer(this, 16, 10); Rclaw4.addBox(-1F, 14F, 2F, 0, 2, 3); Rclaw4.setRotationPoint(-2F, 8F, 1F); Rclaw4.setTextureSize(256, 128); Rclaw4.mirror = true; setRotation(Rclaw4, 0F, 0F, 0F); Body3 = new ModelRenderer(this, 17, 96); Body3.addBox(-3F, 0F, 0F, 6, 7, 3); Body3.setRotationPoint(0F, 2F, 6F); Body3.setTextureSize(256, 128); Body3.mirror = true; setRotation(Body3, 0F, 0F, 0F); Tail1 = new ModelRenderer(this, 33, 81); Tail1.addBox(-2F, 0F, 0F, 4, 0, 14); Tail1.setRotationPoint(0F, 3F, 9F); Tail1.setTextureSize(256, 128); Tail1.mirror = true; setRotation(Tail1, -0.5948578F, 0F, 0F); Tail2 = new ModelRenderer(this, 36, 97); Tail2.addBox(-1F, 0F, 0F, 3, 0, 13); Tail2.setRotationPoint(0F, 3F, 8F); Tail2.setTextureSize(256, 128); Tail2.mirror = true; setRotation(Tail2, -0.5948578F, 0.3346075F, 0F); Tail3 = new ModelRenderer(this, 36, 97); Tail3.addBox(-2F, 0F, 0F, 3, 0, 13); Tail3.setRotationPoint(0F, 3F, 8F); Tail3.setTextureSize(256, 128); Tail3.mirror = true; setRotation(Tail3, -0.5948578F, -0.3346145F, 0F); Body4 = new ModelRenderer(this, 17, 89); Body4.addBox(-2F, 0F, 0F, 4, 3, 3); Body4.setRotationPoint(0F, 6F, 7F); Body4.setTextureSize(256, 128); Body4.mirror = true; setRotation(Body4, 1.003822F, 0F, 0F); head = new ModelRenderer(this, 74, 48); head.addBox(-1F, -24F, -7F, 2, 2, 4); head.setRotationPoint(0F, 5F, -7F); head.setTextureSize(256, 128); head.mirror = true; setRotation(head, 0F, 0F, 0F); leftleg = new ModelRenderer(this, 0, 16); leftleg.addBox(-2F, 0F, -2F, 4, 6, 5); leftleg.setRotationPoint(3F, 8F, 1F); leftleg.setTextureSize(256, 128); leftleg.mirror = true; setRotation(leftleg, -0.2974289F, 0F, 0F); Neck1 = new ModelRenderer(this, 79, 84); Neck1.addBox(-1.5F, -21F, -2F, 3, 21, 3); Neck1.setRotationPoint(0F, 5F, -7F); Neck1.setTextureSize(256, 128); Neck1.mirror = true; setRotation(Neck1, 0F, -0.0349066F, 0F); Head1 = new ModelRenderer(this, 0, 70); Head1.addBox(-2F, -25F, -3F, 4, 4, 4); Head1.setRotationPoint(0F, 5F, -7F); Head1.setTextureSize(256, 128); Head1.mirror = true; setRotation(Head1, 0F, 0F, 0F); mouth1 = new ModelRenderer(this, 74, 64); mouth1.addBox(-1F, -22F, -6F, 2, 1, 3); mouth1.setRotationPoint(0F, 5F, -7F); mouth1.setTextureSize(256, 128); mouth1.mirror = true; setRotation(mouth1, 0F, 0F, 0F); neck2 = new ModelRenderer(this, 0, 99); neck2.addBox(-1F, -2F, -2F, 2, 4, 3); neck2.setRotationPoint(0F, 5F, -6.9F); neck2.setTextureSize(256, 128); neck2.mirror = true; setRotation(neck2, 0F, 0F, 0F); rightleg = new ModelRenderer(this, 0, 16); rightleg.addBox(-3F, 0F, -2F, 4, 6, 5); rightleg.setRotationPoint(-2F, 8F, 1F); rightleg.setTextureSize(256, 128); rightleg.mirror = true; setRotation(rightleg, -0.2974216F, 0F, 0F); Lwing = new ModelRenderer(this, 0, 107); Lwing.addBox(0F, 0F, 0F, 1, 7, 11); Lwing.setRotationPoint(4F, 1F, -5F); Lwing.setTextureSize(256, 128); Lwing.mirror = true; setRotation(Lwing, 0F, 0F, 0F); Rwing = new ModelRenderer(this, 0, 107); Rwing.addBox(0F, 0F, 0F, 1, 7, 11); Rwing.setRotationPoint(-5F, 1F, -5F); Rwing.setTextureSize(256, 128); Rwing.mirror = true; setRotation(Rwing, 0F, 0F, 0F); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); setRotationAngles(f, f1, f2, f3, f4, f5, entity); Body1.render(f5); body2.render(f5); LLeg1.render(f5); Rleg1.render(f5); LLeg2.render(f5); Lfoot1.render(f5); RLeg2.render(f5); Lfoot2.render(f5); Lfoot3.render(f5); LClaw1.render(f5); LClaw2.render(f5); LClaw3.render(f5); Lfoot4.render(f5); LClaw4.render(f5); Rfoot1.render(f5); Rfoot2.render(f5); Rclaw1.render(f5); Rfoot3.render(f5); Rclaw3.render(f5); Rfoot4.render(f5); Rclaw2.render(f5); Rclaw4.render(f5); Body3.render(f5); Tail1.render(f5); Tail2.render(f5); Tail3.render(f5); Body4.render(f5); head.render(f5); leftleg.render(f5); Neck1.render(f5); Head1.render(f5); mouth1.render(f5); neck2.render(f5); rightleg.render(f5); Lwing.render(f5); Rwing.render(f5); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity e) { super.setRotationAngles(f, f1, f2, f3, f4, f5, e); } }
Le code du render
package minetux.proxy; import minetux.common.EntityOstrich; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.passive.EntityChicken; import net.minecraft.util.ResourceLocation; public class RenderOstrich extends RenderLiving { protected static final ResourceLocation texture = new ResourceLocation("minetux:ostrich.png"); public RenderOstrich(ModelBase par1ModelBase, float par2) { super(par1ModelBase, par2); } protected ResourceLocation getOstrichTextures(EntityOstrich entity) { return texture; } protected ResourceLocation getEntityTexture(Entity entity) { return this.getOstrichTextures((EntityOstrich)entity); } public void renderOstrich(EntityOstrich par1EntityOstrich, double par2, double par4, double par6, float par8, float par9) { super.doRenderLiving(par1EntityOstrich, par2, par4, par6, par8, par9); } public void doRenderLiving(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9) { this.renderOstrich((EntityOstrich)par1EntityLiving, par2, par4, par6, par8, par9); } }
La déclaration dans le proxy
RenderingRegistry.registerEntityRenderingHandler(EntityOstrich.class, new RenderOstrich(new ModelOstrich(), 0.5f));
Merci par avance pour votre aide précieuse…
-
1)Remplace toutes les citations par des balises java [java][/java] sans les *
2)Regarde le tutoriel pour faire un mob simple. -
@‘Superloup10’:
1)Remplace toutes les citations par des balises java [java][/java] sans les *
2)Regarde le tutoriel pour faire un mob simple.- C’est fait
- C’est le 3ème mob que je développe mais le premier sous techne. J’ai déjà lu (et relu ce tutoriel…
-
Dans la classe du rendu, ce code ne sert à rien :
public void renderOstrich(EntityOstrich par1EntityOstrich, double par2, double par4, double par6, float par8, float par9) { super.doRenderLiving(par1EntityOstrich, par2, par4, par6, par8, par9); } public void doRenderLiving(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9) { this.renderOstrich((EntityOstrich)par1EntityLiving, par2, par4, par6, par8, par9); }
Lorsque le jeu va faire le rendu, tu lui dit d’appliquer la méthode renderOstrich, sauf que cette méthode renvoie sur le doRenderLiving de la classe mère, donc ça ne sert à rien. Il y a de forte chance que le problème vient de la.
Sinon essaye avec un autre modèle, pour vérifier que le problème ne vient pas du modèle.
-
J’ai supprimé les 2 fonctions renderOstrich et doRenderLiving et j’ai toujours le même résultat (d’ailleurs initialement je n’avais pas mis ces 2 fonctions)
Je viens de tester avec ce modèle : http://www.minecraftforgefrance.fr/showthread.php?tid=129 et cela me fait la même chose…
En faisant un extends sur EntityLiving au lieu de EntityAnimal, je n’ai plus ce souci… Etrange… Cela doit venir du saut que font les animaux par défaut.
-
Désolé de déterrer le sujet
Pour ceux qui ont le même problème la solution est que pour avoir un rendu avec extends EntityAnimal il faut rajouter dans le constructeur : this.setSize(xF,yF) où x et y sont respectivement la largeur et la hauteur de votre entity.