Вопрос Проблема с матрицей 1.20.1

Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
326
Реакции[?]
24
Поинты[?]
12K

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Короче я пытаюсь создать ChestESP (я смотрел в ресы вурста токо там много мусора бесполезного).

Мой куб отрисовывается почемуто не в точной позиции сундука, а где-то сбоку или сзади, ну короче неправильно.


А вот сообственно код, и я более чем уверен что проблема связанна с матрицами. Ну типа я имею понимание матриц, но чето оно не работает, как планировано.



Java:
            Tesselator tessellator = Tesselator.getInstance();
            BufferBuilder bufferBuilder = tessellator.getBuilder();

            RenderSystem.setShader(GameRenderer::getPositionColorShader);
           
            RenderSystem.setShaderColor(r, g, b, a);
           

            RenderSystem.disableDepthTest();
            RenderSystem.depthMask(false);

            RenderSystem.lineWidth(1.5F);
            RenderSystem.enableBlend();
            RenderSystem.blendFunc(770, 771);

            var fbWidth = mc.getWindow().getWidth();
            var fbHeight = mc.getWindow().getHeight();
            // Save the current model-view matrix
            Matrix4f modelViewMatrixBackup = RenderSystem.getModelViewMatrix();

            // Set identity model-view matrix
            RenderSystem.getModelViewMatrix().identity();

            // Apply translation to model-view matrix (position relative to camera)
            RenderSystem.getModelViewMatrix().translate(-(float)CameraPos.x(),
                    -(float)CameraPos.y(),
                    -(float)CameraPos.z());

           // Backup and set up projection matrix
            RenderSystem.backupProjectionMatrix();
// если что public static float TempFloat = 1.4835298F;
            Matrix4f projectionMatrix = new Matrix4f().setPerspective(UI.TempFloat, 
                    (float)fbWidth / (float)fbHeight, 0.1f, mc.gameRenderer.getDepthFar());
            RenderSystem.setProjectionMatrix(projectionMatrix, VertexSorting.DISTANCE_TO_ORIGIN);
           // Apply the model-view matrix
            RenderSystem.applyModelViewMatrix();

             

            bufferBuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);
            ...
 
Забаненный
Статус
Оффлайн
Регистрация
29 Дек 2023
Сообщения
138
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Rarchik:
Tesselator tessellator = Tesselator.getInstance();
BufferBuilder bufferBuilder = tessellator.getBuilder();

RenderSystem.setShader(GameRenderer::getPositionColorShader);

RenderSystem.setShaderColor(r, g, b, a);

RenderSystem.disableDepthTest();
RenderSystem.depthMask(false);

RenderSystem.lineWidth(1.5F);
RenderSystem.enableBlend();
RenderSystem.blendFunc(770, 771);

var fbWidth = mc.getWindow().getWidth();
var fbHeight = mc.getWindow().getHeight();

// Сохранение матрицы
Matrix4f modelViewMatrixBackup = RenderSystem.getModelViewMatrix().copy();

// Установка мотриса
RenderSystem.getModelViewMatrix().loadIdentity();

// вроде фикс
RenderSystem.getModelViewMatrix().translate(-(float)CameraPos.x(), -(float)CameraPos.y(), -(float)CameraPos.z());

// сохранение
RenderSystem.backupProjectionMatrix();

// Устанавовка матрицы
float aspectRatio = (float)fbWidth / (float)fbHeight;
Matrix4f projectionMatrix = Matrix4f.perspective(UI.TempFloat, aspectRatio, 0.1f, mc.gameRenderer.getDepthFar());
RenderSystem.setProjectionMatrix(projectionMatrix);

// применение
RenderSystem.applyModelViewProjectionMatrix();

// отрисовка
bufferBuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);

// добавь свою хуйню

// конец
tessellator.end();
 
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
326
Реакции[?]
24
Поинты[?]
12K
неа
Rarchik:
Tesselator tessellator = Tesselator.getInstance();
BufferBuilder bufferBuilder = tessellator.getBuilder();

RenderSystem.setShader(GameRenderer::getPositionColorShader);

RenderSystem.setShaderColor(r, g, b, a);

RenderSystem.disableDepthTest();
RenderSystem.depthMask(false);

RenderSystem.lineWidth(1.5F);
RenderSystem.enableBlend();
RenderSystem.blendFunc(770, 771);

var fbWidth = mc.getWindow().getWidth();
var fbHeight = mc.getWindow().getHeight();

// Сохранение матрицы
Matrix4f modelViewMatrixBackup = RenderSystem.getModelViewMatrix().copy();

// Установка мотриса
RenderSystem.getModelViewMatrix().loadIdentity();

// вроде фикс
RenderSystem.getModelViewMatrix().translate(-(float)CameraPos.x(), -(float)CameraPos.y(), -(float)CameraPos.z());

// сохранение
RenderSystem.backupProjectionMatrix();

// Устанавовка матрицы
float aspectRatio = (float)fbWidth / (float)fbHeight;
Matrix4f projectionMatrix = Matrix4f.perspective(UI.TempFloat, aspectRatio, 0.1f, mc.gameRenderer.getDepthFar());
RenderSystem.setProjectionMatrix(projectionMatrix);

// применение
RenderSystem.applyModelViewProjectionMatrix();

// отрисовка
bufferBuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);

// добавь свою хуйню

// конец
tessellator.end();
неа, не помогло.
Я на 1.20.1 тут нету функи loadEntity(). Есть только Identity.

Вот фулл код, учти что это 1.20.1 фордж:

Java:
Вот так я вызываю функу
Vec3 renderOffset = mc.gameRenderer.getMainCamera().getPosition();


BlockPos chestPos = blockEntity.getBlockPos();
drawBoundingBox(new AABB(chestPos), 0x9600FF00, renderOffset);





private void drawBoundingBox(AABB boundingBox, int color, Vec3 CameraPos) {
float r = ((color >> 16) & 0xFF) / 255.0F;
float g = ((color >> 8) & 0xFF) / 255.0F;
float b = (color & 0xFF) / 255.0F;
float a = ((color >> 24) & 0xFF) / 255.0F;

Tesselator tessellator = Tesselator.getInstance();
BufferBuilder bufferBuilder = tessellator.getBuilder();

RenderSystem.setShader(GameRenderer::getPositionColorShader);
// RenderSystem.setShader(GameRenderer::getPositionShader);
RenderSystem.setShaderColor(r, g, b, a);
// Save Matrix

RenderSystem.disableDepthTest();
RenderSystem.depthMask(false);

RenderSystem.lineWidth(1.5F);
RenderSystem.enableBlend();
RenderSystem.blendFunc(770, 771);




var fbWidth = mc.getWindow().getWidth();
var fbHeight = mc.getWindow().getHeight();
// Save the current model-view matrix
Matrix4f modelViewMatrixBackup = new Matrix4f(RenderSystem.getModelViewMatrix());

// Set identity model-view matrix

RenderSystem.getModelViewMatrix().identity();
// Apply translation to model-view matrix (position relative to camera)
RenderSystem.getModelViewMatrix().translate(-(float)CameraPos.x(),
-(float)CameraPos.y(),
-(float)CameraPos.z());

// Backup and set up projection matrix
RenderSystem.backupProjectionMatrix();
Matrix4f projectionMatrix = new Matrix4f().setPerspective(UI.TempFloat,
(float)fbWidth / (float)fbHeight, 0.1f, mc.gameRenderer.getDepthFar());
RenderSystem.setProjectionMatrix(projectionMatrix, VertexSorting.DISTANCE_TO_ORIGIN);

RenderSystem.applyModelViewMatrix();


// Apply the model-view matrix

bufferBuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);


// Transformation from CameraSpace to WorldSpace
float minX = (float) (boundingBox.minX - CameraPos.x());
float minY = (float) (boundingBox.minY - CameraPos.y());
float minZ = (float) (boundingBox.minZ - CameraPos.z());
float maxX = (float) (boundingBox.maxX - CameraPos.x());
float maxY = (float) (boundingBox.maxY - CameraPos.y());
float maxZ = (float) (boundingBox.maxZ - CameraPos.z());


// Front face
bufferBuilder.vertex(minX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, minZ).color(r, g, b, a).endVertex();

// Back face
bufferBuilder.vertex(maxX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, maxZ).color(r, g, b, a).endVertex();

// Left face
bufferBuilder.vertex(minX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, maxZ).color(r, g, b, a).endVertex();

// Right face
bufferBuilder.vertex(maxX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, minZ).color(r, g, b, a).endVertex();

// Top face
bufferBuilder.vertex(minX, maxY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, maxZ).color(r, g, b, a).endVertex();

// Bottom face
bufferBuilder.vertex(minX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, minY, minZ).color(r, g, b, a).endVertex();


tessellator.end();


// Restore the previous matrix
RenderSystem.depthMask(true);
RenderSystem.enableDepthTest();
RenderSystem.restoreProjectionMatrix();
RenderSystem.getModelViewMatrix().set(modelViewMatrixBackup);

RenderSystem.disableBlend();

RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.applyModelViewMatrix();

}





А вот что происходит когда отхожу дальше:
 
Забаненный
Статус
Оффлайн
Регистрация
29 Дек 2023
Сообщения
138
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
неа

