# Problem mit JMonkeyEngine3 und OgreXML



## haering (14. Sep 2011)

Hallo,

ich versuche zurzeit die 3D Programmierung mithilfe von JME3 zu verstehen, und vielleicht damit sogar ein eigenes Programm zu schreiben. Allerdings bin ich heute schon ziemlich schnell auf ein Problem gestoßen:

Ich habe mit Blender ein Modell mit einem .jpg als Texture erstellt. Dieses habe ich mithilfe von Ogre23 Exporter(Download) für Blender in eine .mesh.xml exportiert. Diese kann ich dann einfach mit 
	
	
	
	





```
Spatial boden= assetManager.loadModel("Models/Boden/Boden.mesh.xml");
```
in JME3 importieren. Theoretisch sollte dabei auch die Textur mitgeladen werden, aber wenn ich den Code ausführe, ist das Objekt zwar zu sehen, aber leider ohne die Textur.

Allerdings stehen in der JME3 Konsole auch ein paar Warnungen wie z.B.

```
Sep 14, 2011 3:52:59 AM com.jme3.scene.plugins.ogre.MaterialLoader readPassStatement
Warnung: Unsupported pass directive: emissive
Sep 14, 2011 3:52:59 AM com.jme3.scene.plugins.ogre.MaterialLoader readTextureUnitStatement
Warnung: Unsupported texture_unit directive: scale
Sep 14, 2011 3:52:59 AM com.jme3.scene.plugins.ogre.MaterialLoader readTextureUnitStatement
Warnung: Unsupported texture_unit directive: env_map
Sep 14, 2011 3:52:59 AM com.jme3.scene.plugins.ogre.MaterialLoader readTextureUnitStatement
Warnung: Unsupported texture_unit directive: colour_op_ex
```


Woran könnte dieser Fehler liegen? Ich bin über jede Hilfe sehr dankbar.

Inhalt der XML:
[XML]material Boden
{
	receive_shadows on
	technique
	{
		pass
		{
			cull_hardware none
			ambient 0.800000011920929 0.800000011920929 0.800000011920929 1.0
			diffuse 0.800000011920929 0.800000011920929 0.800000011920929 1.0
			specular 0.5 0.5 0.5 1.0 12.5
			emissive 0.022400021886825883 0.022400021886825883 0.022400021886825883 1.0
			scene_blend one
			texture_unit
			{
				texture bode.png
				tex_address_mode wrap
				scale 1.0 1.0
				env_map planar
				colour_op_ex blend_manual src_current src_texture 0.0
			}
		}
	}
}
[/XML]


----------



## Kr0e (14. Sep 2011)

Bei deinem Problem kann ich dir leider nicht weiterhelfen allerdings hätte ich andere Tipps für dich:

Wenn du definitiv JME3 benutzen willst, dann höre heir auf zuj lesen ;D

Wenn du 3d Programmierung lernen willst, dann Finger weg von Engines, diese verstecken die gesamte Magie hinter Abstraktionen. Wenn es dir um Resultate geht, sind Engines natürlich wieder unumgänglich. Und vorallem: Mit der JME3 wirst du noch auf sehr vile mehr PRobleme stoßen (Beta...) und dann bruacht man meistens Hintergrundwissen über die Technik, die von JME3 implementiert wird, um diese Probleme zu lösen. JME3 ist nicht wirklich Anfängerfreundlich, klar simple, sich drehende Cubes kriegste innerhalb eines Tages hin (Wenn man bei Null anfängt und noch nicht was von 3D gehört hat). Aber wenn deine Wünsche etwas komplexer ewrden, musst du dich schon arg krass in die (sich zur Zeit hin und wieder ändernden) API einarbeiten.

Ich empfehle LWJGL/JOGL (Eigentlich eher LWJGL, ist aktueller und verbreiteter) und dann erstmal ein bisschen mit reinem OpenGL rumspielen. Außerdme gibt es noch weitere Engines welche um einiges leichter zum benutzen sind: jPCT, Ardor3d oder meinetwegen auch das veraltete Java3D. JME3 hat ein paar Vorteile (unteranderem guten Support für Shader), aber viele davon, wie auch die Shader, sind für Anfänger sowieso quatsch.

Oder versuch die JME2, die ist Stable und funktioniet wunderbar und war noch einheitlicher.

Gruß,

Chris


----------



## Empire Phoenix (15. Sep 2011)

Zu jme3, JME3 ist eigntlich die am weitesten entwickelte Jaa engine .
Wenn du das selbr versuchst alles low level zu programmiren mede dich mal in 2-3 Jahren nach deutlicher einarbeitung wieder.
Der Beta status ist nicht ganz unberechtigt, es gibt einige Features die nicht richtig funktionieren oder noch leicht buggen, dieses sind jedoch auf Postprocessing beschränkt im wensentlichen, und auch meistens wenn man einen findet und im Forum mit nem Testcase postet innerhab weniger Tage verschwunden. 
Zeitaufwand zum einarbeiten würde ich auf ungefäh nen halbes Jahr bei hobby setzen, wobei das eher daran liegt das OPENgl sehr komplex ist, und man hlat auch mit einer Engine das drunterleigende kennen muss (kennen und verstehen, nicht können)

jPCt kann ich ncihts zu sagen,
Ardor3d ist auf JME2 basierend, und was Shaderunterstützung angeht veraltet, wobei es auch einige nette Feature hat.
Shader für anfänger quatsch, man muss sie nicht benutzten, es gibt viele vordefiniert shader, so dass man nicht gezwungen wird Shadercode selber zu schreiben, aber wenn man witer fortgeschritten ist, muss man nicht gleich die Engine wechseln um mal mit shadern rumzubasteln.

Die Api ist seit alpha4 weitestgehend stabil und ändert sich kaum noch.

Zum Ogre XML,
Aufgrund des von Ogre abweichenden Materialsystems werden soweit ichw eiß nur normale Texturen eingelesen. Für Fortgeschritteneres sollte man J3M dateien nehmen. 
Hast du evtl irgetwo ne Warnung vom Assetmanger inner Console stehen ? (Could not locate bode.png ... ?)
Das obig ist der Inhalt der "name".material datei oder? ist "name" identisch mit "name".mesh.xml?
Btw der empfohlene workflow wäre der blender importer, siehe dazu auch das forum und die svn version.


----------



## haering (20. Sep 2011)

Also ich hab mich entschieden, bei JME3 zu bleiben. Das Problem an sich konnte ich zwar nicht beheben, aber ich umgehe es, indem ich die Objekte nun als .obj in Blender exportiere und Sie dann mithilfe von JME3 in eine .j3o Datei mithilfe der JMonkeyPlattform konvertiere. Das Material setze ich dann mithilfe von Methoden von JME3.


----------

