Przykłady OSM 3D

Cześć :slight_smile: No właśnie bo się trochę zastanawiałem o losie współpracy mojego softu z OSM (w założeniu ma być komercyjne, bo nie widzę innej sensownej metody utrzymania/prowadzenia projektu). Tyle że ja akurat miałem w planach udostępnić bezpłatnie część licencji osobom najbardziej zaangażowanym w projekt (dziwnie by było, aby ktoś kto przykłada się do edycji publicznie dostępnych danych miałby jeszcze płacić za edytor) - kiedyś to zapowiadałem (przy przystąpieniu przeze mnie do OSM) przy wczesnym etapie projektu i to dalej podtrzymuję. Mam nadzieję, że ludzie ze społeczności nie będą się krzywo patrzeć - że coś jest komercyjne to jest be, bo open-source jest lepsze :slight_smile:

A te obiekty - to w sumie ciekawy temat poruszyłeś, bo sam ostatnio się z tym borykałem (dodatkowe obiekty). W programie przewiduję u siebie import danych (np. z DXF, DGN, XML)…itd i w niektórych formatach mamy zdefiniowane obiekty złożone. Z drugiej strony w OSM mamy do czynienia z liniami i punktami - nawet poligony są definiowane raczej ze stylu niż z konkretnego typu obiektu powierzchniowego. Gdybym np. chciał dodać rysowanie okręgów, kształtów, to nagle się okazuje że można je na potrzeby OSM zamienić w “drogi” (łamane / “polyline”), ale w drugą stronę to byłby problem (bo trzeba by zachowywać jakieś dane dot. kształtu, aby móc go odtworzyć jako obiekt a nie linie). Z drugiej strony implementacja OSM jest przez swój format prosta i dzięki temu generuje mniej problemów niż kwestie związane z kształtami (np. prostokąt w projekcji jednego układu w drugi nie musi wcale być prostokątem, podobnie łuki/okręgi… - układy odniesienia potrafią nieźle skomplikować sytuację). Inna kwestia to np. opisy tekstowe (etykiety) - w takim Autocadzie mamy obiekt TEXT - w JOSM nie ma takiego typu - więc sporo racji w tym, że jest to temat na dłużej (szczególnie jeśli chodzi o globalną implementację i zmianę API).

Dobra bo już idę dookoła… chodzi o to, że robiąc pakiet tylko pod OSM ma się tę wolność, że można robić wyspecjalizowaną - dedykowaną aplikację - i nie ma takiego nacisku na różne szczegółowe specyfikacje. I tak powstał JOSM -z najprostszych pomysłów, które z reguły okazują się sprawdzone. Ale np. gdyby geodeta chciał wykorzystać taki program, to nagle pojawia się problem - z kompatybilnością obiektów/układów odniesienia/zastosowaniem…itd Tu z kolei wchodzę ja, bo chciałbym umożliwić choć częściowe przejście z jednych danych na drugie (i vice versa).

Bo np. taka sprawa z mapowaniem - geodeci mają swoje operaty, w których mają zawarte obliczenia jakie doprowadziły do uzyskania odpowiednich współrzędnych. W przypadku OSM nie ma takiego wymogu, a czasem przydałoby się wiedzieć, jakie punkty są oznaczone precyzyjnie (np. bazując na osnowie i dokładnym pomiarze), a jakie mniej dokładnie (i które mogą wymagać kiedyś poprawy). Jak np. w programie udostępniam możliwość wyznaczenia punktów pośrednich z wcięć liniowych lub przecięć, to jeśli z OSM miałbym dane, które punkty mamy określone z jaką precyzją, mógłbym oszacować czy np. obiekt jaki pomierzę - będzie miał wystarczającą dokładność. I fajnie by było gdyby takie dane były dostępne dla każdego, kogo to interesowałoby.

Szczególnie mogłoby to pomóc w sytuacjach, w której nieświadomi początkujący użytkownicy przesuwają już narysowane obiekty, ponieważ “nie pasują do podkładu”. A tak mielibyśmy obiekty “zamrożone” (jakieś tagi typu freezed/fixed position), których nie dałoby się w prosty sposób przesuwać i psuć geometrii. Obiekty te mogłoby służyć także jako referencje / obiekty bazowe do wyznaczania innych (np. elementów w terenie - położenia drzew…itd).

Bo np. ja zakładam, że mając dalmierz laserowy (są coraz tańsze) można zrobić bardzo precyzyjne pomiary - także przydatne w 3D. Precyzja by się przydała także w przypadku gdyby OSM miał służyć do bardziej precyzyjnych celów (np. wspomaganie nawigacji i samoprowadzących samochodów). Większość pewnie i tak nie przykłada wagi do dużej precyzji, ale zakładam, że w przyszłości będzie się to zmieniać (dostępność sprzętu i metod pomiarowych) - i wtedy możliwość osadzenia takich danych byłaby pomocna. Podobnie kwestia pomiarów GPS - dziś można relatywnie tanio zmontować układy do pozycjonowania z dokł. centymetrową co możnaby wykorzystać w przypadku OSM. Nawet jeśli ktoś twierdzi że to mało istotne - to np. tagi dotyczące teksturowania obiektów są już nam bliższe, więc tak czy inaczej API/specyfikacja OSM musi być rozszerzona.

Czy ktoś zna WMS budynków w Watykanie?
Zauważyłem, podczas rysowania w 3D, że obrysy Bazyliki są orientacyjne i nie szczegółowe.

No ale pamiętajcie też o openbuildingmodels czyli o modelach podpiętych do osm. Wg mnoe tagowanie jest mniej dokladne, ale za to szybsze. Wieże Eiffla można zribic w blenderze zamiast wymyslac specyficzne tagi

Jasne ze tak, Dotevo. Inaczej sie nie da. Potrzebny jest jednak soft opensource, gdzie bedzie mozna te modele umieszczac. To jest mój argument przeciw Francuzom z f4: Stworzyli soft, jednak go nie udostepniaja i w konsekwencji sa jedyni ktorzy na dzien dzisiejszy to potrafia. Ludzie nie podpinaja wiec pod OSM wolnych modeli. Nie tedy droga.

Ale zaraz, czy ten serwis w końcu zaczął działać? Można tam wrzucić jakiś model? Można przez jakieś api pobrać modele dla danego regionu i wyświetlić w zewnętrznym programie?

Niestety ale ta strona została wykonana jako praca naukowa i pozostała w takim stanie. Czyli obecnie jest to jedynie niezbyt przydatna prezentacja kolejnej idei.

Myslalem, ze cos ruszylo w tej kwestii, ale jesli nie to przeciez takie cos mozna zrobic samemu na dokladnie takiej samej zasadzie + generowanie paczek z modelami planet.tar.bz2 i wycinkow dla krajow, a potem reszta juz sama sie potoczy. Trzeba pamietac, ze zawsze znajdzie sie ksztalt, ktorego nie da sie opisac tagami bo jest zbyt wymyslny. Dodatkowo jest szansa na modele np. pomnikow i fontann.

Zrobić to można absolutnie wszystko. Niestety musi się znaleźć osoba która taki temat pociągnie. Tego akurat tematu nikt przez tyle lat nie podjął na serio. Być może Ty jesteś w stanie się tym zająć?

Nic, nigdy, nie toczy się samo. Ktoś musi zająć się administracją, sprawami hostingu oraz obsługą bieżących zgłoszeń od użytkowników. Inaczej będzie to kolejna idea wisząca gdzieś w sieci…

Moze bym mogł, ale musze przyznac, ze nie jestem obeznany w temacie 3D.

A to F4 pozwala na umieszczanie modeli? Z tego co widzę to jest tylko przeglądarka (Viewer). Oni mają kod źródłowy do generowania 3D ale co użytkownikom po nim, skoro oni chcą łatwo modelować, a nie tylko pobierać i wyświetlać.

Inna sprawa - załóżmy że ktoś chciałby się pokusić o stworzenie bądź zaimportowanie teksturowanego modelu do OSM (takiego, którego nie da się w prosty sposób zrobić na dotychczasowych tagach do generowania w 3D). Podejrzewam, że jedyny sposób na to, to umieszczenie pliku z danymi i teksturami na serwerze i oznaczenie adresu tych miejsc w tagach. Powstaje jednak pytanie, w jakim formacie udostępnić model? DAE, X3D, VRML czy jeszcze jakiś inny? Z teksturami sprawa jest prosta (JPG/PNG wchodzą w grę), choć możnaby mieć format podobny do androidowego APK (spakowany zipem, w którym byłyby zarówno tekstury, jak i geometria 3D i rozpis co i jak). Faktycznie tutaj ideałem by była jakaś biblioteka opensource, którą możnaby wykorzystać do importu i przetwarzania tych danych w zoptymalizowaną geometrię. Nie wspominam już szerzej o wypracowaniu faq odnośnie sytuacji w których mamy podstawowe dane (np. wysokości) oraz szczegółowy model 3D - aplikacje wyświetlające powinny umiejętnie wybrać co wyświetlać - czy na szybko generowane 3D, czy też gotowy model.

Jednak istotniejsze by było wypracowanie jakiegoś minimum. Jaki format, gdzie składujemy modele i tekstury, API do wkładania/pobierania tych danych.

Niejest az tak trudne. A jak w to byswszedl, moglbys pociagnac temat indoor mapping w 3D. Dospolki z Kendzimi jeszcze paroma ludzmimozna by przegonic f4. Wic polega na tym, ze f4 po prostu udoskonalil kod opensource jaki wzial z opensciencemap.org tworca mi powiedzial

W sumie to już siedzę w tym temacie od prawie roku, robiąc aplikację pod androida i windowsa - pierwotnym jej przeznaczeniem było modelowanie (inwentaryzacja) pomieszczeń, bazując na precyzyjnych pomiarach z wykorzystaniem np. dalmierza (ew. taśmy mierniczej). Tyle że aplikacja w zakresie modelowania indoor pracuje w trybie lokalnym XY (tak jest łatwiej modelować), natomiast otwartą pozostaje kwestia wkalibrowania planu w 3D i eksportu do OSM (a także importu) - bo jak wiemy OSM pracuje na globalnym ukłądzie WGS84 . To wszystko trzeba zrobić uwzględniając obecne tagi dla modelowania indoor (czyli aby było to kompatybilne z danymi, tworzonymi przez użytkowników w JOSM).
Np. nie wyobrażam sobie modelowania indoor na mapie we współrzędnych globalnych (geodezyjnych) gdy model jaki edytujemy jest obrócony - bawienie się z filtrami w JOSM jakoś do mnie nie trafia :slight_smile:

Tyle że ja nie bazowałem na wytycznych OSM (ani też nie korzystałem z kodu opensource osm), lecz poszedłem trochę inną drogą, która by zapewniała odpowiedni zestaw danych do generowania precyzyjnych wymiarów + ich wizualizacji w 3D, uwzględniając specyficzne potrzeby użytkowników, którzy wykonują inwentaryzacje.
I teraz możnaby dorobić sposób ich eksportu do OSM, choć nie będzie to proste jak eksport danych płaskich - tutaj trzeba by siąść i ustalić szczegóły formatu ,tym bardziej aby opanować sytuacje typu import danych z indoor mappingu OSM do edytora (musiałby mieć z OSM wszystkie dane, jakich edytor wymaga, aby dane były prawidłowo obrabiane).

No i gdybym miał robić coś z w zakresie bibliotek - to ja siedzę praktycznie w C++, z javy korzystam tylko wtedy gdy muszę napisać jakiś kod obsługujący funkcje w androidzie (np. okna dialogowe lub współpracę z siecią) - ale to są drobnostki. A z tego co widziałem to sporo kodu związanego z OSM jest napisana w javie (np. JOSM).

W zasadzie, wracając do 3D i formatu - to mógłbym coś zaproponować, mam też u siebie trochę niewykorzystanego miejsca na wykupionym serwerze.Teoretycznie jest możliwe napisać coś, co pozwalałoby by na pobieranie danych z serwera i ich wizualizację (ale w programie nie na stronie web). Do tej pory mam już napisany moduł pobierający dane z serwera OSM dla danego widoku, więc nie ma większego problemu (no może poza czasem, z którym gorzej - bo jeszcze poprawiam pewne funkcje w programie), aby móc pociągnąć testowo taki model (albo tekstury) z mojego serwera - lub napisać wysyłanie gotowego modelu z teksturami na serwer.

