Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

skyart - wplace.live X panoramas

Заготовка сайта для просмотра пиксель-арта WPlace на панорамах

Содержание

Как это работает?

  1. Клиент вводит страну, город или конкретный адрес
  2. Сервер пытается найти панораму, рисует маску неба (через нейросеть) и парсит пиксель-арт
  3. Полученные изображения клиент рендерит через Three.JS

Использование

Опишу запуск на Linux, под Windows алгоритм немного отличается

Установка зависимостей

$ python -m pip3 install torch transformers py360convert botasaurus pillow flask 

Запуск

Для удобства описан запуск всего одной командой. Можно запускать каждый скрипт раздельно.

$ sudo apt-get install tmux
git clone https://github.com/JuniorAww/skyart
cd skyart
tmux new-session -d -s mysession "skyart" \; \
  new-window -c "$PWD" "python3 python/art_worker" \; \
  new-window -c "$PWD" "python3 python/mask_worker" \; \
  new-window -c "$PWD" "bun api/index" \; \
  attach-session -t mysession

nginx необходим, чтобы отображать изображения на сайте!

Модификации

Отрисовка маски панорамы через нейросеть и парсинг картинок выполняется на отдельных worker'ах, то есть скрипт Python можно вынести на другую машину

Вот пример, как в текущей версии добавить своего worker'а:

1. Открываем index.js
2. Находим строчку: const workers = {...}
3. Дополняем конфиг своими worker'ами (addr, task)
4. Изменяем текущие addr по необходимости

Технологии

  • Mapillary — API панорам с CC-BY-SA лицензией
  • botasaurus — отличный инструмент на Python для парсинга
  • Leaflet — интерактивная opensource карта мира
  • Bun — быстрая серверная среда для JavaScript
  • ThreeJS — клиентский рендеринг (порт OpenGL под веб-браузеры)

TO DO

  • Пофиксить наклон панорам
    Некоторые изображения с Mapillary имеют наклон по X, Z (pitch, roll), то есть западение горизонтаа. Это можно исправить, реализовав алгоритм определения этого наклона или парсить получаемый OpenSfM наклон, и затем наклонять панораму при рендере
    Я потратил около 30 часов на это исправление, но добить не смог. Больше лапки не поднимал
  • Server-side поиск координат
    Сейчас поиск координат по названию реализован в клиенте, нужно переделать
  • Заменить Flask на FastAPI
    Flask не для production

По-хорошему можно улучшить дизайн вебсайта

О лицензиях

Изображения Mapillary защищены лицензией CC-BY-SA, которая разрешает свободное распространение и наложение новых элементов на изображение
Все изображения, полученные в результате работы данного кода, распространяются под лицензией CC-BY-SA

Изображения wplace запрещено использовать, изменять и затем распространять без предварительного разрешения, которое можно получить по контактной почте https://wplace.live/terms/terms-of-service

About

Sky mask over 3D panorama (Three.JS + Torch)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages