Blender 3D Objekte in LWJGL laden

Hallo ich bin gerade dabei mein eigenes 3D Spiel in LWJGL zu programmieren. ::winke
Es soll eine art Minecraft Klon sein. Natürlich werde ich die Texturen selber machen.

Meine Frage ist wie kann ich Blender obj Dateien in LWJGL laden und dann zeichnen.
Ich bedanke mich schon im vorraus für eure Antworten! ::pc

Wenn du es “selbst” schreiben möchtest könnte ich dir die Videos von TheCodingUniverse empfehlen. Speziell das Model-Laden wird hier : http://www.youtube.com/watch?v=izKAvSV3qk0 gezeigt. Will man natürlich mehr Funktionalität, muss man wohl auf eine schon vorhandene Lösung zurückgreifen. Für LWJGL fallen mir jedoch auf Anhieb keine Modelloader ein.

Wenn ich das richtig sehe, wird in dem Video beschrieben, wie man einen OBJ-Loader bastelt (ich hatte da mal einen geschrieben, javagl.de - Utilities ). Teilweise hängt das ganze aber auch davon ab, wie man am Ende rendern will. Du hast ja hoffentlich nicht vor, die Würfel als OBJ-Dateien zu laden? :wink:

Um ehrlich zu sein doch…
Wollte ich aber auch nutzen um die Tiere und die Monster zu rendern. :smiley:

Edit: Achja im Video von TheCodingUniverse wird nicht gezeigt wie man die Datei
an einer bestimmten position rendert :confused:

Die Frage an sich, die Intention, einen Würfel als OBJ reinzuladen, und die Formulierung “eine Datei an einer bestimmten Position zu rendern” legt die Vermutung nahe, dass man hier vielleicht einen anderen Einstiegspunkt empfehlen sollte.

Wenn du das mit LWJGL machen willst, solltest du bedenken, dass reines OpenGL (bzw. LWJGL) schon sehr low-level ist. Der Aufwand, damit ein komplettes Spiel zu schreiben, kann beachtlich sein, und bevor man nicht zumindest schonmal ein paar Tutorials durchgearbeitet hat (wie etwa den etwas veralteten Klassiker http://nehe.gamedev.net/ , oder das auf den ersten Blick sehr schöne (und vor allem weitgehend aktuelle) http://www.opengl-tutorial.org/ ) sollte man sich da vielleicht nicht dranmachen. Oder, um es so zu formulieren: Der Pseudocode

Model model = Loader.loadModel("test.obj");
Texture texture = TextureLoader.load("sample.png");
RenderedObject renderedObject = new RenderedObject(model, texture);
renderer.render(renderedObject);
renderedObject.setPosition(12.3, 34.5, 56.7);

wird ohne Bibliotheken, die über LWJGL hinausgehen, etliche tausend Zeilen (!) SEHR komplizierten (!) Code erfordern, und bei der konkreten Umsetzung architektonische Fragen aufwerfen, an denen… naja, zumindest ich immernoch knabbere…

Von den ganzen Details abstrahieren und Code schreiben, der dem obigen Pseudocode sehr ähnlich ist, kann man mit einer passenden 3D-Engine. Auf http://www.whoopsie.de/home/doku.php?id=topic01:item003 gibt es da eine Übersicht. Die bekannteste dürfte JME sein, aber eine konkrete, fundierte Empfehlung kann ich nicht geben.

[QUOTE=Marco13]Die Frage an sich, die Intention, einen Würfel als OBJ reinzuladen, und die Formulierung „eine Datei an einer bestimmten Position zu rendern“ legt die Vermutung nahe, dass man hier vielleicht einen anderen Einstiegspunkt empfehlen sollte.

Wenn du das mit LWJGL machen willst, solltest du bedenken, dass reines OpenGL (bzw. LWJGL) schon sehr low-level ist. Der Aufwand, damit ein komplettes Spiel zu schreiben, kann beachtlich sein, und bevor man nicht zumindest schonmal ein paar Tutorials durchgearbeitet hat (wie etwa den etwas veralteten Klassiker http://nehe.gamedev.net/ , oder das auf den ersten Blick sehr schöne (und vor allem weitgehend aktuelle) http://www.opengl-tutorial.org/ ) sollte man sich da vielleicht nicht dranmachen. Oder, um es so zu formulieren: Der Pseudocode

Model model = Loader.loadModel("test.obj");
Texture texture = TextureLoader.load("sample.png");
RenderedObject renderedObject = new RenderedObject(model, texture);
renderer.render(renderedObject);
renderedObject.setPosition(12.3, 34.5, 56.7);

wird ohne Bibliotheken, die über LWJGL hinausgehen, etliche tausend Zeilen (!) SEHR komplizierten (!) Code erfordern, und bei der konkreten Umsetzung architektonische Fragen aufwerfen, an denen… naja, zumindest ich immernoch knabbere…

Von den ganzen Details abstrahieren und Code schreiben, der dem obigen Pseudocode sehr ähnlich ist, kann man mit einer passenden 3D-Engine. Auf http://www.whoopsie.de/home/doku.php?id=topic01:item003 gibt es da eine Übersicht. Die bekannteste dürfte JME sein, aber eine konkrete, fundierte Empfehlung kann ich nicht geben.[/QUOTE]

Danke für die Links!
Ich glaube das kann man jetzt auf [Gelöst/Solved] setzen :wink:
Ähm… Wie geht das auf Gelöst setzen eigentlich ? :stumm:

Mit v dem Button da…

EDIT: Mist. Naja, dem wo “Thema schließen” draufsteht…

Moin,

OBJ Dateien sind wohl die einfachste Möglichkeit Geometrien zu importieren. Und vermutlich schreibt jeder der was mit OpenGL macht mindestens einmal einen eigenen Loader dazu. Meine Variante gibt es hier. Ein Beispiel wie das mit aktuellem OpenGL genutzt werden kann, gibt es hier.

Wenn Du aber gerade erst mit OpenGL anfängst, ist die Variante aus dem Video vermutlich verständlicher. Dort werden als deprecated markierte OpenGL Funktionen genutzt, die das alles etwas anfängerfreundlicher machen.

Einen Würfel würde ich aber nicht so darstellen, sondern etwa so.

Mit der deprecated API kannst Du ein Objekt mittels glTranslate positionieren.

Neben den Links die Dir Marco schon gegeben hat, würde ich noch Learning Modern 3D Graphics Programming empfehlen.

Viele Grüße
Fancy

Der whoopsie link funktioniert nicht mehr

Man darf nicht erwarten, dass so ein Link nach so langer Zeit noch funktioniert, oder dass das, was man notfalls auf https://web.archive.org/web/20130108120247/http://www.whoopsie.de/home/doku.php?id=topic01:item003 findet, noch aktuell ist - aber vielleicht reicht’s als erster Überblick.