# allgemeine frage zu Java 3D



## 0x7F800000 (6. Mrz 2008)

Hallo leute!  

ich hätte da mal eine allgemeine frage bezüglich Java3D.

 So wie ich das bisher verstanden habe :### , müssen die armen benutzer, die nur das einfache JRE auf ihrem computer haben, irgendwelche zusätzliche Java3D-RE-Elemente runterladen, und danach auch noch ihren PC neustarten, damit es läuft.  :? 

Mein problem ist: ich bin mir nicht allzu sicher, dass viele besucher meiner Homepage bereit wären, sich halbe stunde lang mit der Installation von irgendwelchen zusatz-dll's zu beschäftigen, nur um meine Applets anzuschauen. Einige werden es mir einfach nicht abkaufen, dass es soo interessant sein soll, was ich da zeigen will... und meine homepage wegklicken und nie wieder angugn   

Außerdem sollte das programm wirklich für jeden trottel verfügbar sein, der irgendwie an einen Rechner gekommen ist (zB in einem PC-Pool an irgendeiner Schule oder Uni ohne administratorrechte hockt)


Frage:
1)lohnt es sich überhaupt, sich Java3D beizubringen? vielleicht ist es zu lahm, und kann mit Direct3D und OGL nicht mithalten, weil es ja beides unter einen Hut bringen muss

2)wäre es vielleicht sinnvoller, für kleine 3D-Szenen auf die ganze hardwarebeschleunigung zu verzichten, und stattdessen einen eigenbau-softwarerasterizer einzusetzen, der nur AWT zum laufen benötigt? Es ist nämlich wirklich nicht viel, was ich da zeichnen will, aber es sollte schon 3D sein.

was soll ich tun?  :roll: 
danke im voraus für eure meinungen...


----------



## Fancy (6. Mrz 2008)

Moin,

also direkt zu Java3D kann ich Dir leider nichts sagen, aber da Du ja scheinbar auch nach Alternativen suchst, mein Tipp:  JoGL (Java bindings for OpenGL). Damit sollte 3D auch direkt aus dem Applet heraus gehen, auch ohne Installation oder sonst notwendigerweise selbst signierten JAR Files.

Ist aber gut möglich das ähnliches auch mit Java3D geht. 

Gruß,
Michael


----------



## EgonOlsen (6. Mrz 2008)

Ja, was genau willst du denn zeichnen?


----------



## Marco13 (6. Mrz 2008)

Schau mal hier, und ob du da irgendwas runterladen musst...

https://java3d.dev.java.net/applets/FourByFour.html 
https://j3d-webstart.dev.java.net/test/

Eine JRE braucht man wohl schon, aber die hat eigentlich fast jeder. 

Wie man das nun auf (d)einer Homepage vernünftig rüberbringt... Naja. Natürlich sollte die Startseite der Homepage im Fehlerfall NICHT nur das obligatorische graue Rechteck mit dem Roten Kreuzchen zeigen :wink: aber wenn man ein paar Screenshots hat, und dazuschreibt: "Ja, wenn du eine JRE hast, dann klick hier um zu starten" (..."oder hier, um das ganze downzuloaden und lokal zu starten"), dann wäre das doch OK ...!?

Subjektive Antworten auf die Fragen:
1. Java3D war mal ziemlich vielversprechend (so um 2000 rum), ist dann ein bißchen ins Hintertreffen geraten, als die Versionen von Direct3D und OpenGL in immer kürzeren Abständen rauskamen und so, aber in letzter Zeit scheint das wieder ganz interessant zu werden: (Ich bin nicht 100% up to date, aber) irgendwie fließen jetzt die Funktionen von JOGL und Java3D teilweise zusammen, und das wäre für JOGL eine Aufwertung in bezug auf die Anerkennung durch Sun, und für Java3D eine Auwertung durch die extrem Hardwarenahen Funktionen von JOGL. Man kann ja selbst die modernsten Shaderprogramme in JOGL (und teilweise auch Java3D  ???:L ) ausführen - was will man mehr?    Die Möglichkeit, das ganze dann als Hardwarebschleunigtes Applet zu starten, hat Java natürlich als Alleinstellungsmerkmal   

2. Du kannst auch Bilder mit Bleistift und Papier malen, dann braucht der, der sich die ansehen will, nichtmal einen Computer  :bae:


----------



## EgonOlsen (6. Mrz 2008)

Marco13 hat gesagt.:
			
		

> 2. Du kannst auch Bilder mit Bleistift und Papier malen, dann braucht der, der sich die ansehen will, nichtmal einen Computer  :bae:


Stimmt zwar, trifft aber das Problem nicht. Es ist eigentlich egal, ob man nun Jogl, Java3D oder LWJGL (damit geht das nämlich genauso wie mit Jogl) in ein Applet zwängt, es wird immer einen, vermutlich nicht einmal kleinen Teil Leute geben, bei denen sich dann nichts tut bzw. es vielleicht irgendwie läuft aber nicht vernünftig. Das wären z.B. alle die, die mit Standard-Windowstreibern arbeiten..die bringen nämlich schonmal gar keinen OpenGL-Treiber mit.
Wenn es Hardwarebeschleunigung sein soll, würde ich von Applets abraten und Webstart nehmen. Das ist meistens problemloser und deckelt auch nicht bei etwa 25fps, so wie Firefox bei den Applets (zumindest meiner tut dies). Wenn es trotzdem unbedingt ein Applet mit OpenGL/D3D sein soll, wäre ein Softwarefallback schon schön. Daher auch meine obige Frage, was genau da gezeichnet werden soll.


