Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 21:01

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Maps speichern
BeitragVerfasst: So Sep 24, 2006 09:50 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
Eine Frage an alle von Euch, die schonmal Maps zb eines Spiels (in 3d) in XML gespeichert haben:
Wie sah eure XMLStruktur aus?

Irgendwie ist es mir etwas zu mühseelig jedes Quad einer jeden Wand einzeln zu definieren etc...

Habt ihr da besonders gute Lösungen, die aber dennoch alle Freiheiten bieten?

Momentan sieht meine XML so aus:

Code:
  1.  <?xml version="1.0" encoding="iso-8859-1"?>
  2. <GLObjekte>
  3.   <Objekt Name="x" DrawMode="GL_LINES" ID="1" TexturPfad="">
  4.     <Vertex>
  5.       <Coord X="3" Y="3" Z="0"/>
  6.       <TexCoord X="0" Y="0" Z="0"/>
  7.       <Color R="1" G="1" B="0" A="1"/>
  8.       <Normalen X="1" Y="1" Z="0"/>
  9.     </Vertex>
  10.     <Vertex>
  11.       <Coord X="7" Y="3" Z="0"/>
  12.       <TexCoord X="0" Y="0" Z="0"/>
  13.       <Color R="1" G="1" B="0" A="1"/>
  14.       <Normalen X="1" Y="1" Z="0"/>
  15.     </Vertex>
  16.   </Objekt>
  17. </GLObjekte>


so in etwa


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Sep 24, 2006 14:15 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Bei mir siehts momentan so aus
Code:
  1. <xddata>
  2.   <header>
  3.     <version> 1.0</version>
  4.     <typ>mesh</typ>
  5.   </header>
  6.   <type>
  7.     <objdata>
  8.       <objcount typ='integer' count='1'/>
  9.     </objdata>
  10.     <entdata>
  11.       <entcount typ='integer' count='1'/>
  12.     </entdata>
  13.     <uvcoord>
  14.       <u typ='float' count='1'/>
  15.       <v typ='float' count='1'/>
  16.     </uvcoord>
  17.     <vector>
  18.       <x typ='float' count='1'/>
  19.       <y typ='float' count='1'/>
  20.       <z typ='float' count='1'/>
  21.     </vector>
  22.     <particles>
  23.       <pos typ='vector' count='1'/>
  24.     </particles>    <faces>
  25.       <numverts typ='uinteger' count='1'/>
  26.       <smooth typ='boolean' count='1'/>
  27.       <normal typ='vector' count='1'/>
  28.       <vertex typ='vector' count='-1'/>
  29.       <uv typ='uvcoord' count='-1'/>
  30.       <texturename typ='string' count='1'/>
  31.     </faces>
  32.     <mesh>
  33.       <name typ='string' count='1' />
  34.       <numfaces typ='uinteger' count='1'/>
  35.       <numverts typ='uinteger' count='1'/>
  36.       <hasFaceUV typ='boolean' count='1'/>
  37.       <face typ='faces' count='-1'/>
  38.     </mesh>
  39.     <entity>
  40.       <name typ='string' count='1'/>
  41.       <kind typ='string' count='1'/>
  42.       <particle typ='particles' count='1'/>
  43.     </entity>
  44.   </type>
  45.   <data>
  46.     <objdata objcount='1'/>
  47.     <entdata entcount='1'/>
  48. <mesh name='Cube.004' numfaces='1' numverts='4' hasFaceUV='1'>
  49.   <face numverts='4' smooth='0'>
  50.     <normal x='-2.2e-007' y='1.0' z='-1.9e-007'/>
  51.     <vertex x='-0.39999992' y='-1.5e-007' z='-0.39999971'/>
  52.     <vertex x='-0.39999974' y='3e-008' z='0.39999971'/>
  53.     <vertex x='0.39999959' y='1.8e-007' z='0.39999971'/>
  54.     <vertex x='0.39999971' y='6e-008' z='-0.39999971'/>
  55.   <texturename>rock.jpg</texturename>
  56.     <uv u='1.5' v='-0.5'/>
  57.     <uv u='-0.5' v='-0.5'/>
  58.     <uv u='-0.5' v='1.5'/>
  59.     <uv u='1.5' v='1.5'/>
  60.   </face>
  61. </mesh>
  62.  
  63. <entity name='particle' kind='Particle'>
  64.   <particle>
  65.     <pos x='0.0' y='0.0' z='0.119999907911'/>
  66.   </particle></entity></data></xddata>


Ist aber auch nicht mehr so aktuell, da ich nun indizierte Vertexlisten verwende und deswegen sich die Struktur noch ein wenig verändert hat.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 28, 2006 20:47 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
Da ich ja etwas parallel arbeite, und nun hier (danke an Tak) schon das erste Example bekommen habe, das ich mir auch etwas weiter habe ausführen lassen, bitte ich doch auch die anderen mal um ein Sample ihrer XMLs, damit man mal vergleichen kann und sich was schlaues abgucken kann


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 29, 2006 08:23 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also so gesehen ist XML sehr geduldig und lässt so ziemlich alles mit sich machen was man machen möchte. Es stellt sich auch die Frage in wie weit deine Struktur eine Gültigkeitsprüfung bestehen soll oder nicht. In jedem XML kannst du auch eine Doctype Definition (DTD) angeben. Diese beschreibt wie die einzelnen Elemente auszusehen haben und welche Attribute etc sie haben dürfen. Und so extrem dynamisch Taks Struktur auch ist ich denke nicht, dass man für sie eine DTD erstellen könnte. Eben dadurch, dass sich die Namen der Elemente erst innerhalb der Datei definieren.

Bitte nicht falsch verstehen. Das XML funktioniert auch ohne DTD. Nur ich persönlich finde es besser, wenn man eine klare definierte Struktur hat. Das fällt aber mal wieder in die Kategorie reine Geschmackssache. ;-)

Ein andere Ansatz so etwas zu speichern kann man auch aus den klassischen Textexporten abschauen. Dort sind Vertices und Flächen voneinander getrennt. Soll bedeuten, dass zu erst eine Liste mit Vertices gespeichert wird und dann zum Schluss nur noch eine Liste mit Flächen die sich auf die Vertexliste bezieht.

Aber in erster Linie solltest du für dich wohl erst einmal abklären, was deine Struktur alles abspeichern können muss. Also was muss sie jetzt abspeichern können und was ist in naher Zukunft möglich. Und wenn du dir dessen ziemlich genau sicher bist dann solltest du dich auf die Suche nach einem Format begeben bzw ein eigenes erstellen. Auch nicht unwichtig sind die Dinge die du mit deiner Struktur dann alles anstellen willst. Also was geschiet intern mit den Daten. Es wäre schon sinnvoll diese halbwegs so abzulegen, dass du diese nicht komplett neu berechnen musst. Sondern ideal wäre, wenn du diese so einfach wie möglich kopieren könntest.

PS: Ach ja. Und auch da solltest du Englisch nicht mit dem Deutschen vermischen. Und häufigst ist es so, dass die Bezeichner alle klein geschrieben sind. Was aber keine Rolle spielt. Wichtig ist nur, dass sie überall gleich sind.

PPS: Das ist zwar nicht ganz das was du erwartet hast aber ich hoffe es hilf dir dennoch ein bisschen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 30, 2006 21:30 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Schau dir doch mal Collada an, ein auf XML basierendes 3D-Format hinter dem einige große Namen aus der 3D- und Spielebranche stehen (Sony, etc.). Das bietet alles was man so braucht, inkl. Physikinformationen, ist über das Extra-Tag auch beliebig erweiterbar und der größte Vorteil sind die Im- und Exporter für sogut wie alle gängigen 3D-Modeller (3DS MAX, XSI, Blender). Daher braucht man dann auch keinen eigenen Editor zu schreiben.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 01, 2006 00:15 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Was du so speichern könntest wäre folgendes.
-Vertexliste
-UVcoordliste
-Colorliste
-Normalliste
-Tangentenliste
-Bitangentliste

-Faceliste
--indexliste(3-4 index)
--matfile

-Nodeliste(alle nodes des Octrees)
--faceliste
--nodeid(gibt an welches node im Octree es ist)
--visiblenodelist(alle nodes die vom node aus sichtbar sind)

Ich hab mich so entschieden in meinen files die zugewiesende Textur ein zu tragen und wenn eine Material File mit gleichen namen existiert wird diese genutzt. Z.B.: texname=rock.jpg und rock.lua ist dann meine material file wo dann wirklich alle zusatz infos stehen wie z.B. Textur, Shader, States und Werte für z.B. friction, collisionsound,... . Wenn es keine gibt wird die Textur verwendet.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]