неа, не помогло.
Я на 1.20.1 тут нету функи loadEntity(). Есть только Identity.

Вот фулл код, учти что это 1.20.1 фордж:

Java:
Вот так я вызываю функу
Vec3 renderOffset = mc.gameRenderer.getMainCamera().getPosition();


BlockPos chestPos = blockEntity.getBlockPos();
drawBoundingBox(new AABB(chestPos), 0x9600FF00, renderOffset);





private void drawBoundingBox(AABB boundingBox, int color, Vec3 CameraPos) {
float r = ((color >> 16) & 0xFF) / 255.0F;
float g = ((color >> 8) & 0xFF) / 255.0F;
float b = (color & 0xFF) / 255.0F;
float a = ((color >> 24) & 0xFF) / 255.0F;

Tesselator tessellator = Tesselator.getInstance();
BufferBuilder bufferBuilder = tessellator.getBuilder();

RenderSystem.setShader(GameRenderer::getPositionColorShader);
// RenderSystem.setShader(GameRenderer::getPositionShader);
RenderSystem.setShaderColor(r, g, b, a);
// Save Matrix

RenderSystem.disableDepthTest();
RenderSystem.depthMask(false);

RenderSystem.lineWidth(1.5F);
RenderSystem.enableBlend();
RenderSystem.blendFunc(770, 771);




var fbWidth = mc.getWindow().getWidth();
var fbHeight = mc.getWindow().getHeight();
// Save the current model-view matrix
Matrix4f modelViewMatrixBackup = new Matrix4f(RenderSystem.getModelViewMatrix());

// Set identity model-view matrix

RenderSystem.getModelViewMatrix().identity();
// Apply translation to model-view matrix (position relative to camera)
RenderSystem.getModelViewMatrix().translate(-(float)CameraPos.x(),
-(float)CameraPos.y(),
-(float)CameraPos.z());

// Backup and set up projection matrix
RenderSystem.backupProjectionMatrix();
Matrix4f projectionMatrix = new Matrix4f().setPerspective(UI.TempFloat,
(float)fbWidth / (float)fbHeight, 0.1f, mc.gameRenderer.getDepthFar());
RenderSystem.setProjectionMatrix(projectionMatrix, VertexSorting.DISTANCE_TO_ORIGIN);

RenderSystem.applyModelViewMatrix();


// Apply the model-view matrix

bufferBuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);


// Transformation from CameraSpace to WorldSpace
float minX = (float) (boundingBox.minX - CameraPos.x());
float minY = (float) (boundingBox.minY - CameraPos.y());
float minZ = (float) (boundingBox.minZ - CameraPos.z());
float maxX = (float) (boundingBox.maxX - CameraPos.x());
float maxY = (float) (boundingBox.maxY - CameraPos.y());
float maxZ = (float) (boundingBox.maxZ - CameraPos.z());


// Front face
bufferBuilder.vertex(minX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, minZ).color(r, g, b, a).endVertex();

// Back face
bufferBuilder.vertex(maxX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, maxZ).color(r, g, b, a).endVertex();

// Left face
bufferBuilder.vertex(minX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, maxZ).color(r, g, b, a).endVertex();

// Right face
bufferBuilder.vertex(maxX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, minZ).color(r, g, b, a).endVertex();

// Top face
bufferBuilder.vertex(minX, maxY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, maxY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, maxY, maxZ).color(r, g, b, a).endVertex();

// Bottom face
bufferBuilder.vertex(minX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, minY, maxZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(maxX, minY, minZ).color(r, g, b, a).endVertex();
bufferBuilder.vertex(minX, minY, minZ).color(r, g, b, a).endVertex();


tessellator.end();


// Restore the previous matrix
RenderSystem.depthMask(true);
RenderSystem.enableDepthTest();
RenderSystem.restoreProjectionMatrix();
RenderSystem.getModelViewMatrix().set(modelViewMatrixBackup);

RenderSystem.disableBlend();

RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.applyModelViewMatrix();

}





А вот что происходит когда отхожу дальше:
Java:
float minX = (float) (boundingBox.minX + renderOffset.x());
float minY = (float) (boundingBox.minY + renderOffset.y());
float minZ = (float) (boundingBox.minZ + renderOffset.z());
float maxX = (float) (boundingBox.maxX + renderOffset.x());
float maxY = (float) (boundingBox.maxY + renderOffset.y());
float maxZ = (float) (boundingBox.maxZ + renderOffset.z());
мб проблема связанная с тем что ты получаешь координаты относительно камеры, попробуй через renderOffset. или такого нету в 1.120 фордже?
 
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
326
Реакции[?]
24
Поинты[?]
12K
Это и есть CameraPos. Я просто так криво назвал в начале RenderOffset.А так по сути это позиция камеры в мире.(ну то что я вижу типа )
 
