jMonkeyEngine 3: Einstieg

Hoeze

Mitglied
Hi,
ich will gerade mein erstes richtiges 3D-Spiel programmieren, ich hab schon einfache 2D-Spiele programmiert, aber noch nie mit OpenGL, etc.
Ich hab also erst versucht, mich in LWJGL einzuarbeiten, beherrsche jetzt auch die grundlegenden Ideen dahinter, allerdings war mir das dann doch auf einem zu niedrigem Programmierlevel, weswegen ich jetzt die JMonkey Engine verweden will.
Jetzt hätte ich eine erste Frage:
Ich will einen flachen Boden machen, auf dem etwas fahren kann, deswegen will ich jetzt erstmal ein flaches Rechteck am Boden mit einem Bild als Textur.
Dazu muss ich wohl die Klasse "Quad" verwenden. Allerdings kann man da bei der Initialisierung nur Höhe und Breite angeben, allerdings müsste ich eigendlich die Ecke links unten und die Ecke rechts oben definieren. Wie stell ich das jetzt an?
 

Hoeze

Mitglied
Danke, ich habs schon zeichnen können, ich wusste nur nicht, wie ich aus einem Rechteck, das senkrecht am Ursprung steht eins mache, das waagerecht da steht, wo ich es brauche
 

Hoeze

Mitglied
neue Frage:
Ich hab ein paar Geometry's, wie schaffe ich es, an den Kanten des Objekts Linien anzubringen?
Gibts dazu eine vorgefertigte Methode oder muss ich mir die für jede Box, Cylinder, etc. selber machen?
 

Fu3L

Top Contributor
Es gibt den Toon-Shader, der ist aber nicht soo recht das, was gut klappt. Der RimLight Shader (aus dem ShaderBlow Projekt) zeichnet auch an den Kanten entlang, aber eher einen Glanz...
Das einfachste ist, eine weitere Geometry, die ganz leicht größer ist, zu verwenden und der unshaded-material zu geben und auf "wireframe" zu setzen. So in der Art macht Minecraft das glaube ich auch (auch, wenns nicht jME ist ;))
 

Hoeze

Mitglied
Weitere Fragen:
1. Wie mach ich Objekte von beiden Seiten sichtbar? Sprich, dass beide Seiten mit Texturen belegt sind?
2. Ich hab mir jetzt mal einen Panzer programmiert, allerdings bekomm ichs nicht hin, dem eine schöne Textur zu geben. Die Teile, die ich mit Sketchup gezeichnet und als .obj eingebunden habe, werden einfach nur grau und bei Zylindern werden die Texturen seltsam verzogen (alles mit dem selben Material). Ich dachte mir eigendlich, dass meine Textur einfach ganz oft nebeneinander auf dem Objekt gezeichnet werden soll, bis die ganze Fläche bedeckt ist. Ich habe nicht wirklich Lust, jeden Panzer einzeln mit Sketchup ein Material zuweisen zu müssen.
 

Fu3L

Top Contributor
Zu 1) was meinst du mit beiden Seiten?

Zu 2) Importieren ist so eine Sache. Ein Google-Suche mit "Importing Models from Sketchup site:jmonkeyengine.org" dürfte helfen ;)
 

Hoeze

Mitglied
Ich hab die Einzelteile meines Panzers als .obj exportiert und dann in jme3 geladen. Da sollte es doch möglich sein, jedem Objekt eines bestimmten Einzelteils eine andere Textur zuzuweisen.
Ich könnte natürlich auch für jede Textur mit Sketchup ein neues Einzelteil erstellen, aber so würde ich eben für jeden Panzer einen kompletten Satz Teile mitnehmen, was einerseits viel Speicherplatz frisst und andererseits das Hinzufügen neuer Panzer erschwert, bzw. das Hinzufügen eigener Texturen verhindern würde, wenn man kein Sketchup besitzt.
 

Marco13

Top Contributor
Kenn' mich mit JME nicht so aus, und Sketchup kenn' ich gar nicht, aber ... Normalerweise stehen in einer OBJ doch mehrere Groups (also in diesem Fall: Alle Einzelteile eines Panzers), und diese Groups werden über das "usemtl"-Schlüsselwort kenntlich gemacht. DAS wiederum bezieht sich auf die MTL-Datei, wo alle Texturen drin stehen sollten. (Ob JME damit klar kommt bzw. wie man das importiert, weiß ich nicht ... aber einzelne OBJs mit einzelnen Texturen klingt krampfig... AUSSER natürlich wenn man sich damit das Leben später leichter macht, wenn man z.B. neue Panzer aus den Einzelteilen anderer Zusammenbauen oder die Einzelteile leicht animieren können will).

EDIT: BTW, das mit den verzerrten Texturen: Hilft vielleicht schon die Info, dass da vermutlich die Texturkoordinaten nicht stimmen?
 

Evil-Devil

Top Contributor
Hab mit Sketchup noch nicht gearbeitet. Das letztes mal das ich ein 3D Modell erstellt hatte war mit Maya und dort musste ich unabhängig vom exportierten Format die UVs definieren und später entsprechend bemalen bzw. direkt in Maya bemalen. An sich sollte das in Sketchup nicht viel anders sein. Modell erzeugen, Textur zuweisen (Auto UV Generierung?) und exportieren.

Danach solltest im OBJ Falle wie schon von Marco geschrieben auf die MTL Informationen zugreifen können/müssen.
 

Hoeze

Mitglied
EDIT: BTW, das mit den verzerrten Texturen: Hilft vielleicht schon die Info, dass da vermutlich die Texturkoordinaten nicht stimmen?

Wie kann ich die ändern? Google spuckt dazu i-wie nichts passendes aus...
Ich will einem Zylinder eine Textur so zuweisen, dass sie auf den flachen Seiten gerade ist, nicht i-wie "rumgezogen"...
 

Marco13

Top Contributor
So viel kann ich dazu nicht sagen (und BTW: Die JME-API-Doku ist ... nicht soo ausführlich..). Aber davon ausgehend, dass es per-Vertex-Texturkoordinaten sind: Man könnte sich die gegebenen Texturkoordinaten abholen, und ihnen die Werte zuweisen, die sie brauchen, entsprechend dem Vertex, der am gleichen Index zu finden ist.
 

Matthias K.

Mitglied
Vielleicht kannst du auf Blender mit ogreXML umsteigen und so alles aus Blender in die JME importieren.
Diesen Schritt wirst du sowieso irgendwann wagen müssen, um z.B. eine schöne Landschaft erstellen zu können.
 

Ähnliche Java Themen

Neue Themen


Oben