1.12.2 Entité avec rendu .obj



  • Bonjour,
    on part sur un sujet assez peu documenté donc je suis au point mort.
    Je veux créer une entité avec un model en .obj (car ca donne un meilleur rendu et que j'en ai un a disposition assez bien fait)
    Problème, j'ai beau chercher, je ne trouve rien de concluant.
    On parle de wavefront parser, de IBakedModel etc mais je n'ai rien de concret.
    Si quelqu'un à une idée je suis preneur.
    Bonne journée



  • @FeedBack update :
    j'abandonne le .obj 😕
    Par contre, il faut que j'utilise le model d'un item pour une entity (un peu comme l'EntityItem)

    j'ai ce code mais bon je sais pas quoi prendre 😕

    public void doRender(EntityItem entity, double x, double y, double z, float entityYaw, float partialTicks)
        {
            ItemStack itemstack = entity.getItem();
            int i = itemstack.isEmpty() ? 187 : Item.getIdFromItem(itemstack.getItem()) + itemstack.getMetadata();
            this.random.setSeed((long)i);
            boolean flag = false;
    
            if (this.bindEntityTexture(entity))
            {
                this.renderManager.renderEngine.getTexture(this.getEntityTexture(entity)).setBlurMipmap(false, false);
                flag = true;
            }
    
            GlStateManager.enableRescaleNormal();
            GlStateManager.alphaFunc(516, 0.1F);
            GlStateManager.enableBlend();
            RenderHelper.enableStandardItemLighting();
            GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
            GlStateManager.pushMatrix();
            IBakedModel ibakedmodel = this.itemRenderer.getItemModelWithOverrides(itemstack, entity.world, (EntityLivingBase)null);
            int j = this.transformModelCount(entity, x, y, z, partialTicks, ibakedmodel);
            boolean flag1 = ibakedmodel.isGui3d();
    
            if (!flag1)
            {
                float f3 = -0.0F * (float)(j - 1) * 0.5F;
                float f4 = -0.0F * (float)(j - 1) * 0.5F;
                float f5 = -0.09375F * (float)(j - 1) * 0.5F;
                GlStateManager.translate(f3, f4, f5);
            }
    
            if (this.renderOutlines)
            {
                GlStateManager.enableColorMaterial();
                GlStateManager.enableOutlineMode(this.getTeamColor(entity));
            }
    
            for (int k = 0; k < j; ++k)
            {
                if (flag1)
                {
                    GlStateManager.pushMatrix();
    
                    if (k > 0)
                    {
                        float f7 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F;
                        float f9 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F;
                        float f6 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F;
                        GlStateManager.translate(shouldSpreadItems() ? f7 : 0, shouldSpreadItems() ? f9 : 0, f6);
                    }
    
                    IBakedModel transformedModel = net.minecraftforge.client.ForgeHooksClient.handleCameraTransforms(ibakedmodel, ItemCameraTransforms.TransformType.GROUND, false);
                    this.itemRenderer.renderItem(itemstack, transformedModel);
                    GlStateManager.popMatrix();
                }
                else
                {
                    GlStateManager.pushMatrix();
    
                    if (k > 0)
                    {
                        float f8 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F * 0.5F;
                        float f10 = (this.random.nextFloat() * 2.0F - 1.0F) * 0.15F * 0.5F;
                        GlStateManager.translate(f8, f10, 0.0F);
                    }
    
                    IBakedModel transformedModel = net.minecraftforge.client.ForgeHooksClient.handleCameraTransforms(ibakedmodel, ItemCameraTransforms.TransformType.GROUND, false);
                    this.itemRenderer.renderItem(itemstack, transformedModel);
                    GlStateManager.popMatrix();
                    GlStateManager.translate(0.0F, 0.0F, 0.09375F);
                }
            }
    
            if (this.renderOutlines)
            {
                GlStateManager.disableOutlineMode();
                GlStateManager.disableColorMaterial();
            }
    
            GlStateManager.popMatrix();
            GlStateManager.disableRescaleNormal();
            GlStateManager.disableBlend();
            this.bindEntityTexture(entity);
    
            if (flag)
            {
                this.renderManager.renderEngine.getTexture(this.getEntityTexture(entity)).restoreLastBlurMipmap();
            }
    
            super.doRender(entity, x, y, z, entityYaw, partialTicks);
        }
    


  • @FeedBack update :
    j'ai fait ca mais mon model se colle au joueur 😕

    @SideOnly(Side.CLIENT)
    public class RenderCar1 extends Render<EntityCar>
    {
    
        private static RenderItem renderItem;
    
        public RenderCar1(RenderManager renderManager)
        {
            super(renderManager);
            this.shadowSize = 1F;
            this.shadowOpaque = 0.75F;
        }
    
        @Override
        protected ResourceLocation getEntityTexture(EntityCar entity)
        {
            return TextureMap.LOCATION_BLOCKS_TEXTURE;
        }
    
        @Override
        public void doRender(EntityCar entity, double x, double y, double z, float entityYaw, float partialTicks)
        {
            renderItem = Minecraft.getMinecraft().getRenderItem();
    
            GlStateManager.enableRescaleNormal();
            GlStateManager.alphaFunc(516, 0.1F);
            GlStateManager.enableBlend();
            RenderHelper.enableStandardItemLighting();
            GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
            GlStateManager.pushMatrix();
            IBakedModel model = this.renderItem.getItemModelWithOverrides(new ItemStack(BlockInit.CAR_1), entity.world, entity);
            IBakedModel transformedModel = net.minecraftforge.client.ForgeHooksClient.handleCameraTransforms(model, ItemCameraTransforms.TransformType.GROUND, false);
            GlStateManager.enableColorMaterial();
            GlStateManager.enableOutlineMode(this.getTeamColor(entity));
            this.renderItem.renderItem(new ItemStack(BlockInit.CAR_1), transformedModel);
            GlStateManager.disableRescaleNormal();
            GlStateManager.disableBlend();
            GlStateManager.popMatrix();
    
            this.bindEntityTexture(entity);
            this.renderManager.renderEngine.getTexture(this.getEntityTexture(entity)).restoreLastBlurMipmap();
    
            super.doRender(entity, x, y, z, entityYaw, partialTicks);
        }
    
    }
    

    6ef7075c-2b70-483d-a213-6714f4df3d16-image.png



  • up svp



  • Bonjour, j'arrive un peu tard, mais il me semble qu'il faut translate a la position x, y, z donné en paramètre pour afficher le modèle à la position de l'entité.



  • @LeBossMax2 merci mais quand je le fais j'obtiens un écran blanc 😕


Log in to reply