Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос [Решено] Как получить Yaw и Pitch на OpenGL

VibeCoder
EXCLUSIVE
EXCLUSIVE
Статус
Оффлайн
Регистрация
26 Май 2019
Сообщения
257
Реакции
43
Привет. Возникла проблема, что не получается получить Yaw и Pitch на чистом OpenGL C++ чисто на хуках.
Есть кто смог получить? Или есть какие-то наводки?
Пытался хукать разные функции, одно говно. Матрицы тоже хукал, не помогло.
Прошу о помощи.
 
OpenGL это движок для отрисовки, ты ему даёшь координаты, а он на экране тебе их рисует цветом. причём тут нахуй поворот через углы эйлера (надеюсь тебе не надо объяснять что yaw, pitch, roll так называются?)
 
Последнее редактирование модератором:
OpenGL это движок для отрисовки, ты ему даёшь координаты, а он на экране тебе их рисует цветом. причём тут нахуй поворот через углы эйлера (надеюсь тебе не надо объяснять что yaw, pitch, roll так называются?)
да фто ты такое говоришь. А хук ротации тебе говорит о чём-то?
 
Последнее редактирование модератором:
да фто ты такое говоришь. А хук ротации тебе говорит о чём-то?
хук ротации нахуй, ты либо общайся так, чтобы тебя все понимали, говори какую функцию ты хукаешь, либо сам решай свои проблемы. хуйню несёшь
 
хук ротации нахуй, ты либо общайся так, чтобы тебя все понимали, говори какую функцию ты хукаешь, либо сам решай свои проблемы. хуйню несёшь
glRotatef. ну можно и матрицы похукать, но там сложней
 
мдам, старая версия огл. интересно, а как же ты будешь фильтровать эти вызовы? м?

прикинь если тебе рассказать, что glRotatef использовали лет 100 назад, а щас у всех шейдеры и матрицы
 
мдам, старая версия огл. интересно, а как же ты будешь фильтровать эти вызовы? м?

прикинь если тебе рассказать, что glRotatef использовали лет 100 назад, а щас у всех шейдеры и матрицы
вот в этом и вопрос. по этому я и создал тему. вот чего я пока что добился, хукая glRotatef
Да хуйня, но всё-же хоть что-то
C++:
Expand Collapse Copy
void __stdcall myglRotatef(float angle, float x, float y, float z)
{
    const float epsilon = 1e-6f;
    float modelview[16]{};
    glGetFloatv(GL_MODELVIEW_MATRIX, modelview);
    float dist = sqrtf(modelview[12] * modelview[12] + modelview[13] * modelview[13] + modelview[14] * modelview[14]);

    if (dist < 0.0001f) {
        if (fabs(x - 1.0f) < epsilon && fabs(y) < epsilon && fabs(z) < epsilon) {
            float player_pitch = angle;

            player_pitch = fmod(player_pitch + 180.0f, 360.0f) - 180.0f;

            if (player_pitch > 90.0f) {
                player_pitch = 180.0f - player_pitch;
            }
            else if (player_pitch < -90.0f) {
                player_pitch = -180.0f - player_pitch;
            }

            if (player_pitch > 89.999f) player_pitch = 90.0f;
            if (player_pitch < -89.999f) player_pitch = -90.0f;

            if(player_pitch != 0)
            printf("Player Pitch: %.2f\n", player_pitch);
        }
        else if (fabs(x) < epsilon && fabs(y - 1.0f) < epsilon && fabs(z) < epsilon) {

            float player_yaw = angle;

            player_yaw = fmod(player_yaw + 180.0f, 360.0f) - 180.0f;

            if (player_yaw != 0)
            printf("Player Yaw: %.2f\n", player_yaw);
        }
    }
    pglRotatef(angle, x, y, z);
}
 
вот в этом и вопрос. по этому я и создал тему. вот чего я пока что добился, хукая glRotatef
Да хуйня, но всё-же хоть что-то
C++:
Expand Collapse Copy
void __stdcall myglRotatef(float angle, float x, float y, float z)
{
    const float epsilon = 1e-6f;
    float modelview[16]{};
    glGetFloatv(GL_MODELVIEW_MATRIX, modelview);
    float dist = sqrtf(modelview[12] * modelview[12] + modelview[13] * modelview[13] + modelview[14] * modelview[14]);

    if (dist < 0.0001f) {
        if (fabs(x - 1.0f) < epsilon && fabs(y) < epsilon && fabs(z) < epsilon) {
            float player_pitch = angle;

            player_pitch = fmod(player_pitch + 180.0f, 360.0f) - 180.0f;

            if (player_pitch > 90.0f) {
                player_pitch = 180.0f - player_pitch;
            }
            else if (player_pitch < -90.0f) {
                player_pitch = -180.0f - player_pitch;
            }

            if (player_pitch > 89.999f) player_pitch = 90.0f;
            if (player_pitch < -89.999f) player_pitch = -90.0f;

            if(player_pitch != 0)
            printf("Player Pitch: %.2f\n", player_pitch);
        }
        else if (fabs(x) < epsilon && fabs(y - 1.0f) < epsilon && fabs(z) < epsilon) {

            float player_yaw = angle;

            player_yaw = fmod(player_yaw + 180.0f, 360.0f) - 180.0f;

            if (player_yaw != 0)
            printf("Player Yaw: %.2f\n", player_yaw);
        }
    }
    pglRotatef(angle, x, y, z);
}
а смысл от темы если ты уже всё сделал?

да, у тебя тут майн 1.12.2 который использует старый opengl. только теперь попробуй зайти на сервер с игроками
 
а смысл от темы если ты уже всё сделал?

да, у тебя тут майн 1.12.2 который использует старый opengl. только теперь попробуй зайти на сервер с игроками
На видосе видно, что ротация слетает. А мне нужно в рантайме получать нормально. Я делаю прод Cristalix, где ещё есть старый ogl. У меня отдельная тема с читом на него есть, фулл гл + память.

И на счёт мультиплеера. Всё работает там. А ставить bypass хуки, чтобы там затестить, впадлу.
 
На видосе видно, что ротация слетает. А мне нужно в рантайме получать нормально. Я делаю прод Cristalix, где ещё есть старый ogl. У меня отдельная тема с читом на него есть, фулл гл + память.
зачем это делать на хуках opengl?
 
зачем это делать на хуках opengl?
Чтобы сделать 1 раз, и забыть. Даже если игра обновится на новую версию, если в ogl не вырежут базовые функции, оно всё равно будет работать.

Кстати пытался через glTranslatef получить yaw pitch, что-то вроде находило, но тоже не то
 
Привет. Возникла проблема, что не получается получить Yaw и Pitch на чистом OpenGL C++ чисто на хуках.
Есть кто смог получить? Или есть какие-то наводки?
Пытался хукать разные функции, одно говно. Матрицы тоже хукал, не помогло.
Прошу о помощи.
не смешно.
хотяяя нет я погуглил узнал такое рил есть пон
 
Чтобы сделать 1 раз, и забыть. Даже если игра обновится на новую версию, если в ogl не вырежут базовые функции, оно всё равно будет работать.

Кстати пытался через glTranslatef получить yaw pitch, что-то вроде находило, но тоже не то
одни костыли. хукни glDrawElements или glEnd, отсортируй игрока по количеству вершин и если найдёшь - получи yaw pitch из видовой матрицы
 
одни костыли. хукни glDrawElements или glEnd, отсортируй игрока по количеству вершин и если найдёшь - получи yaw pitch из видовой матрицы
хукнул обе функции, по вершинам всё пусто, хз почему. попробовал вызвать через wglGetProcAddress, тоже результата 0
 
Решение: Используйте хуки на матрицы (и не только) (glPushMatrix, glMultMatrixf, glLoadMatrixf, glLoadIdentity, glRotatef, glTranslatef, wglSwapBuffers) и будет вам счастье.
 
Назад
Сверху Снизу