----------



## 0x7F800000 (6. Mrz 2008)

oookay! Danke schön schonmal an euch drei  :toll: 

@Fancy
Okay, sieht wirklich sehr gut aus was ich da sehe wenn ich dem link folge... Jetzt müsste ich nur noch wissen was JOGL überhaupt ist, ich dachte das wäre wieder irgendeine ergänzung zu Java 3D, die mehr OpenGL features unterstützt... ???:L oder gibts da einen wesentlicheren unterschied? [edit: ah, okay, JOGL ist einfach eine komplett andere api, die OpenGL an java anbindet, okay... und bei genauerer betrachtung lassen sich auch nicht wirklich alle beispiele ausführen... also, bei mir nicht]

@Marco:
ich bin jetzt mal dem link gefolgt: sieht recht vielversprechend aus, ich hab die ganzen extra-pakages zwar auch nicht installiert, aber teilweise gingen die applets    leider aber auch nur_ teilweise_  die beispiele, wo nichts texturiert war, und keine shader verwendet wurden, ging alles wunderbar  :toll: Aber mit texturen hats irgendwie fast nirgendwo geklappt, bei shadern kamen nur fehlermeldungen.

was das zeichnen mit bleistiften angeht: ist auch eine feine sache, ist für den Fall aber doch zu zeitraubend  Ich würde aber das proggen eines software-fallbacks nicht als einen horrormäßig öden umweg betrachten, sondern das alles mit freude nochmal üben, ich finds recht interessant. :bae: 

aber das mit JNLPApplets schaue ich mir definitiv noch genauer an.

@EgonOlsen
also, worum es mir bei der ganzen sache wohl zuerst gehen würde, wäre folgendes:




das ist eines der vielen 3D-Graphen, die ich etwa vor 2 jahren mit Direct3D und C++ gemalt hab. Vielleicht könnte euch "Julia Menge" im "schiefkörper der Quaternionen" was sagen. Leider war ich damals noch junger und noch dümmer als ich jetzt bin, deswegen sind die Bilder nicht allzuschön geworden. 
1) Die Bilder waren ziemlich eckig und hässlich
2) Die hat letztendlich praktisch kein Mensch außer mir gesehen.
=> ich würde das gerne einfach komplett neu machen. Am liebsten als applet, oder irgendetwas, was sich leicht im internet abrufen lässt.

Eigentlich bräuchte ich dafür erstmal nicht mal texturen: dreiecke und bissl licht würde mir schon reichen, mir geht es primär eh nicht um die grafik, sondern darum, dieses polygonnetz schön glatt aufzuspannen...


----------



## EgonOlsen (6. Mrz 2008)

Ist das in Echtzeit? Sieht irgendwie so "voxelig" aus, gar nicht so richtig nach Polygonen!?


----------



## 0x7F800000 (6. Mrz 2008)

ja, das konnte man alles in echtzeit drehen, zoomen, einige wenige einstellungen an Farben und Lichtquellen vornehmen.

es sieht aber weniger "voxelig" aus, sondern, wie gesagt, einfach nur eckig. Das Programm hat keine schöne glatte oberfläche erzeugt, sondern einfach massig punkte getestet, die auf einem regelmäßigen rechtwinkligen 3D-gitter lagen, und dann versucht, auf dieses regelmäsige quaderförmige gitter ein polygonnetz aufzuspannen. Es ist im Prinzip eine figur, die aus vordefinierten holzbauklötzen zusammengebastelt ist, aus würfeln und Pyramiden. Halt nur die Oberfläche davon.

bei einer kugel ist es evtl leichter zu sehen. Da entstehen so bizarre Muster, in dem fall find ich das sogar recht schön:





[abschweifung]

Das war natürlich blödsinnig: ich habe da nur die diskrete funktion R³ -> {0,1} betrachtet, die mir einfach angab, ob ein punkt in der darzustellenden menge liegt oder nicht. 

Jetzt will ich das anders versuchen: ich hab ja im Prinzip eine stetige Funktion R³->R, die mir die divergenzgeschwindigkeit angibt, damit könnte gezielter nach dieser oberfläche suchen, und durch geeignete extrapolation immer schön in der nähe der oberfläche bleiben, um nicht zuviele unnötige punkte zu testen...

aber das ist ja ein ganz anderes liedchen, damit werd ich schon irgendwie zurechtkommen.   
[/abschweifung]

ich bin jetzt aber immer noch verunsichert, wie ich das ganze am besten zeichne... Verunsichert sowohl durch Java3D, als auch durch JOGL, weil bei mir 2/3 der Applets nicht laufen wollten :cry:

