Blender Model mit Texturen in Java Importieren

Status
Nicht offen für weitere Antworten.

dergrüne

Aktives Mitglied
Servus,

ich habe mit blender mal ein kleines Model erstellt und dem ein paar einfache Texturen gegeben (halt über importierte jpgs).

Jetzt ist halt die Frage wie ich das Model mit Texturen in Java/Java3D einbinde. Ich habe es zwar schon geschafft das Model zum Importieren und auch entsprechend Lichtquellen etc. gesetzt, nur leider sind die Texturen nicht mehr vorhanden.

Das Model habe ich mit Blender ins obj Format Exportiert und beide Dateien obj und mtl ins selbe Verzeichnis gelegt, so dass die Java Datei diese findet. Ich habe auch die entsprechenden jpgs mit ins Verzeichnis gelegt leider werden die Texturen immernoch nicht angezeigt.

Wenn ich das Bild in Blender rendere werde diese angezeigt. Jetzt ist halt die Frage wie ich das Model korrekt importiere oder ob ich die Texturen separat importieren muss?

mfg

Der Grüne
 

merlin2

Top Contributor
Die Texturen sollten funktionieren, wenn du in Blender auch einstellst, dass die Texturen geschreiben werden sollen (MTL-Datei).
 

dergrüne

Aktives Mitglied
Das müsste ich eigentlich alles angegeben haben.

Die mtl Datei sieht so aus

Code:
# Blender3D MTL File: spaceshipMid.blend
# Material Count: 3
newmtl Material.002
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2


newmtl Material
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2


newmtl Material.001
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2


Der entsprechende JavaCode um das Schiff darzustellen sieht dann so aus

Code:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.io.FileNotFoundException;

import javax.media.j3d.Background;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.DirectionalLight;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;

import com.sun.j3d.loaders.IncorrectFormatException;
import com.sun.j3d.loaders.ParsingErrorException;
import com.sun.j3d.loaders.Scene;
import com.sun.j3d.loaders.objectfile.ObjectFile;
import com.sun.j3d.utils.behaviors.vp.OrbitBehavior;
import com.sun.j3d.utils.universe.SimpleUniverse;


public class ObjLoader extends Applet {

	private static final long serialVersionUID = 1L;
	private String filename = "D:\\develop\\Java3DTest\\bin\\spaceshipMid_Scene.obj";	
	private BoundingSphere bs;
	private SimpleUniverse su;
	
	public void init(){
		setLayout(new BorderLayout());
		setSize(800, 600);
		Canvas3D c = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
		add("Center", c);
		su = new SimpleUniverse(c);
		BranchGroup scene = erstelleSzeneGraph();
		su.getViewingPlatform().setNominalViewingTransform();
	
		OrbitBehavior orbit = new OrbitBehavior(c, OrbitBehavior.REVERSE_ALL);  //OrbitBehavior liegt in dem Paket com.sun.j3d.utils.behaviors.vp
	    orbit.setSchedulingBounds (new BoundingSphere ());
	    su.getViewingPlatform().setViewPlatformBehavior (orbit);
	
		scene.compile();		
		su.addBranchGraph(scene);
	}
	
	public BranchGroup erstelleSzeneGraph(){
		BranchGroup objRoot = new BranchGroup();
		
		ObjectFile f = new ObjectFile(ObjectFile.RESIZE);
		Scene s = null;		
		try {
			s = f.load(filename);			
		} catch (FileNotFoundException e) {
			System.err.println(e);
			System.exit(1);
		} catch (IncorrectFormatException e) {
			System.err.println(e);
			System.exit(1);
		} catch (ParsingErrorException e) {
			System.err.println(e);
			System.exit(1);
		}
		
		bs = new BoundingSphere(new Point3d(0.0,0.0,0.0) ,100.0);
		objRoot = s.getSceneGroup();
		
		Color3f bgColor = new Color3f(0.05f, 0.05f, 0.5f);
		Background bgNode = new Background(bgColor);
		bgNode.setApplicationBounds(bs);
		objRoot.addChild(bgNode);
		
		//Licht

		DirectionalLight d1 = new DirectionalLight();
		d1.setInfluencingBounds(new BoundingSphere());
		d1.setColor(new Color3f(1.0f,1.0f,1.0f));
		objRoot.addChild(d1);
		
		DirectionalLight d2 = new DirectionalLight();
		d2.setInfluencingBounds(new BoundingSphere());
		d2.setDirection(new Vector3f(1.0f,1.0f,0.0f));
		d2.setColor(new Color3f(1.0f,1.0f,1.0f));
		objRoot.addChild(d2);
		
		DirectionalLight d3 = new DirectionalLight();
		d3.setInfluencingBounds(new BoundingSphere());
		d3.setDirection(new Vector3f(-1.0f,-1.0f,-1.0f));
		d3.setColor(new Color3f(1.0f,1.0f,1.0f));
		objRoot.addChild(d3);
		
		return objRoot;
	}
	
}


