Model Loader: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Ein Model Loader ist eine Unit die ein Model ladet)
 
K (Welche Modellformate gibt es?)
 
(23 dazwischenliegende Versionen von 13 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Ein Modell-Loader ist eine Unit, oder DLL die ein 3D-Model von einem Typ* für ein Programm/ was auch immer ladet, damit es angezeigt werden kann.
+
==Was ist das?==
 +
Ein Modell-Loader ist eine Unit, oder DLL die ein 3D-Model in einem bestimmten Typ* vorliegt für ein Programm oder für was auch immer lädt, damit es angezeigt werden kann.
  
Wieso aber braucht man einen Modell-Loader wenn man nicht einfach das Model ins X-Format konvertiert? Einige Model-Typen (zb. md3) besitzen verschiedene Animations und Geometrie Stufen die die Details des Models sinken.
+
==Für was brauch ich das?==
 +
Wenn man 3D Modelle von speziellen Objekten (z.B. Einheiten, Landschaftsgegenstände und Gebäude in Strategiespiele, oder Gegner für Shooter) benötigt, ist es wesentlich komfortabler ein Modell in einem speziellen 3D Modellierungsprogramm zu modellieren, als es „von Hand“ in OpenGL zu bauen. Man muss allerdings anschließend die Daten (Informationen zur Geometrie, Texturierung eventl. Animierung) selbst aus den abgespeicherten Modellformaten extrahieren.
  
 +
Und genau da kommt der „Model Loader“ ins Spiel. Dieses Stück Code ermöglicht es dem Nutzer die Daten komfortabel aus den Dateien zu Laden. Das erleichtert die Arbeit im Vergleich zu selber gebauten Objekten natürlich enorm. Und die Modelle sehen, wenn man genügend Talent hat, auch meist wesentlich besser aus.
  
 +
==Speichern alle Formate Animationen?==
 +
Nein! Es sind sogar nur recht wenige die Animationen bieten. Außerdem gibt es Modeller die Animationen nicht in einer Datei sondern in vielen Einzeldateien speichern. Allerdings heißt das nicht, dass nur die Modelle aus teuren Modellern Animationen (vernünftig) speichern können. Es gibt auch freie und günstige Software (Milkshape 3D), die so etwas kann.
  
 +
==Welche Modellformate gibt es?==
 +
Hier eine kleine Auflistung der gebräuchlichsten Formate:
 +
* .blend ([http://blender3d.org Blender])
 +
* .collada ([http://www.khronos.org/collada/ Collada])
 +
* .3ds (3D Studio)
 +
* .obj (Wavefront OBJ)
 +
* .lwo (Lightwave)
 +
* .ms3d (Milkshape 3D)
 +
* .bsp (ID Software BSP)
 +
* .md3 (ID Software MD3)
 +
* .x (Microsoft DirectX)
 +
* .off (Object File Format)
  
* Ein Typ eines 3D-Models ist zb. .3ds, .max, .wing......
+
==Wozu gibt es Exporter Plugins und Scripte?==
 +
Für 3D Entwicker ist es wichtig, die erstellten Meshdaten auch in ein vorhandenes oder eigenes Format zu speichern.
 +
Hierzu gibt es von den meisten 3D Editioren Plugins oder Scripte die dieses erledigen.
 +
 
 +
Einige Programme wie 3DS Max und Blender bieten beides, wobei in Fall von 3DS Max lieber Plugins verwendet werden sollten (Geschwindigkeitsvorteil). Blender bietet für Scripte einen Python Interpreter, der lediglich ein bisschen modifiziert wurde.
 +
 
 +
Mit der Möglichkeit, eigene Format zu speichern, kann man sich auch aus dem Lizensproblem für bestimmte Formate rauswinden und man hat die Möglichkeit das Format an benötigte Bedingungen anzupassen.
 +
 
 +
== Format und Model Loader Liste ==
 +
{|{{Prettytable_B1}}
 +
!width="10%"| Format
 +
!width="40%"| Format Features
 +
!width="50%"| Loader
 +
|-
 +
| Cal3D
 +
|
 +
* kombinieren von Animationen (30% gehen, 50% rennen, 20% stolzieren und Winken)
 +
* stufenloses [[Level of Detail]]
 +
|
 +
{|{{Prettytable_B1}} width="100%"
 +
! Name
 +
! nutzbar mit
 +
! Umgesetzte Features
 +
|-
 +
| [http://gna.org/projects/cal3d/ Cal3D]
 +
| C++
 +
| alle Cal3D (0.10) Features
 +
|-
 +
| DCal3D
 +
| Delphi / Object Pascal
 +
| nur Cal3D 0.6 Features
 +
|}
 +
|-
 +
| 3DS
 +
|
 +
* Meshbasierendes 3D-Format
 +
* Vertexbasierende Animationen via Keyframes
 +
* Normalen werden indirekt über Smoothinggroups gesichert
 +
'''Format stammt noch aus DOS-zeiten, daher diverse Einschränkungen :'''
 +
* Maximal 65k Vertices pro [[Mesh]]
 +
* Texturnamen sind auf [http://de.wikipedia.org/wiki/8.3 8.3 Dateinamen] beschränkt
 +
* Bones werden nicht exportiert
 +
* Normalen werden nicht exportiert (nur Smoothinggroups)
 +
'''Kein freies Format'''
 +
|
 +
{|{{Prettytable_B1}} width="100%"
 +
! Name
 +
! nutzbar mit
 +
! Umgesetzte Features
 +
|-
 +
| [http://www.delphigl.com/forum/viewtopic.php?t=2421 gl3ds]
 +
| Delphi / Object Pascal
 +
| Unbekannt
 +
|-
 +
| [http://www.lib3ds.org/ lib3ds]
 +
| C/C++
 +
| Unbekannt
 +
|}
 +
|-
 +
| OFF
 +
|
 +
* extrem einfaches 3D-Format
 +
* ASCII und Binär-Variante
 +
* nur Vertices, Normalen, Texturkoordinaten und Farben
 +
* nicht auf Dreiecke beschränkt, beliebige Polygone möglich.
 +
* '''nicht jeder Exporter (z.B. Blender) kann das vollständige Format!'''
 +
| Da das Format so einfach ist ist ein Loader schnell implementiert:
 +
[http://web.mit.edu/lugao/MacData/afs/athena/software/geomview_v1.9.3/www/OFF.html Formatbeschreibung].
 +
|}
 +
 
 +
[[Kategorie:Technik_oder_Algorithmus]]

Aktuelle Version vom 13. Mai 2012, 16:39 Uhr

Was ist das?

Ein Modell-Loader ist eine Unit, oder DLL die ein 3D-Model in einem bestimmten Typ* vorliegt für ein Programm oder für was auch immer lädt, damit es angezeigt werden kann.

Für was brauch ich das?

Wenn man 3D Modelle von speziellen Objekten (z.B. Einheiten, Landschaftsgegenstände und Gebäude in Strategiespiele, oder Gegner für Shooter) benötigt, ist es wesentlich komfortabler ein Modell in einem speziellen 3D Modellierungsprogramm zu modellieren, als es „von Hand“ in OpenGL zu bauen. Man muss allerdings anschließend die Daten (Informationen zur Geometrie, Texturierung eventl. Animierung) selbst aus den abgespeicherten Modellformaten extrahieren.

Und genau da kommt der „Model Loader“ ins Spiel. Dieses Stück Code ermöglicht es dem Nutzer die Daten komfortabel aus den Dateien zu Laden. Das erleichtert die Arbeit im Vergleich zu selber gebauten Objekten natürlich enorm. Und die Modelle sehen, wenn man genügend Talent hat, auch meist wesentlich besser aus.

Speichern alle Formate Animationen?

Nein! Es sind sogar nur recht wenige die Animationen bieten. Außerdem gibt es Modeller die Animationen nicht in einer Datei sondern in vielen Einzeldateien speichern. Allerdings heißt das nicht, dass nur die Modelle aus teuren Modellern Animationen (vernünftig) speichern können. Es gibt auch freie und günstige Software (Milkshape 3D), die so etwas kann.

Welche Modellformate gibt es?

Hier eine kleine Auflistung der gebräuchlichsten Formate:

  • .blend (Blender)
  • .collada (Collada)
  • .3ds (3D Studio)
  • .obj (Wavefront OBJ)
  • .lwo (Lightwave)
  • .ms3d (Milkshape 3D)
  • .bsp (ID Software BSP)
  • .md3 (ID Software MD3)
  • .x (Microsoft DirectX)
  • .off (Object File Format)

Wozu gibt es Exporter Plugins und Scripte?

Für 3D Entwicker ist es wichtig, die erstellten Meshdaten auch in ein vorhandenes oder eigenes Format zu speichern. Hierzu gibt es von den meisten 3D Editioren Plugins oder Scripte die dieses erledigen.

Einige Programme wie 3DS Max und Blender bieten beides, wobei in Fall von 3DS Max lieber Plugins verwendet werden sollten (Geschwindigkeitsvorteil). Blender bietet für Scripte einen Python Interpreter, der lediglich ein bisschen modifiziert wurde.

Mit der Möglichkeit, eigene Format zu speichern, kann man sich auch aus dem Lizensproblem für bestimmte Formate rauswinden und man hat die Möglichkeit das Format an benötigte Bedingungen anzupassen.

Format und Model Loader Liste

Format Format Features Loader
Cal3D
  • kombinieren von Animationen (30% gehen, 50% rennen, 20% stolzieren und Winken)
  • stufenloses Level of Detail
Name nutzbar mit Umgesetzte Features
Cal3D C++ alle Cal3D (0.10) Features
DCal3D Delphi / Object Pascal nur Cal3D 0.6 Features
3DS
  • Meshbasierendes 3D-Format
  • Vertexbasierende Animationen via Keyframes
  • Normalen werden indirekt über Smoothinggroups gesichert

Format stammt noch aus DOS-zeiten, daher diverse Einschränkungen :

  • Maximal 65k Vertices pro Mesh
  • Texturnamen sind auf 8.3 Dateinamen beschränkt
  • Bones werden nicht exportiert
  • Normalen werden nicht exportiert (nur Smoothinggroups)

Kein freies Format

Name nutzbar mit Umgesetzte Features
gl3ds Delphi / Object Pascal Unbekannt
lib3ds C/C++ Unbekannt
OFF
  • extrem einfaches 3D-Format
  • ASCII und Binär-Variante
  • nur Vertices, Normalen, Texturkoordinaten und Farben
  • nicht auf Dreiecke beschränkt, beliebige Polygone möglich.
  • nicht jeder Exporter (z.B. Blender) kann das vollständige Format!
Da das Format so einfach ist ist ein Loader schnell implementiert:

Formatbeschreibung.