Как стать автором
Обновить

Математика наклона в картах, или как мы сделали небо

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров8.1K
Всего голосов 59: ↑59 и ↓0+59
Комментарии17

Комментарии 17

В итоге пришли к очень простому варианту, который полностью покрыл наши требования: мы привязали распределение тумана к расстоянию до точки вращения камеры. Это выглядит примерно так.

Можно игнорировать Y координаты камеры и вертекса при расчете тумана. Ибо сейчас выглядит так будто туман это PNG градиент белого цвета наложенный на стык между небом и картой. Особенно сильно видно на широких мониторах.

Кроме того сам туман выглядит инородно. Он редко когда бывает такой контрастной стеной, я в жизни такое видел всего раз когда въезжал из сухой погоды в стену дождя. Я бы сделал его чуть мягче. Текущая реализация напоминает старый добрый сайлентхил с малой прорисовкой.

Ну и цвет, бежево белый мир уходит в белый туман с резким переходом в контрастно голубое небо. Кажется что простая симуляция неба в виде нескольких градиентов + мягкий уход в них без цветного тумана, могли бы выглядеть приятнее.

Fade to skybox техника очень простая и не дорогая. Мне понравились иллюстрации вот отсюда https://pikabu.ru/story/krasivyiy_tuman_v_unity3d_s_vyisokoy_optimizatsiey_6042037

Пример Fade to skybox

Можно игнорировать Y координаты камеры и вертекса при расчете тумана. Ибо сейчас выглядит так будто туман это PNG градиент белого цвета наложенный на стык между небом и картой. Особенно сильно видно на широких мониторах.

Если я Вас правильно понял, то вы предлагаете распределение интенсивности как функцию "Константа в радиальной системе" (вертикальный цилиндр, если игнорируем Y). Сейчас интенсивность распределена в сфере. При пересечении что цилиндра, что сферы с гор. плоскостью (землей) получается круг и при увеличении его радиуса для наблюдателя он вырождается в прямую, что видимо, вы и наблюдаете на широкоформатном экране.

Кроме того сам туман выглядит инородно. Он редко когда бывает такой контрастной стеной, я в жизни такое видел всего раз когда въезжал из сухой погоды в стену дождя. Я бы сделал его чуть мягче. Текущая реализация напоминает старый добрый сайлентхил с малой прорисовкой.

Тут я с вашим наблюдением согласен. Это сознательная нереалистичность, на которую пошли дизайнеры, чтобы не ухудшать читаемость карты в далеке. Так-то с программной стороны в стилях 2ГИС мы дали настройки, что для плавности градиента, что для радиуса. Если будете пользоваться нашим API, это всё можно регулировать :)

Ну и цвет, бежево белый мир уходит в белый туман с резким переходом в контрастно голубое небо. Кажется что простая симуляция неба в виде нескольких градиентов + мягкий уход в них без цветного тумана, могли бы выглядеть приятнее.

Спасибо! У нас есть задача на реализацию skybox, практически так как описано у вас в статье, но нам нужно будет серьезно профилировать приложение. При всей кажущейся тривиальности оно может сильно затормозить карту, так как придется добавить fetch из новой кубической текстуры во все шейдеры (а даже самое чтение из кубомапы на деле не такая легкая операция в плане инструкций). Но вероятно, мы к этому все-равно придем рано или поздно.

Да нормально оно выглядит. Карта и должна (в отличие от игры) предполагать условность и упрощение. Я бы даже сказал, что карта 2гис подошла к тому разумному пределу, за которым дополнительная реалистичность уже будет скорее мешать и отвлекать от сути.

А почему у вас земля плоская?

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

Практического смысла рисовать шар мало. 2Gis - это про внутригородскую навигацию, на таких масштабах шарообразность не заметна.

Но вообще, чтобы таких вопросов не возникало, я бы на больших масштабах запрещал бы так двигать/масштабировать карту, чтобы были видны её края - чтобы неокрепшие в вопросах шарообразности Земли умы не смущать.

А Вы какую ожидаете увидеть?

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

Просто для примера: на https://geojson.io/ есть режим глобуса. По приоритетам полностью согласен

Да, конкретно на https://geojson.io используется mapbox, про их глобус знаем :)

По полезным фичам. Статья про рисование неба. Ок.

В мобильной версии туман, кстати говоря, уже давно был - его под навигатор запилили, ибо там камера тоже весьма сильно наклонена. Но вот неба там не было, оно там не нужно и старый движок (вроде) вообще не мог работать, когда в кадр попадает небо.

Небо - это интересно! Но вот только в последнее время 2GIS жутко тормозит на S21ultra. И маршруты в режиме "пешеход" строит неправильно.

Вот про то же самое хотел написать! Отличный и нужный продукт просто испортили такими вот свистелками.

В статье рассказываю, для чего нам понадобились эти фичи

Так и не нашел зачем. Подробное описание решения возникших проблем, но ЗАЧЕМ? Неужели все ради этого:

У тумана на карте две цели. Первая — он должен скрыть некрасивую границу тайлов. Вторая — потенциально оптимизировать то, что он скрывает

Когда уже команды разработки наладят обратную связь? Я понимаю что никто из них не хочет остаться без работы и поэтому усиленно ее придумывают, но это портит и утяжеляет продукты. Об этом много говорят в последнее время, но как решать проблему - непонятно. Пока пользователи не станут платить за софт, решения не видно.

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

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

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

С небом стало жизненнее

Вот про это я и говорю: КОМУ ЭТО НУЖНО? Клиентам? Нет, они тамагочи скачают если захотят "чтобы стало жизненнее". Разработчикам? Наверное..

Некоторые фичи не утяжеляют продукты

В том то и дело, что только некоторые. И пользователям нужны только некоторые. Каждый из нас назовет море примеров, как любимый софт распух до невозможности использования.

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

Если Вы не наклоняете карту, то ни небо ни туман работать не будут. На 2gis.ru небо и туман видны лишь при большом наклоне, выключить их пока что нельзя, тут Вы правы.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий