Заготовка сайта для просмотра пиксель-арта WPlace на панорамах
- Клиент вводит страну, город или конкретный адрес
- Сервер пытается найти панораму, рисует маску неба (через нейросеть) и парсит пиксель-арт
- Полученные изображения клиент рендерит через 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 mysessionnginx необходим, чтобы отображать изображения на сайте!
Отрисовка маски панорамы через нейросеть и парсинг картинок выполняется на отдельных 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 под веб-браузеры)
- Пофиксить наклон панорам
Некоторые изображения с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