User32 Опубликовано 27 ноября, 2018 Поделиться Опубликовано 27 ноября, 2018 Всем привет. Может ли кто нибудь подсказать как преобразовать координаты объекта в игровом мире в экранные? Ссылка на комментарий Поделиться на другие сайты Поделиться
JustHack Опубликовано 27 ноября, 2018 Поделиться Опубликовано 27 ноября, 2018 (изменено) [censored] Изменено 11 апреля, 2020 пользователем JustHack Ссылка на комментарий Поделиться на другие сайты Поделиться
User32 Опубликовано 27 ноября, 2018 Автор Поделиться Опубликовано 27 ноября, 2018 2 часа назад, JustHack сказал: Через функцию WorldToScreen И где же её взять? Ссылка на комментарий Поделиться на другие сайты Поделиться
User32 Опубликовано 27 ноября, 2018 Автор Поделиться Опубликовано 27 ноября, 2018 8 часов назад, JustHack сказал: Через функцию WorldToScreen Какой смысл в этом посте? Просто чтобы что то написать? Спасибо за "полезную" инфу. Может кто нибудь подскажет хотя бы как найти матрицу вида и матрицу проекции и как они выглядят в памяти игры? Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 27 ноября, 2018 Поделиться Опубликовано 27 ноября, 2018 18 минут назад, User32 сказал: Может кто нибудь подскажет хотя бы как найти матрицу вида и матрицу проекции и как они выглядят в памяти игры? Игра не указана ведь. Чтобы был ответ, который реально тебе поможет, стоит заполнять первый пост подробней. Что уже есть, что хочешь от созданной тобой темы? Восстанавливай функцию, которая рендерит кадр, восстановишь функцию - найдешь указатель на массив 4х4 это и будет видовая матрица. 18 минут назад, User32 сказал: Какой смысл в этом посте? Это ответ на поставленный тобой вопрос, где-то в первом посте ты упоминал о видовой матрице и что тебе надо именно её найти? Или отвечающие на тему должны читать мысли? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
JustHack Опубликовано 27 ноября, 2018 Поделиться Опубликовано 27 ноября, 2018 (изменено) [censored] Изменено 11 апреля, 2020 пользователем JustHack Ссылка на комментарий Поделиться на другие сайты Поделиться
User32 Опубликовано 27 ноября, 2018 Автор Поделиться Опубликовано 27 ноября, 2018 25 минут назад, partoftheworlD сказал: Игра не указана ведь. Меня интересует вообще алгоритм действий. Наверняка он схож для любых игр. А так игра Dragon Age 2. 26 минут назад, partoftheworlD сказал: Что уже есть, что хочешь от созданной тобой темы? Сделал хук present'а, нашел координаты некоторых объектов. Хочу узнать как перевести 3d координаты объекта в игровом мире в 2d экранные координаты для последующей отрисовки. Собственно как и написал. Меня интересует алгоритм действий. 29 минут назад, partoftheworlD сказал: Это ответ на поставленный тобой вопрос, где-то в первом посте ты упоминал о видовой матрице и что тебе надо именно её найти? Нет это не ответ на мой вопрос, речь шла о преобразовании координат, а чтобы применять указанную функцию её сначала нужно написать, но для этого и нужно знать как их преобразовывать. То есть ответ по сути бессмысленный. 8 минут назад, JustHack сказал: Если бы ты не был настолько ленивый, ты нашел бы в гугле эту функцию, а не спрашивал, где взять её. Ну находил я на гугле разные реализации и что толку? Исходники сами себя не объясняют, а те кто их пишет не особо заморачиваются комментированием кода. Например какие данные берутся из игры? Используются указатели на какие то структуры но что это за структуры? 14 минут назад, JustHack сказал: Если бы ты не был настолько ленивый, ты нашел всю инфу по этой теме на форуме. Пока ничего, что бы мне помогло, не нашел. Ссылка на комментарий Поделиться на другие сайты Поделиться
mrPTyshnik Опубликовано 27 ноября, 2018 Поделиться Опубликовано 27 ноября, 2018 6 часов назад, User32 сказал: И где же её взять? да хоть у Кенга: ТЫК Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 27 ноября, 2018 Поделиться Опубликовано 27 ноября, 2018 7 минут назад, User32 сказал: но для этого и нужно знать как их преобразовывать Спойлер bool world_to_screen(vector3 vOrigin, vector3 &vScreen) { auto& matrix = g_pEngine->WorldToScreenMatrix(); int ScrW, ScrH; g_pEngine->GetScreenSize(ScrW, ScrH); float w = matrix[3][0] * vOrigin[0] + matrix[3][1] * vOrigin[1] + matrix[3][2] * vOrigin[2] + matrix[3][3]; if (w > 0.01) { float inverseWidth = 1 / w; vScreen.x = (ScrW / 2) + (0.5 * ((matrix[0][0] * vOrigin[0] + matrix[0][1] * vOrigin[1] + matrix[0][2] * vOrigin[2] + matrix[0][3]) * inverseWidth) * ScrW + 0.5); vScreen.y = (ScrH / 2) - (0.5 * ((matrix[1][0] * vOrigin[0] + matrix[1][1] * vOrigin[1] + matrix[1][2] * vOrigin[2] + matrix[1][3]) * inverseWidth) * ScrH + 0.5); vScreen.z = 0; return true; } return false; } Способы нахождения матрицы: - Реверс функции, которая рисует кадр - Мотание камеры и поиск неизвестного значения, какого значения не известно, все зависит от движка, в шутерах в основном это значения от -1 до 1, в играх от третьего лица, может быть все что угодно, но обычно значение среднее, что-то около -5 до 5. Единственное что общее это изменение 16 значений, при повороте камеры на фиксированное значение от -1 до 1, -5 до 5 и т.д. Ссылка на комментарий Поделиться на другие сайты Поделиться
JustHack Опубликовано 27 ноября, 2018 Поделиться Опубликовано 27 ноября, 2018 (изменено) [censored] Изменено 11 апреля, 2020 пользователем JustHack Ссылка на комментарий Поделиться на другие сайты Поделиться
User32 Опубликовано 27 ноября, 2018 Автор Поделиться Опубликовано 27 ноября, 2018 50 минут назад, mrPTyshnik сказал: да хоть у Кенга: ТЫК Я не особо вникал в DirectX9 и он не объяснял этот код, а просто скопипастить тут не получится. 52 минуты назад, partoftheworlD сказал: g_pEngine Можно узнать, что представляет собой класс этого объекта? 54 минуты назад, partoftheworlD сказал: Способы нахождения матрицы: Какой матрицы? Вообще, насколько мне известно, для преобразования используют две матрицы. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 27 ноября, 2018 Поделиться Опубликовано 27 ноября, 2018 Только что, User32 сказал: Вообще, насколько мне известно, для преобразования используют две матрицы. Зачем тебе матрица проекции для преобразования 2-х мерных есп боксов? Или это такой новый тренд, придавать всему двухмерному объем? Просто, у меня были знакомые девушки, которые так делали. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
MEDBEDb Опубликовано 28 ноября, 2018 Поделиться Опубликовано 28 ноября, 2018 3 часа назад, partoftheworlD сказал: Зачем тебе матрица проекции для преобразования 2-х мерных есп боксов? Или это такой новый тренд, придавать всему двухмерному объем? Просто, у меня были знакомые девушки, которые так делали. Может он 3-х мерный бокс хочет? Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 28 ноября, 2018 Поделиться Опубликовано 28 ноября, 2018 8 часов назад, MEDBEDb сказал: Может он 3-х мерный бокс хочет? Это немного не так работает, даже если ты будешь рисовать 3-х мерный бокс, делать это все равно придётся в 2-х мерном пространстве. Матрица проекции нужна скорее для создания выпуклостей/впуклостей, что-то типа линзы "рыбьего глаза" Ссылка на комментарий Поделиться на другие сайты Поделиться
User32 Опубликовано 28 ноября, 2018 Автор Поделиться Опубликовано 28 ноября, 2018 (изменено) 13 часов назад, partoftheworlD сказал: Зачем тебе матрица проекции Например, чтобы линию начертить между объектами или скелеты моделей. 1 час назад, partoftheworlD сказал: Матрица проекции нужна скорее для создания выпуклостей/впуклостей А разве это не в результате проецирования объемных объектов на плоскость получается? Изменено 28 ноября, 2018 пользователем User32 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 28 ноября, 2018 Поделиться Опубликовано 28 ноября, 2018 3 часа назад, User32 сказал: Например, чтобы линию начертить между объектами или скелеты моделей. А разве для этого не видовая матрица используется? 3 часа назад, User32 сказал: А разве это не в результате проецирования объемных объектов на плоскость получается? Не знаю, я гуманитарий, поэтому использую, то что есть у разработчиков. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения