OpenGlobus - новая JavaScript WebGL библиотека для 3D карт.

Привет!

Предлагаю вашему вниманию OpenGlobus - новую JavaScript WebGL - библиотеку с открытым исходным кодом.

Официальный сайт: http://www.openglobus.org/(описание, примеры, документация)

Буду рад услышать, что вы думаете об этом.

Спасибо!

Работает шустро.

Тотальный опенсорс: http://imgur.com/bmB6Hkm

Браузер должен поддерживать WebGL.

http://webglreport.com/?v=2

А у меня поддерживает. У меня железо его не поддерживает. Браузер у меня свежайший. Но посмотрите на скриншот, а? Наезжающие надписи, пусть их обычно никто не видит - это нормально?

Глючит отрисовка иногда. К примеру такой глюк в виде чёрной полосы как-то раз образовался (браузер Edge).

Задачей консоли, служит отображение “тотальных” ошибок движка, она служит подсказкой для разработчика и она справляется с этой задачей хорошо. Как правило, консоль не должно быть видно, но если она появилась(да еще и с красным цветом), как у вас, значит глобус не запустится(скорее всего), и причина по которой глобус не запустился, должна отображаться на консоли.

Возможно некоторые ошибки, такие как “WebGL не запустится”, “Поменяйте железо”, “Обновите браузер”, следует показывать в более удобоваримом виде…скажем в модальном окне…я подумаю над этим, в любом случае спасибо за замечание. Если у вас получится запустить на другой машине(например у меня работает и на айпаде и на смартфоне), где глобус запустится, было бы хорошо узнать ваше мнение по тому, что должно работать.

Занес в багтрекер. Спасибо.

У вас есть какая-то минималистичная оффлайн-сборочка? Чтобы скачать и запустить? Скажем, метров на 100, с куском Москвы?

Xочется кнопку по увеличению рельефа в 3-5 раз.

Нет, к сожалению такого примера нет, но вся библиотека(это два файла js и css) весит не больше 600 Кб, тайлы и рельеф загружаются онлайн. АПИ позволяет использовать настроить источники оффлайн, например натайлить тот же ОСМ и натайлить рельеф, из своего источника или глобусный. Идея хорошая, как для примера, но ее надо подготовить.

Простите не понял, увеличить рельеф по высоте вроде как масштабировать(как в гугл земле)? Или увеличить детализацию рельефа?

А что можете увеличить детализацию STRM :slight_smile: Конечно он хотел увеличить наглядность разницы высот.

А какой там формат? Есть какой-то тул для генерации из голого ПБФ?

Есть смысл ждать?

Рельеф:
Я предлагаю(предполагал, когда делал механизм загрузки рельефа), что каждый тайл рельефа глобуса(карты), представляет собой регулярную сетку(меркаторовская), в каждой ячейке которой записана высота. Например тайл рельефа тех высот которые по умолчанию работают в глобусе имеет размерность 33x33 высот(ячеек) т.е. клеток в ячейке 2^5, (в цезиуме, если я не ошибаюсь 2^6, в гугл земле 2^5). Например для глобуса я натайлил кеш из dem файлов и храню его на сервере, ничто мне не мешает натайлить кеш локально. Правда весит много, весь рельеф около 70 Гб(http://viewfinderpanoramas.org/), а кеш под терабайт(чуть меньше).
Пример тайла с рельефом: http://earth3.openglobus.org/12/1344/3846.ddm

Если вы хотите использовать свой формат(например серые тайлы с геосервера), не зависимо от источника(расположения), в АПИ необходимо добавить свой класс TerrainProvider, которому вы указываете размер сетки, адрес источника(если есть), и “виртуальный”(javascipt) метод, в котором вы свой формат переделываете в регулярную сетку тайла и отдаете в глобус. Таким образом вы можете подключить любой источник с рельефом, можно даже програмный какойнибудь шум Перлинга сделать(эти вещи я планирую сделать в примерах, их там уже около 30, но такого еще не делал, не думал что это будет интереснее чем скажем отображение видео, нерасчитал.)

Растр:
Тоже самое, как в лифлете или опенлеерсе: растровые тайлы, указываются источники, или используются АПИ как в случае с Яндексом или Гуглом. т.е. скачали в папку тайлы и указали ее как источник. Например вот здесь: http://176.194.189.20/earth/

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

Я просто хочу посмотреть, что же вы там нахимичили. А там уже будет видно, чего хотеть дальше. Буду ждать сборочку.

Пожалуйста, добавил пример: http://openglobus.org/examples/HeightFactor/heightFactor.html

Ну вот, любо дорого смотреть.

Ещё бы поддержку координат в ссылке.

Глобус задумывался как открытый проект, для того чтобы каждый мог подстроить его под свои нужды. Для этого существует система контролов(плагинов). Контрол - это объект, класс которого наследует базовый контрол, у которого есть метод доступ к интерфейсу всего движка: сценам, камерам, шейдерам, слоям, событиям, window/document, webgl, и т.д. Пример контрола, который добавляет кнопку, при нажатии камера “летит домой”: http://openglobus.org/examples/CustomControl/customControl.html

Практически любой специализированный механизм удобно делать в виде контрола, например контрол отвечающий за навигацию мышкой, или на тачпаде; контрол, который устанавливает Солнце в позицию относительно даты и времени; контрол отображения Частоты кадров в секунду; контрол который рисует координатную сетку, как в ГуглЗемле(который тоже ждет своей очереди) и т.д.
https://github.com/OpenGlobus/OpenGlobus/tree/master/src/og/control

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

Хочу загрузку 3D моделей с текстурами.

Это можно реализовать через полную поддержку gltf