Rendu Armure 3D sans la porter



  • Salut

    Je sais faire une Armure 3D mais on ne voit celle-ci sur nous que lorsqu'on la porte et j'aimerais faire que juste si on l'a dans l'inventaire ça nous l'affiche comme une Armure 3D,

    Merci d'avance pour vos idées,



  • Tu peux le faire facilement avec un rendu avancé d'Item



  • Ajoutes à ton item une classe item renderer implémentant de IItemRenderer. Y'a un tuto sur le fofo



  • Le tuto n'est pas pour 1.7.10, j'ai réussi à adapter un peu avec bindTexture mais mon model avec le render et tout ça…

    https://www.minecraftforgefrance.fr/showthread.php?tid=130

    Model :

    package fr.altiscraft.benjaminloison.model;
    
    import net.minecraft.client.model.ModelBase;
    import net.minecraft.client.model.ModelRenderer;
    import net.minecraft.entity.Entity;
    
    public class ModelSac extends ModelBase
    {
    ModelRenderer base, centre, haut, milieu;
    
    public ModelSac()
    {
    int textureWidth = 512;
    int textureHeight = 512;
    base = new ModelRenderer(this, 465, 464);
    base.addBox(-3F, 1F, 2F, 6, 10, 2);
    base.setRotationPoint(0F, 0F, 0F);
    base.setTextureSize(512, 512);
    setRotation(base, 0F, 0F, 0F);
    centre = new ModelRenderer(this, 466, 467);
    centre.addBox(-1F, 4.5F, 3.5F, 2, 1, 1);
    centre.setRotationPoint(0F, 0F, 0F);
    centre.setTextureSize(512, 512);
    setRotation(centre, 0F, 0F, 0F);
    haut = new ModelRenderer(this, 469, 466);
    haut.addBox(-2.5F, 1.5F, 4F, 5, 3, 1);
    haut.setRotationPoint(0F, 0F, 0F);
    haut.setTextureSize(512, 512);
    setRotation(haut, 0F, 0F, 0F);
    milieu = new ModelRenderer(this, 466, 466);
    milieu.addBox(-2.5F, 5.5F, 4F, 5, 5, 1);
    milieu.setRotationPoint(0F, 0F, 0F);
    milieu.setTextureSize(512, 512);
    setRotation(milieu, 0F, 0F, 0F);
    }
    
    // TODO: sert à rendre dans un gui
    
    public void render(float f)
    {
    base.render(f);
    centre.render(f);
    haut.render(f);
    milieu.render(f);
    }
    
    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);
    }
    
    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 entity)
    {
    super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
    }
    }
    

    ClientProxy :

    MinecraftForgeClient.registerItemRenderer(ModAltisCraft.Sac, (IItemRenderer)new RenderSac());
    

    Classe principale :

    Sac = new Sac().setUnlocalizedName("Sac").setTextureName("altiscraft:Sac").setCreativeTab(AltisCraft).setMaxStackSize(1);
    

    Sac :

    package fr.altiscraft.benjaminloison.conteneurs;
    
    import cpw.mods.fml.common.registry.GameRegistry;
    import fr.altiscraft.benjaminloison.common.ModAltisCraft;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.world.World;
    
    public class Sac extends Item
    {
    public static final String NAME = "backpack";
    
    public Sac()
    {
    GameRegistry.registerItem(this, NAME);
    }
    
    @Override
    public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
    {
    player.openGui(ModAltisCraft.instance, 0, world, (int)player.posX, (int)player.posY, (int)player.posZ);
    return stack;
    }
    }
    

    RenderSac:

    package fr.altiscraft.benjaminloison.common;
    
    import org.lwjgl.opengl.GL11;
    
    import cpw.mods.fml.common.registry.GameRegistry;
    import fr.altiscraft.benjaminloison.common.ModAltisCraft;
    import fr.altiscraft.benjaminloison.model.ModelSac;
    import net.minecraft.client.Minecraft;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.ResourceLocation;
    import net.minecraft.world.World;
    import net.minecraftforge.client.IItemRenderer;
    
    public class RenderSac implements IItemRenderer
    {
    protected ModelSac modelTroisD;
    protected static final ResourceLocation texture = new ResourceLocation("altiscraft:textures/models/armor/Sac.png");
    
    public RenderSac()
    {
    modelTroisD = new ModelSac();
    }
    
    @Override
    public boolean handleRenderType(ItemStack item, ItemRenderType type)
    {
    switch(type)
    {
    case EQUIPPED:
    return true;
    default:
    return false;
    }
    }
    
    @Override
    public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper)
    {
    return false;
    }
    
    @Override
    public void renderItem(ItemRenderType type, ItemStack item, Object... data)
    {
    switch(type)
    {
    case EQUIPPED:
    {
    GL11.glPushMatrix();
    Minecraft.getMinecraft().renderEngine.bindTexture(texture);
    modelTroisD.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
    GL11.glPopMatrix();
    break;
    }
    default:
    break;
    }
    }
    }
    

  • Correcteurs

    Il faut que tu fasses un nouveau modèle (sous techne tu prends le modeleBiped par exemple) tu y bind la texture de ton armure et tu fais un render comme dis plus tôt et ça marche très bien.



  • Pas besoin d'en re-créer un, tu as juste à avoir une nouvelle instance de ModelBiped et c'est bon



  • J'ai changé l'extends en ModelBiped et aucun changement 😕 L'item est toujours affiché en 2D


  • Administrateurs

    Faudrait pas faire un petit GL11.glRotate ?



  • J'en verrai pas l'utilité si je vois l'item en 2D que dans ma main…


  • Correcteurs

    Non mais Robin suggère subtilement que tu rends ton modèle de face. Tu peux très bien avoir un rendu 3D et n'exploiter que 2 des 3 dimensions si tu ne fais pas pivoter un peu ton modèle.

    Une question de perspective quoi…



  • ^^ très subtile, ça me parait impossible mais j'essaye de suite 😉

    EDIT: Ca ne bouge pas après rotate 😕


  • Correcteurs

    Autre chose, que personnellement je confond souvent, assure toi que tu n'as pas fais le rendu qu'à la troisième personne, un petit f5 en jeu et tu seras fixé



  • Non aucun changement en F5 😞


  • Correcteurs

    Euh essaie avec un rendu case INVENTORY, nan?

    Il me semble avoir essayé cette histoire de rendu 3D en inventaire (pour un item) mais que j'ai laissé tomber l'idée par manque de réussite =D



  • En fait sans Glrotate et sans case inventory et avec extends ModelBase ou ModelBiped je vois un semblant de 3D (hyper faible), je ne le voyais pas à cause de ma texture de **** 😕 regarder c'est incompréhensible… Ca peut venir d'où ? 😕 http://altiscraft.fr/BEN/Sac.png