Zdecydowanie bardziej problematyczne byłoby zakodowanie finalnego kodu serwera (API) ponieważ ja mam dostęp jedynie do skryptów PHP i nie mogę grzebać, ani umieszczać programów bezpośrednio na serwerze i zrobić to tak, aby było najwydajniej (tj. napisać usługę bezpośrednio umieszczaną na serwerze unixowym). Z drugiej strony skrypty w PHP są łatwe w przenoszeniu, więc każdy kto ma dostęp do FTP serwera mógłby takie pliki umieścić i skonfigurować, aby pracowały jako mini-serwery z modelami 3D.

Ale nasuwa się jednak pytanie - czy rozproszenie danych 3D na pomniejsze serwery będzie dobre? Myślę, że docelowo najlepszym wyjściem byłoby składowanie model i tekstur na serwerze globalnym OSM, aby nie było zbyt dużego rozproszenia i wynikających z problematycznych sytuacji typu zbyt duże obciążenie lokalnych serwerów przechowujących część modeli, albo odłączenie usługi.

Na same modele nie ma miejsca w bazie OSM ponieważ jeśli ktoś ich nie potrzebuje to ściągnięcie poland.osm.bz2 byłoby zbyt uciążliwe. Dlatego wg mnie to powinno wyglądać tak jak API OpenStreetMap czyli wersje, changesety itp. dla modeli. Modele powinny być w formacie tekstowym, a nie binarnym i jaki to format będzie to powinien wybrać ktoś kto się na tym dobrze zna. Mogę zaprojektować API i bazę w kilka dni, ale pytanie czy to ma sens, czy znajdzie się osoba chętna do dodawania modeli (no i najlepiej nie jedna bo robienie serwisu dla jednej osoby nie ma sensu) i czy ktokolwiek to w jakiś sposób wykorzysta. Mam obecnie na głowie kilka innych projektów, w których widzę perspektywy, a ten na obecną chwilę wydaje mi się nieco zbędny.

No i coś w tym jest - jeśli chodzi o bardziej złożone modele to zostaje np. blender albo inne pakiety do modelowania w 3D. Tyle, że to nie jest na tyle proste, aby początkujący mógł to opanować w mig. Łatwiej jest po prostu doszkolić się w tagach 3D i robić je w przybliżony sposób w JOSMie (a przynajmniej efekty można obserwować choćby w serwisach typu F4). Choć tutaj wciąż brakuje sposobu mapowania tekstur - a takie dane mogłyby teoretycznie być w tagach, aby można było umieścić własną pełną teksturę (np. frontu budynku - a nie bawić się w kompletowanie elementów z dotychczasowej biblioteki elementów tekstur).
Z drugiej strony - do szczegółowego teksturowania wciąż wykorzystuje się pakiety 3D, więc dla zwykłego, niezbyt zaangażowanego użytkownika temat na razie odpada.

A co do modeli - mogłyby być w innej części bazy - tak aby dociągać je, w miarę możliwości, a nie razem z danymi wektorowymi OSM (jako inne zapytanie). Tekstowy format zapisu modeli - są łatwiejsze do ewentualnej edycji i sprawdzenia przez człowieka (a to się przydaje). Binarki możnaby zastosować w przypadku cache, gdzie danych się nie edytuje, natomiast liczy się szybkość pobrania i wyświetlania (w końcu tekst i tak trzeba sparsować, a dane z binarki można wrzucić bez parsowania).

Z otwartych formatów które są tekstowe oraz przechowywane w XML to mamy np X3D i XML3D.
Ten ostatni wydaje się bardziej obiecujący (pod kątem OSM3D ) przynajmniej z dwóch powodów: przeglądarki z obsługą webGL mogą bezpośrednio renderować obiekty xml3d (przez bibliotekę js), jest również mocno zawansowany projekt który łączy repozytorium, system kontroli wersji oraz API do zdalnego przechowywania oraz grupowej edycji obiektów w tym formacie.
Jest też konwerter opensource VRML/X3D/XML3D. A sam format ma duże szanse na standaryzaję przez W3C.