Muss ich im Javacode die mtl Datei auch irgendwie mit angeben?

Gruß
 

merlin2

Top Contributor
dergrüne hat gesagt.:
Muss ich im Javacode die mtl Datei auch irgendwie mit angeben?
Nein, das musst du nicht. Die MTL-Datei muss nur in der Obj-Datei angegeben werden.
Aber in deiner MTL-Datei steht nichts von Texturen.
Kannst du vielleicht deine *.blend-Datei mal hochladen?
 

dergrüne

Aktives Mitglied

dergrüne

Aktives Mitglied
Nachtrag:

Ich muss dazu sagen, dass ich mit Blender und Java3D erst am Mittwoch angefangen habe und versuche mich halt durch div. Tutorials englisch und deutsche in das Thema einzuarbeiten.

Von daher kann es auch ganz gut sein, dass ich in Blender irgendwas falsch gemacht habe. Vermutlich sogar sonst würde es ja funktionieren ;-D

Gruß
 

merlin2

Top Contributor
Wenn ich das aus Blender exportiere, erhalte ich folgende MTL-Datei:
# Blender3D MTL File: spaceshipMid.blend
# Material Count: 1
newmtl Material.001
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2
map_Kd fluegel.jpg
Wie sieht das Resultat mit dieser aus?

Edit: Sieht außerdem so aus, als ob nur die fluegel.jpg verwendet würde.
 

dergrüne

Aktives Mitglied
Hmm, wenn ich deine MTL Datei benutze läuft mein Programm (Den Code den ich oben gepostet habe) irgendwie in eine Endlosschleife.

Wie hast du das Blender Model den exportiert um so eine MTL zu bekommen?
(Blender 2.45)

Ich gehe über File->Export->Wavefront (.obj) -> Export Wavefront

Dann klicke ich unter "Context" "All Scenes" an und deaktiviere "Selection Only" und dann auf OK.


Gruß
 

merlin2

Top Contributor
Das muss ein Problem deines Codes sein, denn mit meinem Code, deiner OBJ-Datei und meiner MTL-Datei läuft alles korrekt.
 

merlin2

Top Contributor
Hm. Aber auch mit deinem Code, deiner .obj und meiner .mtl läuft alles gut, sobald man den absoluten Pfad durch einen relativen ersetzt.

Edit: Nutze übrigens Blender 2.44.
 

spyboot

Bekanntes Mitglied
Ich habe auch das problem nur das bei mir wenn ich die textur lade erstmal der Fehler:
com.sun.j3d.loaders.ParsingErrorException: Unrecognized token, line 4
Exception in thread "main" java.lang.NullPointerException
at Objekt3D.obj3D.<init>(obj3D.java:26)
at Welt.main(Welt.java:104)
auftaucht ich muss dann dass zb. o Sphere in zeile 4 löschen beispiel:

Code:
# Blender3D v246 OBJ File: 
# [url]www.blender3d.org[/url]
mtllib 1_Scene.mtl
o Sphere
v 0.078723 -1.000000 0.019681
v 0.802323 -0.447215 0.545401
v -0.197662 -0.447215 0.870321
v -0.815702 -0.447215 0.019681
v -0.197662 -0.447215 -0.830959
v 3.026260 -0.447215 -0.506039
v 0.355108 0.447215 0.870321
v -0.644877 3.536669 0.545401
v -0.644877 0.447215 -0.506039
v 0.355108 0.447215 -0.830959
v 0.973148 0.447215 0.019681

...

hinterher:

Code:
# Blender3D v246 OBJ File: 
# [url]www.blender3d.org[/url]
mtllib 1_Scene.mtl

v 0.078723 -1.000000 0.019681
v 0.802323 -0.447215 0.545401
v -0.197662 -0.447215 0.870321
v -0.815702 -0.447215 0.019681
v -0.197662 -0.447215 -0.830959
v 3.026260 -0.447215 -0.506039
v 0.355108 0.447215 0.870321
v -0.644877 3.536669 0.545401
v -0.644877 0.447215 -0.506039
v 0.355108 0.447215 -0.830959
v 0.973148 0.447215 0.019681


...

EDIT: Mann kann das Objekt auch nur sehen wenn ich licht einsetzte und eine textur gibt dan auchnich.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Blender in Java Spiele- und Multimedia-Programmierung 8
J Blender .obj in jme3 benutzen Spiele- und Multimedia-Programmierung 2
A JME3 will Blender/j3o Objekte nicht einladen Spiele- und Multimedia-Programmierung 3
M [JME3] Jmonkey Engine und Wavefront import aus Blender Spiele- und Multimedia-Programmierung 3
H OgreXML Blender-Modelle Spiele- und Multimedia-Programmierung 2
W Jmonkey Egine und Blender Spiele- und Multimedia-Programmierung 4
B Blender 3D in Java Applet realisieren Spiele- und Multimedia-Programmierung 2
S [LWJGL] schwarzer Bildschrim beim rendern von .obj Model Spiele- und Multimedia-Programmierung 2
T Java3D: 3D Model Editor Spiele- und Multimedia-Programmierung 4
G LIBGDX Texturen Problem Spiele- und Multimedia-Programmierung 1
T LWJGL: Terrain-Texturen / 2D-Array in Shader? Spiele- und Multimedia-Programmierung 2
Seikuassi LWJGL - Texturen flackern Spiele- und Multimedia-Programmierung 2
X [LWJGL] Binden von Texturen per PNG File und Texture Sheet Spiele- und Multimedia-Programmierung 1
F VertexBuffer & Texturen? Spiele- und Multimedia-Programmierung 5
Luk10 (LWJGL) Aufwendiges Animieren von Texturen Spiele- und Multimedia-Programmierung 16
T VBOs und Texturen Spiele- und Multimedia-Programmierung 2
B Probleme mit Texturen Spiele- und Multimedia-Programmierung 7
J Partikel Texturen verbinden Spiele- und Multimedia-Programmierung 6
S LWJGL Texturen Spiele- und Multimedia-Programmierung 14
P LWJGL Texturen Spiele- und Multimedia-Programmierung 6
D LWJGL - 2D Texturen werden nicht dargestellt Spiele- und Multimedia-Programmierung 12
T lwjgl Texturen werden nicht gezeichnet Spiele- und Multimedia-Programmierung 23
T JOGL im OrthoMode und Texturen verfärben sich Spiele- und Multimedia-Programmierung 3
B Texturen Deckkraft Spiele- und Multimedia-Programmierung 7
F Kleine GL Texturen auf grosse GL Textur kopieren? Spiele- und Multimedia-Programmierung 24
BattleMaster246 Alpha Kanal in Texturen Spiele- und Multimedia-Programmierung 7
Ivan Dolvich [LWJGL] Texturen überlagern sich Spiele- und Multimedia-Programmierung 2
R Texturen auf Strichmännchen Spiele- und Multimedia-Programmierung 10
S java /jogl /Texturen mit j3d Spiele- und Multimedia-Programmierung 3
A java3d, fehlende texturen unter windows (graka onboard) Spiele- und Multimedia-Programmierung 4
lumo JOGL und Texturen Spiele- und Multimedia-Programmierung 3
G Verschiedene Texturen Spiele- und Multimedia-Programmierung 2
L Texturen? Spiele- und Multimedia-Programmierung 2
E GLUT und Texturen oder ist GLUT abgemeldet? Spiele- und Multimedia-Programmierung 5
T Problem mit Texturen im Web. Spiele- und Multimedia-Programmierung 4
M Wie kriege ich das mit den Texturen nur hin? Spiele- und Multimedia-Programmierung 9
D 2 Texturen & transparenz Spiele- und Multimedia-Programmierung 16
F Texturen laden? Spiele- und Multimedia-Programmierung 3
M Universe mit texturen und lichteffekten Spiele- und Multimedia-Programmierung 10
M Format für Texturen Spiele- und Multimedia-Programmierung 5
M Laden von Texturen nicht möglich Spiele- und Multimedia-Programmierung 11
L Wie kann ich mehrere Texturen auf ein Object File mappen Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen


Oben