Как преобразовать картинку в другой вид по тестовой позиции с помощью трассировки лучей

Теперь я хочу обучить модель потерь на пути, и у меня есть изображение карты, и я хочу преобразовать эту карту в разные представления с помощью тестового местоположения (x, y)

Мне нужен алгоритм преобразования для получения множества различных видов карты в зависимости от места проведения теста. Теперь я могу показать пример этого (извините, это сложно описать)

Слева вверх находится карта с 4 столбцами, внизу справа - convert-new-map:

img

Я хочу использовать некоторый «источник света» (местоположение A) для проецирования на здание на карте, тогда какой-то свет будет заблокирован, и тогда мы получим тень в этом тестовом месте.

таким образом, тень от местоположения AP и тестового местоположения может представлять информацию об окружающей среде в этой области.

Если у вас есть идея решить эту проблему, дайте мне знать. заранее спасибо

Ченг Хун

После обсуждения и поиска в Google я обнаружил, что мне следует использовать некоторую технологию трассировки лучей для 2D-карты.

В моем исследовании у меня есть две точки, местоположение A и местоположение P на карте. А теперь я хочу использовать трассировку лучей, чтобы преобразовать карту, объединяющую два местоположения, в новый вид карты. В этом новом виде карты значок местоположение Точка находится в центре, тогда на исходной карте будет добавлена ​​тень от здания (назовем ее черным столбцом). Тогда эта новая карта является своего рода презентацией или описателем карты и двух точек расположения. Это то, чем я хочу заниматься.


person Hong Cheng    schedule 21.04.2017    source источник
comment
Поделитесь своими мыслями / результатами исследований. что ты уже испробовал?   -  person MrSmith42    schedule 21.04.2017
comment
публикация вашей почты на глобально доступной странице, как это, просто просит ботов забрать ее и злоупотребить ...   -  person Spektre    schedule 21.04.2017
comment
Мне нужна новая карта, чтобы описать или представить информацию на карте с двумя точками местоположения [И спасибо за комментарий MrSmith42 и Spektre]   -  person Hong Cheng    schedule 24.04.2017


Ответы (1)


вам нужно добавить дополнительные характеристики, например, карта является растровым изображением или вектором? Это не имеет ничего общего с преобразованием (отсюда и ретэг), вы просто хотите отобразить вашу 2D карту как 3D сцену или ее 2D фрагмент (одиночный горизонтальная линия) это можно сделать очень легко.

  1. растровая карта

    методы рендеринга с использованием лучевого каста Google Wolfenstein, такие как:

  2. векторная карта

    создавать сетку из вашей карты и визуализировать с помощью любого 3D gfx api, такого как OpenGL. Чтобы начать использовать этот подход, вам нужно понять следующее:

    см. также дополнительные ссылки там ...

Для реализации условия освещения вы можете применить любое затенение. Самый простой - обычная штриховка. Для получения дополнительной информации см .:

person Spektre    schedule 21.04.2017
comment
Большое спасибо за ваш любезный ответ. Я думаю, это очень помогает. И мой профессор сказал, что я должен попробовать какой-нибудь алгоритм трассировки лучей. У меня есть в Google несколько онлайн-видео о компьютерной графике о трассировке лучей, однако большая часть трассировки лучей связана с трехмерной графикой. Мне нужна демонстрация или код для работы с 2D-картой. и в вашем вопросе Алгоритм для 2D Raytracer как раз об этом. Не могли бы вы дать мне больше советов по трассировке 2D-лучей? - person Hong Cheng; 24.04.2017
comment
Уважаемый Spektre, я прочитал Понимание однородных матриц преобразования 4x4 и анатомию матрицы преобразования для матрицы 4 * 4, почему мы должны добавлять m [12] ~ m [15] то есть (0,0,0,1) в матрице? Не могли бы вы объяснить мне более подробную информацию? - person Hong Cheng; 25.04.2017
comment
@HongCheng: мы используем 4x4 вместо 3x3, поэтому мы можем сложить любое количество преобразований в одну матрицу .... 3x3 представляют собой просто вращение, но в 4x4 вы можете одновременно иметь вращение + перенос + проекцию. Последняя строка (0,0,0,1) предназначена для прогнозов см. Перспективная проекция или Матрица проекции OpenGL - person Spektre; 25.04.2017
comment
@HongCheng здесь ссылка на 2D raytracer в стиле Doom QA Я ответил некоторое время назад ... - person Spektre; 28.11.2017