Tak zupełnie przy okazji, to Google właśnie wypięło sie na społeczność modelującą 3D i zablokowało w październiku publikację nowych obiektów z 3Dwarehouse na GoogleEarth:
https://groups.google.com/forum/?hl=pl#!topic/3dwh/epXUQA2bJ2s.
Z tłumaczeń wynika, że idą w stronę technologi automatycznego zbierania danych dla modeli 3D.
OSM z pewnością przyciągnie część ludzi, którzy będą chcieli gdzieś przenieść/kontynuować swoją pracę :slight_smile:

a nie da się tego projektu jakoś wykorzystać? Na jakiej licencji są modele zawarte w bazie? Może odpowiedni tag typu data:3drepo=ID_MODELU

Edit: Doczytałem. Rozumiem, że to komercyjna aplikacja, która pozwala taki serwer postawić. Wszystko fajnie, ale myślę, że opieranie się na komercyjnym projekcie jako trzon jest słabe. API/serwer powinny być otwarte, a aplikacja do edycji może być zamknięta.

Na życzenie Kendzi zrobiłem wstępnie listę tagów potrzebnych do modelowania podstawowych obiektów w 3D.
Template:Map Features:3D - https://wiki.openstreetmap.org/wiki/Template:Map_Features:3D

Na openstreetmap.pl jest miejsce na repozytorium modeli jesli potrzeba, i postawienie jakiegos interfejsu w dowolnej technologii. Nie jestem pewien czy format tekstowy ma tu zalety bo diffowanie takich plikow i tak nie ma sensu. A binarnym mozna od razu zawrzec tekstury. Jesli ktos ambitny chcialby to zrobic (np. Dotevo) to mozna sie pokusic o konwersje z dowolnego formatu na docelowy po stronie serwera, tak zeby uzytkownicy mogli rysowac w sketczupie czy blenderze, ew. tez jakims webowym edytorze, albo nawet pluginie dla JOSMa. Przydalby sie interfejs w stylu wiki, taki gdzie mozna podgladac historie zmian. Gdzies widzialem funkcje wizualizacji zmian w modelu za pomoca kolorow (moze w thingiverse).

No właśnie nie wydaje mi się, że to komercyjny projekt, mimo , że znaczek TM to sugeruje.
Napisałem pytanie do autorów, bo informacje na stronie wskazują, że kod żródłowy będzie dostępny, a uzyte baza/biblioteki są opensource.
Ciekawą funkcją jest jednoczesna obsługa wielu formatów 3D - czyli wewnętrzna reprezentacja w bazie umozliwia konwersję na żądany format w momencie pobierania/zapisu obiektów .

Sluchajcie,
jak tak to wszystko czytam, to dochodze do wniosku, ze trzeba by sie spotkac, pogadac i cos wspolnie z tym zrobic.
Chetnie wezme troche urlopu i przyjade do Polski. Moglibyscie wybrac sie do Poznania? Ewentualnie Lodz bo wtedy Prof Sankowski moglby z pewnoscia jakis nocleg zorganizowac a u niegosa ludzie, którzy juz nad tym tematem ze mna siedzieli a maja obecnie przerwe techniczna z powodu konczenia doktoratów (inaczej stypendia do zwrotu).
Zrobienie czegos tak mocnego w Polsce to bylo by cos wspanialego! Jestem pewien, ze wszyscy by sie na to przesiedli.

Edit: Wlodku, wielkie dzieki za zrobienie zestawienia!

Github również posiada prosty mechanizm dla wizualizacji zmian w modelach 3d:
https://help.github.com/articles/3d-file-viewer

Z moich doświadczeń wynika że obecnie jedyny format w miarę wspierany przez różne edytory 3D to niestety OBJ. Jednak sam format ma drugorzędne znaczenie. W razie potrzeby można go skonwertować na na inny. Najważniejsze aby mieć centralny serwis gdzie takie modele można by wgrywać i nimi zarządzać, wraz z api które pozwoli pobrać i wyświetlić je w różnych aplikacjach.