[1.7.2]Модель ведет себя странно

771
5
Вообщем сделал модель для блока, рендерю вроде правильно, но у некоторых шейпов меняется положение и в итоге она рендерится неправильно:

8c0e9f88885b4020297510f1055d7c97.png


В Techne все нормально(тут все бревна соприкасаются с камнями, в игре - нет):

47155584c7aacd87756f4ec695037239.png


Рендер: 
Код:
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y + 1.5, z + 0.5);
mc.renderEngine.bindTexture(new ResourceLocation(Esoteric.MOD_ID.toLowerCase(), "textures/blocks/campfire.png"));
GL11.glPushMatrix();
GL11.glRotated(180, 0.0, 0.0, 1.0);
int angle = campfire.getBlockMetadata() * 90;
GL11.glRotated(angle + 90, 0.0F, 1.0F, 0.0F);
campfireModel.render((Entity)null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
GL11.glPopMatrix();
GL11.glPopMatrix();
Модель:
Код:
public class ModelCampfire extends ModelBase{

    ModelRenderer rock1;
    ModelRenderer rock2;
    ModelRenderer rock3;
    ModelRenderer rock4;
    ModelRenderer rock5;
    ModelRenderer rock6;
    ModelRenderer rock7;
    ModelRenderer rock8;
    ModelRenderer log3;
    ModelRenderer log1;
    ModelRenderer log4;
    ModelRenderer log2;
    ModelRenderer down;
    ModelRenderer wall1;
    ModelRenderer wall2;
    ModelRenderer wall3;
    ModelRenderer wall4;
    ModelRenderer arm1;
    ModelRenderer arm2;

    public ModelCampfire(){
        textureWidth = 64;
        textureHeight = 32;
        rock1 = new ModelRenderer(this, 0, 0);
        rock1.addBox(0F, 0F, 0F, 3, 2, 3);
        rock1.setRotationPoint(5F, 22F, 3F);
        rock1.setTextureSize(64, 32);
        rock1.mirror = true;
        setRotation(rock1, 0F, -0.7435722F, 0F);
        rock2 = new ModelRenderer(this, 0, 0);
        rock2.addBox(0F, 0F, 0F, 3, 3, 6);
        rock2.setRotationPoint(5F, 21F, -3F);
        rock2.setTextureSize(64, 32);
        rock2.mirror = true;
        setRotation(rock2, 0F, 0F, 0F);
        rock3 = new ModelRenderer(this, 0, 0);
        rock3.addBox(0F, 0F, 0F, 5, 3, 3);
        rock3.setRotationPoint(2.5F, 21F, -8F);
        rock3.setTextureSize(64, 32);
        rock3.mirror = true;
        setRotation(rock3, 0F, -0.5576792F, 0F);
        rock4 = new ModelRenderer(this, 0, 0);
        rock4.addBox(0F, 0F, 0F, 3, 2, 2);
        rock4.setRotationPoint(-2F, 22F, -7.5F);
        rock4.setTextureSize(64, 32);
        rock4.mirror = true;
        setRotation(rock4, 0F, 0F, 0F);
        rock5 = new ModelRenderer(this, 0, 0);
        rock5.addBox(0F, 0F, -2F, 7, 2, 2);
        rock5.setRotationPoint(-3.5F, 22F, 7.8F);
        rock5.setTextureSize(64, 32);
        rock5.mirror = true;
        setRotation(rock5, 0F, 0F, 0F);
        rock6 = new ModelRenderer(this, 0, 0);
        rock6.addBox(0F, 0F, 0F, 3, 3, 3);
        rock6.setRotationPoint(-5F, 21F, 3F);
        rock6.setTextureSize(64, 32);
        rock6.mirror = true;
        setRotation(rock6, 0F, -1.003822F, 0F);
        rock7 = new ModelRenderer(this, 0, 0);
        rock7.addBox(0F, 0F, 0F, 4, 3, 3);
        rock7.setRotationPoint(-7F, 21F, -4.5F);
        rock7.setTextureSize(64, 32);
        rock7.mirror = true;
        setRotation(rock7, 0F, 0.8551081F, 0F);
        rock8 = new ModelRenderer(this, 0, 0);
        rock8.addBox(0F, 0F, 0F, 3, 2, 6);
        rock8.setRotationPoint(-8F, 22F, -3F);
        rock8.setTextureSize(64, 32);
        rock8.mirror = true;
        setRotation(rock8, 0F, 0F, 0F);
        log3 = new ModelRenderer(this, 0, 16);
        log3.addBox(0F, 0F, 0F, 2, 9, 2);
        log3.setRotationPoint(0F, 16F, -1F);
        log3.setTextureSize(64, 32);
        log3.mirror = true;
        setRotation(log3, 0.3717861F, -1.487144F, -0.1487144F);
        log1 = new ModelRenderer(this, 8, 20);
        log1.addBox(0F, 0F, 0F, 2, 9, 2);
        log1.setRotationPoint(0F, 16F, -1F);
        log1.setTextureSize(64, 32);
        log1.mirror = true;
        setRotation(log1, -0.1487144F, 0F, -0.3717861F);
        log4 = new ModelRenderer(this, 0, 16);
        log4.addBox(0F, 0F, -2F, 2, 9, 2);
        log4.setRotationPoint(1F, 16F, 1F);
        log4.setTextureSize(64, 32);
        log4.mirror = true;
        setRotation(log4, -0.3346075F, 3.141593F, 0F);
        log2 = new ModelRenderer(this, 0, 20);
        log2.addBox(0F, 0F, 0F, 2, 9, 2);
        log2.setRotationPoint(1F, 16F, -1F);
        log2.setTextureSize(64, 32);
        log2.mirror = true;
        setRotation(log2, 0.2974289F, 3.141593F, 0F);
        down = new ModelRenderer(this, 32, 12);
        down.addBox(0F, 0F, 0F, 8, 1, 8);
        down.setRotationPoint(-4F, 15F, -4F);
        down.setTextureSize(64, 32);
        down.mirror = true;
        setRotation(down, 0F, 0F, 0F);
        wall1 = new ModelRenderer(this, 33, 0);
        wall1.addBox(0F, 0F, 0F, 1, 1, 8);
        wall1.setRotationPoint(-5F, 14F, -4F);
        wall1.setTextureSize(64, 32);
        wall1.mirror = true;
        setRotation(wall1, 0F, 0F, 0F);
        wall2 = new ModelRenderer(this, 33, 0);
        wall2.addBox(0F, 0F, 0F, 1, 1, 8);
        wall2.setRotationPoint(4F, 14F, -4F);
        wall2.setTextureSize(64, 32);
        wall2.mirror = true;
        setRotation(wall2, 0F, 0F, 0F);
        wall3 = new ModelRenderer(this, 33, 0);
        wall3.addBox(0F, 0F, 0F, 8, 1, 1);
        wall3.setRotationPoint(-4F, 14F, 4F);
        wall3.setTextureSize(64, 32);
        wall3.mirror = true;
        setRotation(wall3, 0F, 0F, 0F);
        wall4 = new ModelRenderer(this, 33, 0);
        wall4.addBox(0F, 0F, 0F, 8, 1, 1);
        wall4.setRotationPoint(-4F, 14F, -5F);
        wall4.setTextureSize(64, 32);
        wall4.mirror = true;
        setRotation(wall4, 0F, 0F, 0F);
        arm1 = new ModelRenderer(this, 33, 0);
        arm1.addBox(0F, 0F, 0F, 3, 1, 2);
        arm1.setRotationPoint(5F, 14F, -1F);
        arm1.setTextureSize(64, 32);
        arm1.mirror = true;
        setRotation(arm1, 0F, 0F, 0F);
        arm2 = new ModelRenderer(this, 9, 16);
        arm2.addBox(0F, 0F, 0F, 6, 2, 2);
        arm2.setRotationPoint(8F, 13.53333F, -1F);
        arm2.setTextureSize(64, 32);
        arm2.mirror = true;
        setRotation(arm2, 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);
        rock1.render(f5);
        rock2.render(f5);
        rock3.render(f5);
        rock4.render(f5);
        rock5.render(f5);
        rock6.render(f5);
        rock7.render(f5);
        rock8.render(f5);
        log3.render(f5);
        log1.render(f5);
        log4.render(f5);
        log2.render(f5);
    }

    private void setRotation(ModelRenderer model, float x, float y, float z){
        model.rotateAngleX = x;
        model.rotateAngleY = y;
        model.rotateAngleZ = z;
    }
}
В чем проблема?
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Подожди пару версий форджа пока примут айчуновский декодер моделей из Techne 2 и пользуйся ею.
 
771
5
Впервые слышу.
Ну что ж, будем ждать =)
 
Сверху