OSM2World 0.2.0-dev: Technische Fragen

Dann mach ich mal den Anfang: Das latest build-Release (0.2.0* OSM2World-latest-bin.zip*) läßt sich bei mir garnicht starten. V.0.1.9 läuft super.
XP SP3 Lenovo NB 2GB Ram, 1,58GHz, Java 6 Build 31
Klick auf osm2world-windows.bat öffnet cmd, die sich sofort auch wieder schließt. das wars… :frowning:

Bei mir passiert mit dem latest (von gerade eben) unter Linux (openSUSE 12.2 x86_64) auch nicht viel außer:

# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f635a72fd90, pid=5344, tid=140064691083008
#
# JRE version: 7.0_09-b30
# Java VM: OpenJDK 64-Bit Server VM (23.2-b09 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libxcb-glx.so.0+0xed90]  xcb_glx_get_string_string_length+0x0

Es gibt dazu noch längliche Traces, aber die sagen mir nicht viel. Wäre toll, wenn jemand was damit anfangen und zur Fehlerbeseitigung beitragen kann:

Stack: [0x00007f635a185000,0x00007f635a286000],  sp=0x00007f635a284188,  free space=1020k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libxcb-glx.so.0+0xed90]  xcb_glx_get_string_string_length+0x0

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  jogamp.opengl.GLContextImpl.glGetStringInt(IJ)Ljava/lang/String;+0
j  jogamp.opengl.GLContextImpl.initGLRendererStrings()V+39
j  jogamp.opengl.GLContextImpl.setGLFunctionAvailability(ZIII)V+74
j  jogamp.opengl.GLContextImpl.createContextARBVersions(JZIIIII[I[I)J+174
j  jogamp.opengl.GLContextImpl.createContextARBMapVersionsAvailable(IZ)Z+118
j  jogamp.opengl.GLContextImpl.mapGLVersions(Ljavax/media/nativewindow/AbstractGraphicsDevice;)Z+21
j  jogamp.opengl.GLContextImpl.createContextARB(JZ)J+123
j  jogamp.opengl.x11.glx.X11GLXContext.createImplRaw(Ljogamp/opengl/GLContextImpl;)Z+681
j  jogamp.opengl.x11.glx.X11GLXContext.createImpl(Ljogamp/opengl/GLContextImpl;)Z+17
j  jogamp.opengl.GLContextImpl.makeCurrentWithinLock(I)I+47
j  jogamp.opengl.GLContextImpl.makeCurrent()I+191
j  jogamp.opengl.x11.glx.X11GLXDrawableFactory$SharedResourceImplementation.createSharedResource(Ljava/lang/String;)Ljogamp/opengl/SharedResourceRunner$Resource;+275
j  jogamp.opengl.SharedResourceRunner.run()V+270
j  java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
=>0x00007f63787af000 JavaThread "main-SharedResourceRunner" daemon [_thread_in_native, id=5366, stack(0x00007f635a185000,0x00007f635a286000)]
  0x00007f63786cf000 JavaThread "AWT-EventQueue-0" [_thread_blocked, id=5365, stack(0x00007f635b3ce000,0x00007f635b4cf000)]
  0x00007f63786ce000 JavaThread "AWT-Shutdown" [_thread_blocked, id=5364, stack(0x00007f635bad7000,0x00007f635bbd8000)]
  0x00007f6378514800 JavaThread "process reaper" daemon [_thread_blocked, id=5361, stack(0x00007f6370040000,0x00007f6370068000)]
  0x00007f63784ff800 JavaThread "AWT-XAWT" daemon [_thread_in_native, id=5359, stack(0x00007f6360121000,0x00007f6360222000)]
  0x00007f63784c6000 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=5358, stack(0x00007f6360222000,0x00007f6360323000)]
  0x00007f63781da000 JavaThread "Service Thread" daemon [_thread_blocked, id=5356, stack(0x00007f636b7c9000,0x00007f636b8ca000)]
  0x00007f63781d8000 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=5355, stack(0x00007f636b8ca000,0x00007f636b9cb000)]
  0x00007f63781d5000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=5354, stack(0x00007f636b9cb000,0x00007f636bacc000)]
  0x00007f63781d3000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=5353, stack(0x00007f636bacc000,0x00007f636bbcd000)]
  0x00007f6378178800 JavaThread "Finalizer" daemon [_thread_blocked, id=5352, stack(0x00007f636bcfd000,0x00007f636bdfe000)]
  0x00007f6378176800 JavaThread "Reference Handler" daemon [_thread_blocked, id=5351, stack(0x00007f636bdfe000,0x00007f636beff000)]
  0x00007f6378009000 JavaThread "main" [_thread_blocked, id=5345, stack(0x00007f6381646000,0x00007f6381747000)]