Ich glaub ich versuchs erstmal mit dem ansatz von Marco13 und diesen JNLPAppletLauncher, aber natürlich werde ich mir mühe geben, das restliche programm von diesem 3D-Visualisierungsteil komplett getrennt zu halten, damit das alles schön austauschbar bleibt...  :roll:


----------



## EgonOlsen (6. Mrz 2008)

Wie viele Polygone hat den so ein Gebilde circa, wenn es fertig ist?


----------



## 0x7F800000 (6. Mrz 2008)

gigantisch viele. Eben das will ich ja mit dem neuen Ansatz komplett um größenordnungen effizienter gestalten. Warte mal, ich schau mal wieviele für so eine kugel notwendig waren^^  [prog ist schon ziemlich alt und irgendwo verschollen, muss n bissl suchen, sec]

also, für die sphäre waren 220.000 Dreiecke nötig. Mörderische verschwendung, versteht sich.   Aber wer es als zwölftklässler besser konnte (bzw kann) darf ruhig den ersten stein werfen, da hab ich keine probleme mit


----------



## 0x7F800000 (8. Mrz 2008)

Hallo leute.  

Leider fällt mir immer wieder auf, dass ich mich durch außerordentliche lernschwäche auszeichne, wenn es um irgendwelche installationen von was auch immer geht...  :cry: Aber seid bitte barmherzig, und verzeihet mir meine dummheit. :roll: 

Also, ich versuche hier schon seit paar stunden Java 3D Runtime Environement und Java 3D SDK zu installieren, um eben mit Java3D loslegen zu können.

Ich habe mir jetzt diesen Thread http://www.java-forum.org/de/topic4821_java3d-tutorial-zweite.html von Illuvatar angeschaut, da geht es unter anderem über die Installation von J3D-SDK 1.3.??... , zwar gibt es mittlerweile schon 1.5.1, aber der link ist noch aktuell.

Ich bin diesem Link gefolgt: http://java.sun.com/products/java-media/3D/download.html

habe da auch den passenden installer gefunden: heisst java3d-1_5_1-windows-i586.exe

habs gespeichert, dadrufgeklickt.

es hat mir ein paar doofe fragen gestellt, ob ich da alle geschäftsbedingungen akzeptiere, blah blah blah...

es hat mir eine liste von ordnern gezeigt, wo es angeblich etwas manipulieren wollte:


> C:\Programme\JDK 1_5_0_12
> C:\Programme\JRE 1_5_0_12
> C:\Programme\J3D 1_5_1
> C:\WINDOWS


das sind eben die ordner, wo ich die ganzen üblichen SDK's und RE's installiert habe, und der neue Ordner für diese Java3D-Geschichte...
Ich hab mir gedacht, dass das alles voll okay sei, und dass ich hier jetzt gleich alles nötige installiert bekomme, um Java3D programme zu schreiben und auszuführen...

Alles war okay, prima, erfolgreich abgeschlossen, finish...

Und nun? ich konnte weder manuell noch durch Suche irgendwelche neue ordner auf der festplatte entdecken, a la "javax.media.j3d" oder ähnliches ???:L 

Laut den installationsanweisungen müsste man da aber nichts mehr tun:


> To install this build, execute the binary installer that you downloaded, by double-clicking on the java3d-1_5_1-windows-i586.exe



ich hab irgendwie echt voll den überblick verloren... zehn tausend milliarden versionen, alle an verschiedenen orten mit verschiedenen installationsanweisungen verstreut, unklar ob topaktuell, oder hoffnungslos veraltet oder was...  :autsch:



Könnte mir vielleicht jemand helfen, ein wenig überblick wiederzugewinnen?
Ich wäre sehr dankbar!
thx im voraus  :toll:


----------



## 0x7F800000 (8. Mrz 2008)

OMFG  :? 

also, ich bin momentan dabei die ganze JDK JRE und J3D einfach neuzuinstallieren (das hilft in der regel), während dieses prozesses ist mir aber folgendes aufgefallen:

Unter dem bescheuerten Window$ XP wird jedes dämliche applettchen, das mit diesem JNLPAppletLauncher gestartet wurde (habe mir in der letzten zeit ja mehrere angeguggt) in der liste der installierten programme aufgeführt... 

Und ich nehme mal an, dass dieser ganzer müll bei allen benutzern auftauchen wird, die sich einfach nur ein paar von meinen applets anschauen :cry: ?

Könntet ihr mir sagen, was auf euren rechnern/OS geschieht, wenn ihr sowas wie https://java3d.dev.java.net/applets/FourByFour.html 
startet? Wenn es nur am Window$ liegt, dann stört es mich eher weniger, aber wenn solche applets überall irgendwelche dreckige spuren hinterlassen... dann mach ich mich vielleicht doch lieber an den software rasterizer :autsch: 

danke euch allen im voraus


----------



## 0x7F800000 (8. Mrz 2008)

nein, sorry, umsonst geschimpft. Nur diese Web Start sachen hinterlassen spuren, mit JNLPAppletlauncher scheint alles tip-top zu sein  :toll: 
wenn ich das jetzt noch zum laufen bekommen würde...  :roll:


----------

