Как правильно поворачивать рендер в 1.15?

Версия Minecraft
1.15.2
107
2
2
Как нормально повернуть блок на какое-то кол-во градусов? раньше в GlStateManager.rotate писал градусы и ось. Сейчас надо писать matrixStackIn.rotate, но как этой штукой пользоваться я не понимаю. К примеру я пишу вот это matrixStackIn.rotate(new Quaternion(1,1,1,1));
и у меня выходит это.
unknown.png
 
Короче с помощью matrixStackIn.rotate(Vector3f.YP.rotationDegrees(angle)); я смог заставить крутиться блок. Но, как задать оффсет оси вокруг которой он должен крутиться?
Блок должен крутиться вокруг своего центра, а не своего края.
render.png
 
Сдвигай на (0.5, 0, 0.5), поворачиай, потом сдвигай на (-0.5, 0, -0.5)
 
работает, спасибо. но я не очень понимаю как это работает. Я сначала определяю координаты и только в самом конце рендерю. Разве оно не должно работать только если renderBlock будет после rotate?
matrixStackIn.translate(0.5,0,0.5);
matrixStackIn.rotate(Vector3f.YP.rotationDegrees(angle));
matrixStackIn.translate(-0.5,0,-0.5);
BlockRendererDispatcher blockRenderer = Minecraft.getInstance().getBlockRendererDispatcher();
BlockState state = Blocks.GLASS.getDefaultState();
blockRenderer.renderBlock(state, matrixStackIn, bufferIn, combinedLightIn, combinedOverlayIn, EmptyModelData.INSTANCE);
 
Изначально объекты вращаются вокруг (0,0,0)
Попробуй взять вещественный кубик и покрутить в руках, симулируя translate-rotate

Каждая операция над matrixStackIn зависит от предыдущего состояния, установленного предыдущими операциями, поэтому их порядок важен
 
Назад
Сверху