Other Threads:
  0x00007f637816e000 VMThread [stack: 0x00007f636beff000,0x00007f636c000000] [id=5350]
  0x00007f63781e5000 WatcherThread [stack: 0x00007f636b6c8000,0x00007f636b7c9000] [id=5357]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Die 0.1.9 läuft problemlos. Das JOSM-Plugin kendzi3d bringt JOSM mit der gleichen Fehlermeldung zum crashen.

Kamera fängt nach einiger Zeit an zu “zittern”, so dass man resetten muss.

Vorschlag für Kamerabewegung:

nach links/rechts drehen: left/right
vorwärts/rückwärts bewegen (parallel zum Erdboden, in Kamerarichtung): runter/hoch Taste (schneller mit Shift)
Kamera hoch/runter bewegen: Page Up/Down
Kamera hoch/runter schwenken: Ctrl- Up/Down

Die Blickrichtung (N,S,O,W) und Kamera Höhe sollte angezeigt werden.

Chris

Na, das ist wahrscheinlich einfach: In der .bat steht “-Xmx2G”, java darf sich also 2G Speicher reservieren, den du nicht zur Verfügung hast - einfach mal in einen kleineren Wert ändern. Wenn es nicht hilft, schreibe in die .bat noch eine Zeile “pause”, dann bleibt das Fenster solange offen bis du eine Taste drückst und die Fehlermeldung lesen kannst.

Also ich finde die momentane Steuerung mit linker/rechter Maustaste schon nicht schlecht. Mich irritiert nur die Schwenkbewegung mit Pfeil rechts/links - das resultierende “schiefe” Bild ist in dieser Anwendung eigentlich unnütz. Besser wäre es, um die senkrechte Achse zu drehen.

Super, danke das funktioniert. Jetzt wird die Anwendung geladen. ABER:
Hab es mit 1G 1200M und 800M probiert, aber offenbar wird die Menüleiste nicht generiert, denn dort ist im neuen Fenster nix. Der schwarze Hintergrund mit dem weißen Text ist dafür zu sehen. Wenn man irgendwo klickt, dann wird alles weiß, dann hilft nur noch ein kill über die taskman.exe :frowning:
(Es wird kein Fehler in cmd angezeigt.)

Moin!

Hab jetzt mal das Graz Modell mit den Texturen versucht - im OSM2World GUI schaut es gut aus, beim Export to obj jedoch wirds unansehnlich.
Wenn man das mit DeepExploration laden will, zeigt er keine Texturen an, nur die bäume werden schwazre flächen…
Tips?

edit ahh, die Texturen sind doch da, aber nur schwarz im Falle der Bäume.
Nur die Fenster fehlen noch…

Amiga4000

Ich habe mittlerweile einige gewünschte Features eingebaut, siehe Ursprungspost. Wer in den Genuss kommen will, muss updaten.

Zu den Abstürzen: Probleme mit der Grafik, die zwischen 0.1.9 und 0.2.0 dazu gekommen sind, hängen höchstwahrscheinlich mit der seit der neuesten Versionsnummer eingesetzten neueren Version der Bibliothek JOGL (Java OpenGL Bindings) zusammen, die auch Kendzi3D einsetzt. Zu diesem Thema wird sich aber voraussichtlich noch Peda zu Wort melden.

Darstellungsprobleme bei den Bäumen können ein Hinweis auf Probleme mit Transparenz (Alpha-Werte in den Texturen) sein.

Die Fenster werden über Multitexturing dargestellt, also mehrere Texturen übereinander. Das lässt sich meines Wissens in .obj gar nicht so abbilden - ein vergleichbares Problem wurde auch hier berichtet: #30. Ich bin mir unschlüssig, was der beste Workaround dafür ist.

Moin

Ok, das Problem mit de Bäumen hab ich gelöst bekommen in DeepExploration - die texturen sehen OK, muste in DeepExploration nur die Opacity setzen für die Textur. Un klar, die Bäume mit texturen machen kaum schatten, die 3D Volumenmodelle haben bessere Schatten. Vielleicht 4 oder 8 mal pro baum, statt 2 mal für mehr Schatten?
Fenster sind durchaus ein Problem, das mit multi-texturing kann .obj ned so recht abbilden. Schade, denn fenster geben bei Gebäuden doch schon einen ziemlich guten Eindruck über die Höhe des Gebäudes.
Man müßte die 2 Texturen “baken” - zusammenkleben als eine Textur, das jedoch ist erheblich Aufwand und kostet Speicher. Oder eine Textur mit Fenster je Hauswand-material?

Amiga4000

Mehrmals ausprobiert. Sieht schlecht aus.
Ich denke, es sit besser, wir setzen neue Standards, selbst wenn *.obj und einigen andere gängige Formate mit der Sache noch wenig anfangen können.

Auf jedem fall- besten Dank für Dein Tun!

Grüße,
Marek

Moin

Nun jaa, neue Standards hin oder her, die Frage nach Sinn und Nutzen kommt schon auf - mit einem ordentlichem Exporter kann man die erstellen Daten weiter nutzen ohne erheblichen Mehraufwand. Bleibt die Frage: One Way Dead End Street oder Mehrnutzen?
Ausserdem gibt es ausreichend viele 3D Formate - collada und vrml sind nach .obj die wichtigeren.
Aber ich bin weder coder noch experte… Ich kann leider weder einen ordentlichen Exporter schreiben noch das Texturproblem lösen. Leider.

Amiga4000

Hallo Amiga4000

Du hast die wichtige Frage schon angedeutet.
Soll man sich nach den unzureichenden Fähigkeiten eines Austauschformates richten, wenn es doch viele weiteren gibt? Ich bin auch kein 3D-Experte, eine Forderung nach mehrlagigen Texturen scheint mir jedoch nicht besonders abgehoben.

Man soll sich meiner Meinung nach weder nach dem funktionsreichsten noch nach dem funktionsärmsten Format richten, sondern eine Auswahl von Funktionen treffen, die für einen selbst wichtig sind und die von einigen Austauschformaten unterstützt werden.
Wo das für ein Zielformat nicht passt, muss man entweder eine Umgehung entwickeln oder mit der unzureichenden Unterstützung leben. Es gibt ja andere Formate zum ausweichen.

Edbert (EvanE)

Amiga4000, könnten deine Tools denn auch andere Formate wie z.B. Collada lesen?

Für einen kurzfristigen Workaround wäre es mit überschaubarem Aufwand möglich, über die Konfigurationsdateien Wandtexturen mit eingebauten Fenstern einstellbar zu machen. (Die müssten dann allerdings auch erst mal gebastelt werden!) Gebäudefarben könnten so aber nicht berücksichtigt werden.

Genauso wie eine Firma wie ESRI in der Lage ist ein Importfilter für OSM Daten zu schreiben, wird es möglich sein, Multitexturen zu importieren. Ein Praktikat hat einen solchen Tool für meine Firma schon im Jahr 2001 geschrieben.
Im Grunde ist es eien einfache Sache: Unterstütze eine Format Multitexturen nicht, so muß ein Export Tool für Texturen geschrieben werden, mit dem die Texturen “zusammengeklebt” werden. Es ist keine unmögliche Sache.

Moin

OpenSG selber kann collada recht gut, collada hat sich auch generell zu einem guten Austauschformat zwischen den 3D Welten entwickelt.
Aber ich möchte nicht sagen: baut dieses oder jenes nur weil ICH es brauchen könnte.
Man sollte ein brauchbares Format wählen, welches man a) selber beherrscht und b) die nötigen Features kann.
Ich bin zur Zeit schon froh, das man einigermassen nach .obj exportieren kann (auch wenn nicht ganz sauber) und somit ich wenigstend etwas habe.
Ich weiß selber, das das eine Menge Arbeit ist, und den idealen Weg kenne ich nicht.

Wir haben ja auch Tools wie DeepExploration zur Verfügung, welches eine Menge 3D Formate lesen und wandeln kann. Aber bei jedem dieser Umwandlungen gehen Informationen verloren.
Deswegen wünsche ich mir (leicht blauäugig wie ein Kind zu XMas) ein Export in eine Format, welches viele Features hat. Ich werde nochmal bei den Experten nachfragen…

Amiga

