# Einstieg in die 3D Programmierung



## c_sidi90 (31. Mai 2011)

Hallo Leute!

Ich Programmiere jetzt seid circa einem Jahr Java und vorher ein wenig C und C++. Allerdings habe ich meine Projekte immer an den Wirtschaftlichen-Aspekt ausgelegt und kam daher nie wirklich in die optisch ansprechende Ebene der Programmierung (3D). Ich habe die JMonkeyEngine kurz getesten und im Anschluss deinstalliert. Meiner Meinunung nach, raubt diese Engine zumindest mit der dazugehörigen IDE dem jungen programmierer die Illusion, sich in etwas einarbeiten zu müssen. Doch genau das möchte ich gerne, 3D Programmierung von Kopf bis Fuß ohne vorgefertigte D&D Funktionen und einem integriertem Gui-Builder. Ich habe jetzt alle möglichen Shapes-Tutorials in Java3D durch und auch nachgebastelt. Nun meine eigentliche Frage lol:

Wie kann ich in Java ein 3D Terrain erstellen, bzw. die Texturen platzieren, anordnen, Wasser einfügen usw. Bietet die Java3D Api da was mitgeliefertes? Ich finde leider bezüglich Java3D kein TerrainTut. 

JOGL Wäre sonst auch eine alternative falls ihr meint, das die Java3D eher weniger tauglich ist.


----------



## ChrisKu (31. Mai 2011)

Also, ich habe meinen Einstieg in Java3D mit dem Buch "Killer Game Programing in Java" versucht und gelernt. Da werden genau Deine Fragen beantwortet. Ich kann das Buch nur empfehlen. Gibt es auch Online

Killer Game Programming in Java


----------



## Kr0e (31. Mai 2011)

Nimm Lwjgl, ist bei der Spieleprogrammierung Standard 

jMonkeyEngine ist wirklcih falsch, wenn du dich einarbeiten willst ;-)

Ich persönlich hab nie ein buch zur Hand genommen, da man eigentlcih alles online findet, was meist auch aktueller ist. Wenn du allerdings einen "roten Faden" beim Lernen willst, ist das Buch bestimmt gut.

Vlt bist du ja der Typ, der durch betrachten von Code von Engines was dazulernt =) Insofern vlt mal den Code von jMonkeyEngine studieren, falls spezielle Fragen auftauchen.

Ansonsten würde ich bei den Basics anfangen. OpenGL ist der Standard für 3D, wenn es darum geht, es auf allen Plattformen lauffähig zu machen.

Im Prinzip ist es egal ob Jogl oder Lwjgl, da beide quasi OpenGL Wrapper sind, allerdings bietet dir Lwjgl Sachen, die für Spiele wichtig sind: Sound + Schnellen Controller Input.

Zu deiner FRage:

Java3D ist 1. veraltet und 2. genau sowas wie jMonkeyEngine. Ein Highlevel-API. Wenn du nur den Editor bei jME abstoßend fandst, dann nimm einfach nur die jMonkeyEngine-Jarfiles und bastel wie gewohnt mit Netbeans/Eclispe. Ich persönlich finde den Editor auch Murks, der stürzt ständig ab bei mir... jme2 waren noch Zeiten 

Terrain besteht in erster Linie aus endlosen Dreiecken^^ Dafür gibts viele gute Tutorials gerade für OpenGL.
NeHe-Tutorials sind Tipp Nr.1 ist zwar C++-Code, aber der ähnlich ja stark Javacode... Sollte also kein Problem sein.

Wenn du weitere Frage hast, immer her damit 

Gruß,

Chris


----------



## Landei (31. Mai 2011)

Wenn du JME nicht magst, schau dir  Ardor3D an.


----------



## Marco13 (31. Mai 2011)

Der Unterschied ist da ja nicht so dramatisch. Irgendwie klang das im ersten Posting schon eher nach "Low-Level". Aber WIE Low-Level ist in der Tat noch nicht klar. RICHTIG low, nicht mehr ganz so low, irgendwas dazwischen, oder was ganz anderes?


----------



## c_sidi90 (1. Jun 2011)

Vielen Dank für die Tipps. Ja zur JME Engine kriegt mich keiner mehr, die Struktur von Java3D find ich jetzt auch nicht wirklich Klasse. Den Tipp mit den OpenGL Wrappern werde ich dankend annehmen, ich denke es ist für die Spiele Programmierung sowieso ein muss, sich früher oder später mit der Hardwarebeschleunigung anzufreunden und sich damit auseinander zu setzen. Ich schaue mit LWjgl an und melde mich falls ich fragen habe wieder!

Danke schöN!


----------



## Evil-Devil (1. Jun 2011)

Ohne jetzt die Altlasten mitnehmen zu wollen würde ich empfehlen direkt mit OpenGL 3.0+ anzufangen.

Die OpenGL SuperBible ist sehr hilfreich dabei.
Zwar hat die eigene Wrapperfunktionen für so manches, aber die muss man ja nicht nutzen. Zumal der Code eh in C++ ist und man erst nach Java portieren muss.


----------