Пользователь
Статус
Оффлайн
Регистрация
25 Окт 2023
Сообщения
76
Реакции[?]
28
Поинты[?]
25K
Это и есть CameraPos. Я просто так криво назвал в начале RenderOffset.А так по сути это позиция камеры в мире.(ну то что я вижу типа )
Java:
по идеи вот так надо

float minX = (float) (boundingBox.minX - renderOffset.x());
float minY = (float) (boundingBox.minY - renderOffset.y());
float minZ = (float) (boundingBox.minZ - renderOffset.z());
float maxX = (float) (boundingBox.maxX + renderOffset.x());
float maxY = (float) (boundingBox.maxY + renderOffset.y());
float maxZ = (float) (boundingBox.maxZ + renderOffset.z());

но вот второй вариант

float minX = (float) (boundingBox.minX + renderOffset.x());
float minY = (float) (boundingBox.minY + renderOffset.y());
float minZ = (float) (boundingBox.minZ + renderOffset.z());
float maxX = (float) (boundingBox.maxX - renderOffset.x());
float maxY = (float) (boundingBox.maxY - renderOffset.y());
float maxZ = (float) (boundingBox.maxZ - renderOffset.z());
p.s не шарю за mc
 
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
326
Реакции[?]
24
Поинты[?]
12K
Не,с этими значениями всё норм. Тут проблема с матрицами (указано в названии треда). Я чето не делаю, и поэтому не получается
 
Пользователь
Статус
Оффлайн
Регистрация
25 Окт 2023
Сообщения
76
Реакции[?]
28
Поинты[?]
25K
Не,с этими значениями всё норм. Тут проблема с матрицами (указано в названии треда). Я чето не делаю, и поэтому не получается
ну попробуй хотябы
Не,с этими значениями всё норм. Тут проблема с матрицами (указано в названии треда). Я чето не делаю, и поэтому не получается
и у тебя z координата съезжает, копай по ней
Java:
// Apply translation to model-view matrix (position relative to camera)
RenderSystem.getModelViewMatrix().translate(-(float)CameraPos.x(),
-(float)CameraPos.y(),
(float)CameraPos.z());

попробуй так
 
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
326
Реакции[?]
24
Поинты[?]
12K
ну попробуй хотябы

и у тебя z координата съезжает, копай по ней
Java:
// Apply translation to model-view matrix (position relative to camera)
RenderSystem.getModelViewMatrix().translate(-(float)CameraPos.x(),
-(float)CameraPos.y(),
(float)CameraPos.z());

попробуй так
 
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
326
Реакции[?]
24
Поинты[?]
12K
Я убрал короче ProjectionMatrix, ибо оно вообще ничего не дает:

Java:
Matrix4f modelViewMatrixBackup = new Matrix4f(RenderSystem.getModelViewMatrix());
 

// Apply translation to model-view matrix (position relative to camera)
Camera camera = mc.gameRenderer.getMainCamera();
// Apply translation to model-view matrix (position relative to camera)
RenderSystem.getModelViewMatrix().identity();
RenderSystem.getModelViewMatrix().rotate(Axis.XN.rotationDegrees(camera.getXRot()));
RenderSystem.getModelViewMatrix().rotate(Axis.YP.rotationDegrees(camera.getYRot()+180.0f));


RenderSystem.getModelViewMatrix().translate(-(float)CameraPos.x(),
-(float)CameraPos.y(),
(float)CameraPos.z());

RenderSystem.getModelViewMatrix().rotate(Axis.XN.rotationDegrees(-camera.getXRot()));
RenderSystem.getModelViewMatrix().rotate(Axis.YP.rotationDegrees(camera.getYRot()));


RenderSystem.applyModelViewMatrix();

// Backup and set up projection matrix
RenderSystem.backupProjectionMatrix();
результат тот же, что и на скрине выше.
 
Privatny p100 DT Airlag Break LC Teleport Exploit
Участник
Статус
Оффлайн
Регистрация
27 Янв 2021
Сообщения
983
Реакции[?]
155
Поинты[?]
78K
У тебя матрица руки как будто бы юзается, а надо матрица при отрисовке мира, хз
 
Пользователь
Статус
Оффлайн
Регистрация
25 Окт 2023
Сообщения
76
Реакции[?]
28
Поинты[?]
25K
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
326
Реакции[?]
24
Поинты[?]
12K
Кароче прикол такой что в чистом клиенте все норм рабоиает, а когда запускаю с модами то вот та хрень происходит.
 
Сверху Снизу