Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 20 von 21

Thema: Khronos finalisiert glTF 1.0, für effiziente Übertragung von 3D Szenen und Modellen

  1. #1
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    The Khronos Group, an open consortium of leading hardware and software companies, today announced that the glTF™ 1.0 (GL Transmission Format ) royalty-free specification for transmission and loading of 3D content has been finalized for Ratification and is immediately available for use by tools and application vendors. glTF is an efficient, interoperable asset delivery format that compresses the size of 3D scenes and models, and minimizes runtime processing by applications using WebGL™ and other APIs.
    Mehr: https://www.khronos.org/news/press/k...-specification

    Es mag nicht ganz hier herpassen, da ja in der Java-Welt nicht sooo viele Leute sooo viel mit 3D-Zeugx machen, aber ein paar würden mir da schon einfallen

    Das GitHub-Repository ist unter https://github.com/KhronosGroup/glTf . Ich verfolge das schon eine Weile, weil es ein interessantes Dateiformat z.B. auch für in-Game-Modelle sein könnte. Es gibt auch anstehende Erweiterungen ("binary GLTF"), mit dem tatsächlich die OpenGL buffer mit in die Datei gepacht werden können, und man somit eine Szenen/Modellbeschreibung hat, die extrem kompakt und Hardware (d.h. OpenGL-) nah aufgebaut ist.

  2. #2
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    @Fancy , @Zombiepriester , @mymaksimus (Hat jemand Lust, einen Java GLTF-Viewer zu schreiben? )

  3. #3
    User Viertel Megabyte
    Registriert seit
    30.07.2013
    Fachbeiträge
    302
    Genannt
    74 Post(s)
    Moin,

    ich hab die Spec noch nicht gelesen. An was hattest Du den konkret gedacht?

    Gruß
    Fancy

  4. #4
    User Megabyte Avatar von mymaksimus
    Registriert seit
    17.08.2013
    Fachbeiträge
    1.274
    Genannt
    50 Post(s)
    tja alleine würde ich da wohl ewig dran sitzen, wenn ihr ein projekt aufbaut, und aufgaben verteilt... wieso nicht ^^

  5. #5
    User Halbes Megabyte Avatar von Zombiepriester
    Registriert seit
    16.05.2013
    Fachbeiträge
    683
    Genannt
    18 Post(s)
    Also mein erster Eindruck dazu ist: Es sieht wesentlich geordneter und strukturierter aus, als andere Formate, das ist positiv. Das interessiert mich durchaus.

  6. #6
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    Na, das mit den @'s hat ja geklappt

    Die Spec habe ich auch noch nicht komplett gelesen. Insgesamt ist das natürlich ein ziemlich komplexes Ding. Ich hatte nur auf der Arbeit mit einer "Teilmenge" (+Erweiterungen) von GLTF zu tun. Und ich fand den Gedanken interessant, dass es dabei um ein Dateiformat geht, das 1. SEHR nah an OpenGL (und damit sehr kompakt) ist und 2. von praktisch jedem gerendert werden kann... oder können sollte. Ob WebGL oder Desktop, Android, Linux, wasauchimmer - wobei genau das natürlich durch die Nähe zu OpenGL erst erreicht wird.

    Ich hatte (vor etwa einen Jahr) auch schon ein paar Zeilen Code geschrieben, um besagte (winzig kleine!) Teilmenge zu lesen und was auf den Bildschirm zu bringen. Aber wenn man das vernünftig und systematisch machen wollte, müßte man da anders rangehen. Spätestens wenn es um komplette Animationen (bzw. Szenenbeschreibungen geht) wird das sicher recht aufwändig, und bei den "Techniques" (d.h. Materialien/Shadern) auch konzeptuell nicht so einfach.

    Zwischendurch hatte ich dann nochmal angesetzt, bin dann aber "abgedriftet" - das ging dann erst in Richtung von etwas, was aus einem JSON-Schema Klassen generiert (ähnlich wie JAXB aus XSDs). (Andernfalls würde einem so ein Kleinkram, ohne auch nur einen Hauch von Ahnung vom ganzen Drumherum zu haben, gar nicht auffallen ).

    Aber mal konkret: Wäre eine 1:1-Repräsentation dessen, was im Schema steht, ein gangbarer Weg?

  7. #7
    User Halbes Megabyte Avatar von Zombiepriester
    Registriert seit
    16.05.2013
    Fachbeiträge
    683
    Genannt
    18 Post(s)
    Ich bin mir zwar nicht sicher, aber wahrscheinlich meinst du mit Schema das:
    Khronos finalisiert glTF 1.0, für effiziente Übertragung von 3D Szenen und Modellen-files.png
    Ich denke man wird auf jeden Fall eine ganz gewöhnliche Textur und Shader Klasse brauchen. Außerdem Klassen für das laden der Indexe und Vertices aus den .bin Dateien. Natürlich muss das ganze strukturiert werden, da ich mich aber mit diesem JSON Format nicht wirklich auskenne, weiß ich nicht ob hier eine Klassentrennung nötig wäre. Mit den Animationen/Skins in den .bin Dateien kann ich leider gar nichts anfangen.
    PS: Weiß jemand, wie man die .bin Datei kodieren muss? Bei mir kommt da nur diese schwarzen Balken in Notepad++ raus(Kennt man vielleicht). Dabei sollten dort ja die Vertices stehen, oder hab ich da was falsch verstanden?

  8. #8
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    Mit "Schema" meinte ich schon das JSON-Schema: https://github.com/KhronosGroup/glTF...ication/schema

    Dort ist festgeschrieben, was in dem JSON vorkommen kann, welche Bedingungen gelten, und wie es zu interpretieren ist. Ähnlich zu einem XML-Schema. Siehe auch JSON Schema and Hyper-Schema

    Mein Generator zielte dann darauf ab, aus sowas wie https://github.com/KhronosGroup/glTF...sh.schema.json z.B. eine Klasse
    Java Code:
    1.  
    2. /**
    3.  * A set of primitives to be rendered.  A node can contain one or more meshes.  A node's transform places the mesh in the scene.
    4.  */
    5. class Mesh extends GlTFChildOfRootProperty
    6. {
    7.     /**
    8.      * An array of primitives, each defining geometry to be rendered with a material.
    9.      */
    10.     private MeshPrimitive primitives[];
    11.  
    12.     ... getter+setter...
    13. }
    zu machen. Ob das Sinn macht? Hm. Vermutlich könnte man es auch mit einfacheren Strukturen abbilden, aber spätestens bei sowas wie https://github.com/KhronosGroup/glTF...ns.schema.json wird es schwer, aus dem Stand mal eine Klasse rauszuhauen, die genau das abbildet, und die "einfacher" ist, als etwas, was ein Codegenerator erstellen würde...

  9. #9
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    Mit viel Yak-Shaving (die meiste Zeit ist in den JSON-Schema-Zu-Datenmodell-Generator geflossen), und eigentlich nur um zu sehen, ob Rendering "Sinn macht" oder zumindest "funktioniert", und nur als hingehackter Test, vorbei an vielen Konzepten, die eigentlich hinter glTF stehen (speziell die Accessors für die BufferViews), und natürlich ohne Szenen, Knoten, Animationen und Techniques, und vieles ignorierend, was sich bei glTF so selbsverständlich auf WebGL bezieht ... trotz allem hat der Inhalt dieses Screenshots gerade bewirkt, dass ich meinen rechten Mundwinkel einige Millimeter nach oben gezogen habe:

    Khronos finalisiert glTF 1.0, für effiziente Übertragung von 3D Szenen und Modellen-jgltf01.png

  10. #10
    User Megabyte Avatar von mymaksimus
    Registriert seit
    17.08.2013
    Fachbeiträge
    1.274
    Genannt
    50 Post(s)
    hübsch, jetzt mach mal antialiasing ^^
    "und außerdem, so lange her, dafür gibts keine teile mehr.."

  11. #11
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    Auch wenn ich davon ausgehe, dass diese Bemerkung keine verkappte Kritik daran war, dass man einen RenderingEnvironment noch nicht sagen kann, dass AA unterstützt werden soll, habe ich mal intern ein new PixelFormat(32, 0, 24, 0, 4) an den AWTGLCanvas übergeben - schittebön :

    Khronos finalisiert glTF 1.0, für effiziente Übertragung von 3D Szenen und Modellen-jgltf02aa.png

  12. Es bedanken sich:
    mymaksimus (02.04.2016)
  13. #12
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    Noch ein Schrittchen...
    Khronos finalisiert glTF 1.0, für effiziente Übertragung von 3D Szenen und Modellen-gltf02.png

    (entsprechend https://raw.githubusercontent.com/Kh...screenshot.png ...)

    Lichter werden sicher noch spaßig. Mal schauen....

  14. #13
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    Ja, Spaß mit Lichtern. Da wundert man sich stundenlang, warum das eigene Bild nicht mit dem "Referenzbild" auf https://raw.githubusercontent.com/Kh...screenshot.png übereinstimmt (und das Licht immer aus der falschen Richtung zu kommen scheint), bis man merkt, dass das "Referenzbild" falsch ist

  15. #14
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    @Zombiepriester Das hatte ich ganz übersehen:

    PS: Weiß jemand, wie man die .bin Datei kodieren muss? Bei mir kommt da nur diese schwarzen Balken in Notepad++ raus(Kennt man vielleicht). Dabei sollten dort ja die Vertices stehen, oder hab ich da was falsch verstanden?
    Ist zwar jetzt etwas zu spät aber: Diese BIN-Dateien sind praktisch OpenGL-Buffer, die direkt als Dateien rausgeschrieben wurden (und zwar ggf. sogar mehrere OpenGL-Buffer am Stück). D.h. man liest diese Daten erstmal so, wie sie sind - z.B. in einen (direct) ByteBuffer - das ist am flexibelsten und direktesten. In den BufferViews steht dann, welche Teile dieses riesigen Memory-Blocks "einzelne" OpenGL-Buffer sind - praktisch nur definiert über offset+länge der Einzelteile. (Deswegen auch ein ByteBuffer: Da kann man sich dann mit ByteBuffer#slice die passenden Scheibchen rausscheiden ). Etwas frickeliger wird's dann bei der Frage, wie diese einzelnen Buffer zu interpretieren sind. Also, ob das nun 3D-float-vektoren (z.B. Vertexpositionen) sind, oder 2D-float-vektoren (z.B. Texturkoordinaten), oder Indizes (als unsigned ints, oder unsigned shorts...?!). Das alles geht aus den Accessors hervor. Richtig kompliziert wird es, wenn man die dann in einem Shader richtig verdrahten will. Da entsteht dann ein Gewirr von Referenzen, mit Meshes, Techniques, Parameters, Semantics und Uniforms ... vielleicht schreib' ich das irgendwann mal detaillierter auf (in der Hoffnung, dass ICH es dann kapiere ). In den Buffern können aber auch andere Daten stehen - also nicht nur "Vertexpositionen für einen OpenGL-Buffer", sondern z.B. auch der Informationen über Animationen - praktisch als eine Folge von "Keyframes", etwa von 3D-Vektoren oder Quaternionen, die (wenn man sie richtig interpretiert) irgendwann in Transformationsmatrizen landen, und sowas hier erlauben (was ich gerade als ersten, noch SEHR rudimentären Test mal hingepfuscht habe: )

    Khronos finalisiert glTF 1.0, für effiziente Übertragung von 3D Szenen und Modellen-croppercapture-7-.gif

  16. #15
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    Häh, ja, *schäm* ... so ist's richtig:

    Khronos finalisiert glTF 1.0, für effiziente Übertragung von 3D Szenen und Modellen-croppercapture-10-.gif

  17. Es bedanken sich:
    mymaksimus (23.04.2016)
  18. #16
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    Huiiiiiii
    Khronos finalisiert glTF 1.0, für effiziente Übertragung von 3D Szenen und Modellen-gltfvc01.jpg

    Eine Test-Szene mit Kameraflügen von von https://github.com/KhronosGroup/glTF...ampleModels/VC - es gibt zwar noch ein paar Issues ( https://github.com/KhronosGroup/glTF/issues/576 ) und offene Fragen zur Interpretation der Animationsdaten, aber ansonsten gibt das nen Klasse Bildschirmschoner ab

  19. #17
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    Der Screenshot für das heutige update ist in https://forum.byte-welt.net/news-und...tml#post131692 - allerdings wird das jetzt (auch) aus Binary glTF ( https://github.com/KhronosGroup/glTF...HR_binary_glTF ) gelesen

  20. #18
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    Wieder nicht viel neues, aber intern viel rum-refactort, um das ganze weniger spezifisch für die Rendering-Lib zu machen. Dabei ist aber immerhin hinten runter gefallen, dass man jetzt relativ leicht zwischen den verschiedenen Kameras umschalten kann:

    Khronos finalisiert glTF 1.0, für effiziente Übertragung von 3D Szenen und Modellen-gltfcameras01.jpg

    Ich hadere ja immernoch damit, dass ich https://java.net/projects/vecmath/ verwende ... das ist nicht mehr ganz so up to date, wird nicht mehr weiterentwickelt und so... @Fancy , @Zombiepriester , @mymaksimus Hat schonmal jemand https://github.com/JOML-CI/JOML verwendet? Sieht ganz vernünftig aus - bin nur nicht sicher, ob sich das nicht von einer kleinen, pragmatischen, in sich abgeschlossenen Vector-Lib zu irgendwas größerem entwickelt - die letzten Entwicklungen sahen auch etwas suspekt aus: MUSS das mit dem Unsafe denn sein? Ich hatte ja schonmal angeregt, vielleicht eine Java-Version von GLM zu schreiben - genau DAS sucht man ja eigentlich. Es gibt zwar https://github.com/jroyalty/jglm , aber das sieht auch recht tot und nicht überzeugend aus...
    Kennt jemand gute Alternativen?

  21. #19
    User Floppy Disc Avatar von Sen-Mithrarin
    Registriert seit
    26.10.2013
    Fachbeiträge
    756
    Genannt
    63 Post(s)
    Wow - dieser Texturen-Matsch - ich fühle mich zurückversetzt in die Zeit des F-Zero für den SNES - hat erschreckende Ähnlichkeit.
    Biskuit ... das is' glaub ich fast so 'ne Suppe
    ein vergruseltes 2016 und so ...
    "Darf ich dir noch was anbieten?" - "Du meinst außer Steaks, Bier, Kippen und nen Lapdance?"

  22. #20
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.948
    Genannt
    321 Post(s)
    Naja, das ist eine Testszene. Die Texturen sind 256x256, und die ganze Szene insgesamt hat <4MB (also weniger, als EINE Textur in einem "richtigen Spiel" hat )

Seite 1 von 2 1 2 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Router kaputt?, und Daten Übertragung
    Von mymaksimus im Forum Netzwerkprogrammierung
    Antworten: 11
    Letzter Beitrag: 12.02.2014, 13:54

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •