Перейти к содержанию

[Dragon Age 2] Преобразование координат


Рекомендуемые сообщения

8 часов назад, JustHack сказал:

Через функцию WorldToScreen

Какой смысл в этом посте? Просто чтобы что то написать? Спасибо за "полезную" инфу.

Может кто нибудь подскажет хотя бы как  найти матрицу вида и матрицу проекции и как они выглядят в памяти игры?

Ссылка на комментарий
Поделиться на другие сайты

18 минут назад, User32 сказал:

Может кто нибудь подскажет хотя бы как  найти матрицу вида и матрицу проекции и как они выглядят в памяти игры?

Игра не указана ведь. Чтобы был ответ, который реально тебе поможет, стоит заполнять первый пост подробней. Что уже есть, что хочешь от созданной тобой темы? Восстанавливай функцию, которая рендерит кадр, восстановишь функцию - найдешь указатель на массив 4х4 это и будет видовая матрица.

 

18 минут назад, User32 сказал:

Какой смысл в этом посте?

Это ответ на поставленный тобой вопрос, где-то в первом посте ты упоминал о видовой матрице и что тебе надо именно её найти? Или отвечающие на тему должны читать мысли?

 


 

  • Понравилось 1
Ссылка на комментарий
Поделиться на другие сайты

25 минут назад, partoftheworlD сказал:

Игра не указана ведь.

Меня интересует вообще алгоритм действий. Наверняка он схож для любых игр. А так игра Dragon Age 2.

26 минут назад, partoftheworlD сказал:

Что уже есть, что хочешь от созданной тобой темы?

Сделал хук present'а, нашел координаты некоторых объектов. Хочу узнать как перевести 3d координаты объекта в игровом мире в 2d экранные координаты для последующей отрисовки. Собственно как и написал. Меня интересует алгоритм действий.

 

29 минут назад, partoftheworlD сказал:

Это ответ на поставленный тобой вопрос, где-то в первом посте ты упоминал о видовой матрице и что тебе надо именно её найти?

Нет это не ответ на мой вопрос, речь шла о преобразовании координат, а чтобы применять указанную функцию её сначала нужно написать, но для этого и нужно знать как их преобразовывать. То есть ответ по сути бессмысленный.

8 минут назад, JustHack сказал:

Если бы ты не был настолько ленивый, ты нашел бы в гугле эту функцию, а не спрашивал, где взять её.

Ну находил я на гугле разные реализации и что толку? Исходники сами себя не объясняют, а те кто их пишет не особо заморачиваются комментированием кода. Например какие данные берутся из игры? Используются указатели на какие то структуры но что это за структуры?

14 минут назад, JustHack сказал:

Если бы ты не был настолько ленивый, ты нашел всю инфу по этой теме на форуме.

Пока ничего, что бы мне помогло, не нашел.

Ссылка на комментарий
Поделиться на другие сайты

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 и т.д.

Ссылка на комментарий
Поделиться на другие сайты

50 минут назад, mrPTyshnik сказал:

да хоть у Кенга: ТЫК

Я не особо вникал в DirectX9  и он не объяснял этот код, а просто скопипастить тут не получится.

52 минуты назад, partoftheworlD сказал:

g_pEngine

Можно узнать, что представляет собой класс этого объекта?

54 минуты назад, partoftheworlD сказал:

Способы нахождения матрицы:

Какой матрицы? Вообще, насколько мне известно, для преобразования используют две матрицы. 

Ссылка на комментарий
Поделиться на другие сайты

Только что, User32 сказал:

Вообще, насколько мне известно, для преобразования используют две матрицы. 

 

Зачем тебе матрица проекции для преобразования 2-х мерных есп боксов? Или это такой новый тренд, придавать всему двухмерному объем? Просто, у меня были знакомые девушки, которые так делали.

  • Смешно 1
Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, partoftheworlD сказал:

 

Зачем тебе матрица проекции для преобразования 2-х мерных есп боксов? Или это такой новый тренд, придавать всему двухмерному объем? Просто, у меня были знакомые девушки, которые так делали.

Может он 3-х мерный бокс хочет? 

Ссылка на комментарий
Поделиться на другие сайты

8 часов назад, MEDBEDb сказал:

Может он 3-х мерный бокс хочет? 

Это немного не так работает, даже если ты будешь рисовать 3-х мерный бокс, делать это все равно придётся в 2-х мерном пространстве. Матрица проекции нужна скорее для создания выпуклостей/впуклостей, что-то типа линзы "рыбьего глаза" 

Ссылка на комментарий
Поделиться на другие сайты

13 часов назад, partoftheworlD сказал:

Зачем тебе матрица проекции

Например, чтобы линию начертить между объектами или скелеты моделей.

1 час назад, partoftheworlD сказал:

Матрица проекции нужна скорее для создания выпуклостей/впуклостей

А разве это не в результате проецирования объемных объектов на плоскость получается?

Изменено пользователем User32
Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, User32 сказал:

Например, чтобы линию начертить между объектами или скелеты моделей.

А разве для этого не видовая матрица используется?

3 часа назад, User32 сказал:

А разве это не в результате проецирования объемных объектов на плоскость получается?

 

Не знаю, я гуманитарий, поэтому использую, то что есть у разработчиков.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.