вертел я этот рендер.

35
0
Код:
    @Override
    public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z,    float f) {
         int i = 0;

            if (tileEntity.hasWorldObj()) {
                i = tileEntity.getBlockMetadata();
            }
        GL11.glPushMatrix();
            GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
            switch (tileEntity.blockMetadata) {
            case 0:          
             GL11.glRotatef(180F, 1024F, 0F, -0.5F); //тут но господи! почему тут так?
                break;
            case 1:         
             GL11.glRotatef(180F, 0.5F, 0F, 0.5F);//тут тоже норм
                break;
            case 2:
                GL11.glRotatef(180F, 0F, 0F, 1F);//и тут норм
                break;
            case 3:
             GL11.glRotatef(180F, -1F, 0F, 1F);//тут норм
                break;
        }
            this.bindTexture(texture);
            
            GL11.glPushMatrix();
                this.model.renderModel(0.0625F);
                GL11.glPopMatrix();
                
            GL11.glPopMatrix();
        
    }
в общем, мне просто интересно, почему только так получилось повернуть на нужный угол?)) от начального положения мне нужно было всеголишь 90 градусов, а в итоге пришлось аж 1024 по 180 градусов вертеть.
 
Себя поверти.
Потому что последние 3 аргумента функции glRotate - составляющие вектора поворота, который потом нормируется (приводится в вектор единичной длины).
ie4VQ4a.png

Сначала ты поворачивал вокруг вектора (1F, 0F, -0.5F), подозреваю, потом ты стал удлинять вектор по X, и он по направлению всё больше приближался к нужному тебе (1F, 0F, 0F), поэтому тебе казалось, что ты идёшь в правильном направлении.

Попробуй
Код:
GL11.glRotatef(180F, 1F, 0F, 0F); //отвечаю, будет ещё лучше
 
эээх) жаль я тогда когда делал этот поворот, не написал) помню мы даже ставки делали на каком повороте нормально будет :D но главное работает)) Спасибо за полезную инфу :3
 
Назад
Сверху