Wavefront Object Loader zeigt nur eine Textur an.

MannyNZ

Mitglied
Hi,

Ich habe mit Blender v2.49b ein Modell erstellt, welches aus mehreren kleinen Teilmodellen besteht die ich mit Umschalt+F1 hinzugefügt habe. Im resultierenden Gesamtmodell gibt es nun 3 Materialien die eine Textur haben, die restlichen bestehen lediglich aus Farbwerten.
Exporte ich nun das Modell in das .obj Format, somit stimmt eigentlich alles, bis auf die Einträge eines Teilmodells (falsches Bild und Falsche Materialbezeichnung, so wie s früher war, da aber .tga beim Einlesen mit Java nicht unterstützt wird hab ichs in png umgewandelt)
Gut das ist nicht das Problem, das kann ich in der .obj und der .mtl von Hand ändern.

Wenn ich nun mit Hilfe des Wavefront Object Loaders das Modell lade, habe ich das Problem, dass nur eine Textur/Material verwendet wird und das aber für das gesamte Modell, nicht die einzelnen Texturen für die Teilmodelle, so wie ich es eigentlich will.

Hier die Dateien:
platine_e.mtl
platine_e.obj

Das Bild wie es in Blender ist und auch in meinem Programm sein sollte:
platinesoll.jpg


Und so das Bild wie es ist ( die Objekte sind alle da nur haben alle diesselbe Textur ):
platineist.jpg


So und nun der Code, der das Object Laden soll:

Java:
private BranchGroup loadObj(String path)
{
	Scene scene = null;

	ObjectFile objFileloader = new ObjectFile(ObjectFile.RESIZE);

	try
	{
	    scene = objFileloader.load(path);
	} 
           catch (Exception e)
	{
	    scene = null;
	    System.err.println(e);
	}

	if (scene == null)
	    System.exit(1);

	BranchGroup branchGroup = scene.getSceneGroup();

	return branchGroup;
}

Also eigentlich nichts wildes, soweit ich das verstanden habe, sollte der Loader ja das Mesh, Materialien und Texturen alle mit laden, sodass ich nur noch die BranchGroup zurück geben muss.

Lichter sind auch gesetzt ( das Feuerwerk ist einfach nur ein Hintergrundbild ;) ).

OS: Kubuntu 10.04.1 LTS 64-bit

Wäre cool wenn mir jemand sagen könnte wo ich hier den Fehler mach.
Falls noch weitere Angaben benötigt werden, einfach nachfragen.


Grüße
Manny
 

MannyNZ

Mitglied
Klar gerne :)

Man muss dazu sagen, dass ich die Objekte nach 4 Video Tutorials erstellt habe. Daher nicht schlagen, wenn ich die Texturen Materialien etc. nicht sinnvoll benannt habe ^^. Und künstlerisch bin ich auch nicht veranlagt ... Texturen passen vom Bild her nicht richtig drauf, aber das ja nicht das eigentliche Problem :).

Hier das Dateien ( Die Objekte in der zweiten Ebene der Platine sollen nicht mit exportiert werden. )
TicTacToeBoard.blend
resistor.blend
ic.blend
LED.blend

Und die Texturen:
IC.png
Platine.png
Resistor.png

So hoffe ich habe nichts vergessen, sonst einfach sagen.

Vielen Dank für deine Bemühungen.

Manny
 

Runtime

Top Contributor
Sollte klappen.. Vielleicht kommt Java3D einfach nicht mit UVs aus. Generell empfehle ich dir sowieso eher JMonkeyEngine zu nehmen, da es schneller, einfacher ist. Die Objekte kannst du dann als OgreXML (unterstützt mehr) zu exportieren und laden.
 
Zuletzt bearbeitet:

MannyNZ

Mitglied
Hi,
danke für deine Antwort.

Naja eine Textur bekommt er ja hin also sollten UVs Coords nichts neues sein für Java3D ( wenn ich einfach ein quader nehm und die Platine Textur draufhaut geht's auch :/ )

Und ich kann mir schlecht vorstellen, dass j3d nur 1 Textur unterstützt. Ich denke eher, dass der Fehler bei mir irgendwo liegt (Java Programm oder Blender Export).

JMonkeyEngine werd ich mir gern für die Zukunft anschauen, aber will ja kein Game der Größe schaffen, für das ich eine Engine bräuchte ^^ mir reicht normale Rendern, wenn der Loader die Texturen alle richtig setzen würde oder ich meinen Fehler finde.

Manny
 

Runtime

Top Contributor
Ich hätte schwören können, dass es funktioniert, hab mich aber leider zu wenig mit Java3D beschäftigt. Auf jeden Fall funktionierts, wenn man das Model als OgreXML exportiert und mit JMonkeyEngine lädt.
 

MannyNZ

Mitglied
Hi,

d.h. Entweder mach ich hier beim Exportieren etwas falsch, da es ja mit OgreXML unter der Enginge bei dir geht. Oder es kann daran liegen, dass ich ein 64bit Linux verwende.
Oder ich mache was auf Java Seite falsch. Oder irgendetwas ist gebuggt ^^

Wäre schön, wenn jemand das mit j3d testen mag, am besten 32bit win/linux.

Manny
 

MannyNZ

Mitglied
Hi,

Gibt es wirklich niemanden der dasselbe Problem hat, bzw. gibt es jemanden der J3D und den wavefront Loader benutzt aber keine Probleme hat? Falls letzteres gilt, kann man mir derjenige dann sein .obj model schicken dass ich es testen kann ob es bei mir nur am export aus blender liegt?
 

Ähnliche Java Themen


Oben