Dann mach ma des doch mal :slight_smile: Leider erkennt man ja so nicht so viel, aber ich hätte mal darauf getippt, dass der Version-String der da geprüft werden soll 0 ist?!
Kannst du mal bitte sagen, welche Grafikkarte du hast, welchen Treiber du verwendest (möglichst genaue Version, aber vor allem binary oder OS) und dein Monitorsetup (1,2,3,… Monitore?).

Edit: Um es einfacher auszudrücken: Meiner Meinung nach ist das ein Bug in deinem Grafikkartentreiber. Die Antworten auf meine Fragen wären dennoch interessant :slight_smile:

Ich hätte da mal noch einen anderen Vorschlag, vielleicht kannst du das ja mal klären bzw. mir sagen ob das ein gangbarer Weg für euch wäre.

Im Povray-Export hatten wir schon mal das selbe Problem und haben das dort mit einem kleinen Hack gelöst: Wir haben einfach für Flächen mit Multitextur vor die Fläche mit der Grundtextur eine zweite Fläche gesetzt (sehr geringer Abstand zur ersten) und der zweiten Fläche dann eben die Fenstertextur verpasst. Wenn das mit der Transparenz klappt, sieht man an den Nicht-Fenster-Stellen die Hausfasade durch und hat quasi Multitexturing. Da dieser Code für Povray schon vorliegt, sollte das verhältnismässig einfach auch für obj verwendbar bzw. erweiterbar sein.

Dafür gäbe es dann aber hoffentlich ne Einladung in den Dave :slight_smile:

Moin

Es hört sich interessant an, testen kann man das ja mal - so es nicht zuviel Arbeit macht.

Als guter Test für die ganze Geschichte: meshlab (http://meshlab.sourceforge.net/ ) ist ein kostenloses Tool zum anzeigen und bearbeiten von Meshes (3D Daten). Wenn der das OBJ laden kann, können wir das auch (sozusagen).

Nur eins noch zu den Texturen: Wir müssen das exportierte OBJ derzeitig in VRML konvertieren, da geht natürlich was bei verloren. Auch muß ich bei fast jeder Textur noch Opacity setzen. Ich weiß ned, woran das liegt.
Der Export in ein .obj /.x3d/.dae/* ist ja generell für alle 3D Programme interessant, da kann man ja dann ggf. auch sein Quake mit OSM versehen^^

Und zum Thema DAVE: jeden Donnerstag (im Semester) gegen 16 Uhr ist public date - da basteln wir an neuen Dingen und alten Demos herum. Zu dem Zeitpunkt ist öffentlicher Besuch gerne gesehen - so es mehr als 5 Leute sind, ist eine Voranmeldung gerne gesehen. Je nach dem, wie wichitg der Besuch für unsere Forschung/Projekte ist, mit mehr oder weniger Prominenz vor Ort^^
Sprich: Ein Teilbereich von Graz ohne Texturen ist jederzeit anschaubar, andere Bereiche sind auch schnell importiert, wenn das jetzt mit den Texturen gut geht, dann auch mit texturen^^

Amiga4000

Ich habe es auf zwei Rechnern getestet, immer der gleiche Fehler. Ich tippe daher auch auf ein Problem in Java oder einem Treiber. Ich kann nur keinen Bugreport machen, da ich noch nicht weiß, wer der richtige Ansprechpartner ist.

Der eine Rechner hat keine Grafikkarte, das macht der INTEL Core i5-3570K. Wie bekomme ich heraus, welcher Treiber verwendet wird? Installiert ist das Paket xf86-video-intel 2.20.3. Es gibt dann noch vaapi-intel-driver 1.0.18 und xorg-x11-driver-video-intel-legacy 2.9.1.

Der Andere Rechner ist ein Lenovo ThinkPad mit den gleichen installierten Paketen. Da steht “Cantiga Graphics Controller”. Also wahrscheinlich auch in die CPU integriert.

Was meinst du mit “binary oder OS”? Jeweils ein Monitor. Ich kann es noch mal mit einem virtuellen X-Server (VNC) versuchen.

Da kommt zwar das Fenster hoch, aber es gibt dann einen Fehler:

javax.media.opengl.GLException: Not a GL2 implementation

Version 0.1.9 läuft unter VNC.

Sobald man ein Material taggt wird die Farbe nicht mehr beachtet. Bug oder Feature?
Chris