Java3D - Farben vermischen sich

Java3D_Noob

Mitglied
Hallo Community :),

Da ich ein ziemlicher Java3D Neuling bin hab ich - wie soll es auch anders sein - ein paar Probleme.
Erstmal mein Quelltext:

Java:
import javax.media.j3d.*;

import com.sun.j3d.utils.geometry.*;
import javax.vecmath.*;

import com.sun.j3d.utils.universe.SimpleUniverse;


public class Main {
	public static void main(String[] args) {
		SimpleUniverse univ = new SimpleUniverse ( );
		univ.getViewingPlatform( ) .setNominalViewingTransform( );
		
		BranchGroup szene = new BranchGroup ( );
	
	{
		Box boden = new Box(1, 0.1f, 1, ColoringAtributes() );
		
		TransformGroup bodenVerschieber = new TransformGroup();
		Transform3D verschieben = new Transform3D();
		verschieben.setTranslation(new Vector3f(0f,-0.5f,0f));
		bodenVerschieber.setTransform(verschieben);
		bodenVerschieber.addChild(boden);
		
		szene.addChild(bodenVerschieber);
		
		Color3f farbeBoden = new Color3f (0.392f, 0.392f, 0.392f);
		BoundingSphere bounds = new BoundingSphere(new Point3d (0,0,0),10000000);
		Vector3f richtungBoden = new Vector3f(5,-6,-10);
		DirectionalLight lichtBoden = new DirectionalLight (farbeBoden, richtungBoden );
		lichtBoden.setInfluencingBounds (bounds);
		szene.addChild(lichtBoden);
		
		
	}
	
	{
		Sphere sonne = new Sphere(0.15f,1,40);
		
		TransformGroup sonnenVerschieber = new TransformGroup();
		Transform3D verschieben = new Transform3D();
		verschieben.setTranslation(new Vector3f(-0.75f, 0.45f, 0f));
		sonnenVerschieber.setTransform(verschieben);
		sonnenVerschieber.addChild(sonne);
		
		szene.addChild(sonnenVerschieber);
		
		Color3f farbeSonne = new Color3f (1,1,0);
		BoundingSphere bounds = new BoundingSphere(new Point3d (0,0,0), 1000000);
		Vector3f richtungSonne = new Vector3f(5,-6,-10);
		DirectionalLight lichtSonne = new DirectionalLight (farbeSonne, richtungSonne);
		lichtSonne.setInfluencingBounds (bounds);
		szene.addChild(lichtSonne);
		
	}
		
		szene.compile();
		
		univ.addBranchGraph(szene);

	}

	private static Appearance ColoringAtributes() {
		return null;
	}


	

	

}

Ich wollte sozusagen eine "Landschaft" programieren, sprich Sonne, Boden, Baum, Haus. Das sollte erstmal reichen.

So den Boden hab ich normal hinbekommen. Wie ich dann an die Sonne gegangen bin hab ich natürlich als Farbe ein schönes Gelb (1,1,0) ausgesucht. Wie ich dann fertig war, haben sich aber das grau aus meinem Boden mit dem Gelb der Sonne vermischt.

Jetzt meine Frage: Wieso vermischen sich die Beiden Farben miteinander und wie kann ich das ändern?
Ich hab schon extra die beiden Objekte mit { } abgegrenzt aber es klappt trotzdem
nicht. :(


Vielen Dank im voraus und liebe Grüße :)
 

D4rkscr43m

Bekanntes Mitglied
Die Farben "vermischen" sich vermutlich einfach, weil es die Java3D Engine so vorsieht. Deswegen ist für Licht in der Regel kein "knallgelb" sondern ein schwaches Gelb (ich weiß nicht genau, aber evtl erreicht man das z.B. über
Code:
new Color3f (0.1,0.1,0)
) gewünscht.
 

Java3D_Noob

Mitglied
Erstmal Danke für die Antwort! :)
Aber ich kann dir irgendwie nicht folgen xD
Ich will, dass die Box ( also der Boden ) am Ende grau ist und die Sphere ( also die Sonne ) am Ende gelb ist.
Der Boden hat jetzt ja aber auch gelb als Farbe :(
 

Marco13

Top Contributor
Du hast zwei Lichter erstellt (warum ist mir auch nicht ganz klar). Aber das Licht der Sonne ist gelb. In gelbem Licht sehen weiße/graue Dinge eben gelb aus, das ist in der Natur wie in Java3D. Das Licht der Sonne ist aber nicht Gelb, sondern eher das, was wir als "Weiß" wahrnehmen. Das Sonnenlicht sollte also eher als
DirectionalLight lichtSonne = new DirectionalLight (new Color3f(1,1,1), richtungSonne);
erstellt werden.

Damit die Sonne (also die Kugel selbst) trotzdem Gelb aussieht, muss sie gelb sein. Dazu muss man ihr mit
sonne = new Sphere(radius, appearance);
eine Appearance geben.

Allgemeiner Tipp: Auf 3DJava gibt's hunderte (!) von direkt compilierbaren Beispielen zu Java3D, zu allen Möglichen Themen. Aber pssst, ist ein Geheimtipp, damit versuche ich seit Jahren, hier im Forum den Eindruck zu erwecken, ich hätte Ahnung von Java3D :D
 

Java3D_Noob

Mitglied
Ach soo!!!! Ich bin ja dumm :D
VIELEN DANK!

Habs jetzt hingekriegt, hab jetzt aber ein anderes Problem,
erstmal der Quelltext:
[Java]
Box haus = new Box(0.3f,0.2f,0.2f, farbeHaus());

TransformGroup hausVerschieber = new TransformGroup();
Transform3D verschieben = new Transform3D();
verschieben.setTranslation(new Vector3f(0.3f,-0.3f,0f));
hausVerschieber.setTransform(verschieben);
hausVerschieber.addChild(haus);

TransformGroup hausDreher = new TransformGroup();
Transform3D drehen = new Transform3D();
drehen.rotX(0.1f);
drehen.rotY(0);
drehen.rotZ(0);
hausDreher.addChild(hausVerschieber);

szene.addChild(hausDreher);
[/Java]

Ich wollte die Box "haus" verschieben, was alleine geklappt hat. Aber dann wollte ich es noch drehen, aber das geht irgendwie nicht. Wenn ich verschieben raus tu und drehen alleine, dann geht das drehen.

Nun meine Frage: Wie kann ich beide TransformGroups zum laufen bringen? Alleine gehen sie ja (hausDreher hat dann halt [Java]hausDreher.addChild(haus)[/Java]

Liebe Grüße :)
 

Marco13

Top Contributor
Was heißt "nicht gehen"? (Beachte ggf. dass rotX/rotY/rotZ in dieser Form die Drehungen nicht "nacheinander ausführen", sondern jeweils die entsprechende Rotation setzen - hier also zuletzt "um 0 Grad um die Z-Achse", da sieht man natürlich nichts. Um die zu kombinieren muss man mehrere Transform3Ds (oder besser Matrix4f's) miteinander multiplizieren.
 

Java3D_Noob

Mitglied
Edit:
Ich habs hingekriegt!!! jeah!! Mithilfe vondiesem Link!!
Trotzdem nochmal 1000 Dank ohne dein miteinander multiplizieren wäre ich da NIE draufgekommen!!!
VIELEN VIELEN DANK! :)



Was heißt "nicht gehen"?

Nicht gehen heißt, dass die aktionen von "hausDreher" einfach nicht ausgeführt werden. Das Objekt "haus" wird von "hausVerschieber" ganz brav verschoben, aber es wird von "hausDreher" einfach nicht gedreht :(

Transform3D's miteinander multiplizieren? Sorry ich kenn mich echt nicht so aus, wie müsste ich das insgesamt schreiben, dass beide Aktionen (das haus verschieben und drehen) ausgeführt werden? Jetzt wird das Drehen ja sozusagen einfach ignoriert :(
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Ja, ggf. solltest du dir mal sowas wie Java 3D API - Scene Graph Overview ansehen (oder ähnliche Dokumente, das ist keine direkte Empfehlung sondern nur das erste Suchergebnis ;) )

Wenn man eine bestimmte Abfolge von Transformationen IMMER (und "fest") vorgeben will, kann/sollte man die beschreiben, indem man Matrix4f-Objekte miteinander multipliziert.

Java:
Matrix4f rotation = new Matrix4f();
rotation.setIdentity();
rotation.rotX(angle);

Matrix4f translation = new Matrix4f();
translation.setIdentity();
translation.setTranslation(vector);

Matrix4f matrix = new Matrix4f();
matrix.setIdentity();
matrix.mul(translation);                                 ... und dann verschoben
matrix.mul(rotation);    // Das objekt wird erst gedreht

Transform3D transform = new Transform3D(matrix);

Es macht i.a. keinen Sinn, für mehrere, fest vorgegebene Transformationen einen rieseigen Szenegraph aus vielen TransformGrpups aufzubauen. ABER: Wenn man die Transformationen noch nachträglich ändern will (also wenn man z.B. die Rotation unabhängig von der Translation ändern will) muss/sollte man dafür schon einzelne Knoten erstellen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Java3d in Eclipse einbinden Spiele- und Multimedia-Programmierung 4
Neumi5694 Java3D Viewer Beschriftung Spiele- und Multimedia-Programmierung 1
C Java3D Transformieren von obj. Datein Spiele- und Multimedia-Programmierung 0
M Cylinder anhand eines Vektors ausrichten (Java3d) Spiele- und Multimedia-Programmierung 0
Ruvok Java3D Tutorial gesucht Spiele- und Multimedia-Programmierung 5
U Hilfe bei Implementierung eines PointSounds in Java3D Spiele- und Multimedia-Programmierung 1
R Java3d ViewingPlatform erst Verschieben und dann RotationsInterpolator Spiele- und Multimedia-Programmierung 0
D Java3D - Blickfeld Spiele- und Multimedia-Programmierung 1
P Java3D Box Dimensionen und Positionierung Spiele- und Multimedia-Programmierung 1
E Java3D Objekt skalieren per JSlider/JButton Spiele- und Multimedia-Programmierung 10
S Java3D: Primitives zu einem Objekt kombinieren Spiele- und Multimedia-Programmierung 7
J Java3D - Textur laden geht nicht Spiele- und Multimedia-Programmierung 9
T Java3D Rendering Problem Spiele- und Multimedia-Programmierung 7
S Java3D oder JMonkey? Spiele- und Multimedia-Programmierung 17
H Java3D - Textur aufs innere einer Sphere mappen Spiele- und Multimedia-Programmierung 9
C java 3d ohne Java3d Spiele- und Multimedia-Programmierung 28
Maxim6394 [Java3D] Probleme bei Kollision Spiele- und Multimedia-Programmierung 7
Maxim6394 [Java3D] lookAt Mausposition Spiele- und Multimedia-Programmierung 17
Maxim6394 [Java3D] Probleme mit KeyFrame Animationen Spiele- und Multimedia-Programmierung 9
K Java3D als Applet ohne Installation von Java3d Spiele- und Multimedia-Programmierung 6
D Java3D Installation: package javax.media.j3d not found Spiele- und Multimedia-Programmierung 5
C Java3D Texture Mapping Spiele- und Multimedia-Programmierung 2
W Java3D: Kanten die hinter einem Objekt liegen werden gezeigt Spiele- und Multimedia-Programmierung 2
W Java3D: Farbe von Objekten stimmt nicht mit übergebenem RGB-Wert überein Spiele- und Multimedia-Programmierung 9
M Eigene Renderengine ohne Java3D,etc. Spiele- und Multimedia-Programmierung 19
C Java3D Sound spielt nur einen Sound ab. Spiele- und Multimedia-Programmierung 8
A JAVA3D TransformGroup <--> Group Problem Spiele- und Multimedia-Programmierung 3
M [Java3D] Animation von mehreren Objekten Spiele- und Multimedia-Programmierung 7
W Java3D: Eckkoordinaten einer Box herausfinden Spiele- und Multimedia-Programmierung 18
T Java3D: Objekte platzieren und entfernen? Spiele- und Multimedia-Programmierung 7
T Java3D: Nur die Kanten des Würfels rendern? Spiele- und Multimedia-Programmierung 4
W Java3D setBounds(BoundingBox) Spiele- und Multimedia-Programmierung 6
T [gelöst] Java3D: Unerwünschte Rotation um die 3.Achse vermeiden? Spiele- und Multimedia-Programmierung 3
Bastie JAVA3D - WRL Transform Spiele- und Multimedia-Programmierung 9
G Eclipse Problem mit Java3d Spiele- und Multimedia-Programmierung 3
T Java3D - Lichtquelle einbauen Spiele- und Multimedia-Programmierung 7
jemandzehage java3d parallel und perspective view Spiele- und Multimedia-Programmierung 5
H Cinema 4D in Java3D importieren Spiele- und Multimedia-Programmierung 2
1 [Java3D] komplexes Projekt? Spiele- und Multimedia-Programmierung 10
P .obj-Datei in Java3D laden: ParsingErrorException Spiele- und Multimedia-Programmierung 7
C Java3D Lichtquelle beim Beobachter Spiele- und Multimedia-Programmierung 2
C Java3D Interaktion während Animation Spiele- und Multimedia-Programmierung 3
aze Java3D: Flächen teilen Spiele- und Multimedia-Programmierung 15
P Java3D Textur verzerrt Spiele- und Multimedia-Programmierung 3
aze Java3D: Gegenstände aufeinander zubewegen ohne Kollision Spiele- und Multimedia-Programmierung 4
D [JAVA3D] Es werden 2 Fenster erzeugt und auf dem falschen gezeichnet Spiele- und Multimedia-Programmierung 3
aze Java3D: leere Räume füllen Spiele- und Multimedia-Programmierung 2
aze Java3d:Helligkeit von Shape3D ändern Spiele- und Multimedia-Programmierung 2
S Einschätzung zu Java3D-Einstieg Spiele- und Multimedia-Programmierung 3
F Programm mit Java3D unter Linux laufen lassen Spiele- und Multimedia-Programmierung 3
I Vergleich von Java3D und OpenGL Spiele- und Multimedia-Programmierung 17
W Waterslide mit Java3D Spiele- und Multimedia-Programmierung 11
M Java3D Picking - falsche Objekte werden gepickt Spiele- und Multimedia-Programmierung 3
M [Java3D] Rotieren der Scene NICHT des POV Spiele- und Multimedia-Programmierung 4
F Jogl oder Java3D ? Spiele- und Multimedia-Programmierung 20
K Java3D Abfängerfrage Spiele- und Multimedia-Programmierung 3
aze Java3D:Farbige Flächen verschwinden lassen(Transparenz- oder Colorinterpolator?)) Spiele- und Multimedia-Programmierung 5
C Java3D PositionInterpolator Spiele- und Multimedia-Programmierung 3
G [Java3D] Probleme bei Animation Spiele- und Multimedia-Programmierung 4
E [JAVA3D] Kamerasteuerung Spiele- und Multimedia-Programmierung 3
E [JAVA3D] Schattenstrich durch die Szene Spiele- und Multimedia-Programmierung 4
M Grundsätzliche Java3D Fragen Spiele- und Multimedia-Programmierung 2
C Java3D SceneGraohPath Spiele- und Multimedia-Programmierung 2
C Java3D Rotation um einen Punkt (y-achse) Spiele- und Multimedia-Programmierung 2
G Java3D plattformunabhängig bundeln Spiele- und Multimedia-Programmierung 3
TheKing Java3D-Shooter View Spiele- und Multimedia-Programmierung 2
A Java3D tutorial? Spiele- und Multimedia-Programmierung 3
R Java3D Kollisionserkennung und Schwerkraft Spiele- und Multimedia-Programmierung 17
M Java3D Objekte entfernen und hinzufügen Spiele- und Multimedia-Programmierung 10
J Java3d Schnelle Geschosse Spiele- und Multimedia-Programmierung 12
D Kann ich mit Java3D 2D Daten als 3D surfaceplot plotten? Spiele- und Multimedia-Programmierung 5
J Java3d setTextureTransform verändert J3DGraphics2D Spiele- und Multimedia-Programmierung 4
J Hilfe: Rotation X und Y Achse (Java3d) Spiele- und Multimedia-Programmierung 12
K Java3D: LineStripArray Spiele- und Multimedia-Programmierung 2
P Java3D - Zylinder genau wie Vektor ausrichten Spiele- und Multimedia-Programmierung 5
Developer_X Java3D Mensch Ärgere Dich nicht. Spiele- und Multimedia-Programmierung 10
C JAVA3D Rotation um einen bestimmten Punkt Spiele- und Multimedia-Programmierung 20
Developer_X Java3D-Ungeeignet für 3D Spiele wegen Heap Space=? Spiele- und Multimedia-Programmierung 23
Developer_X Java3D Canvas post Renderer und? Spiele- und Multimedia-Programmierung 5
A Java3D Sichtweite Spiele- und Multimedia-Programmierung 2
"Er" Kamera rotation in Java3D Spiele- und Multimedia-Programmierung 2
A Java3D: Behavior scheduling bounds Spiele- und Multimedia-Programmierung 3
Developer_X THE BALL (needs Java3D) Spiele- und Multimedia-Programmierung 34
Developer_X Java3D Game_(die erste) Spiele- und Multimedia-Programmierung 2
Developer_X Java3D und while schleifen Spiele- und Multimedia-Programmierung 4
Developer_X Collisionserkennung in Java3D Spiele- und Multimedia-Programmierung 3
Developer_X Java3D Node -> Obj Data Spiele- und Multimedia-Programmierung 2
Developer_X Figuren werden nicht angezeigt (Java3D) Spiele- und Multimedia-Programmierung 5
S PDFRenderer und Java3D Spiele- und Multimedia-Programmierung 2
Developer_X Java3D- der Mausklick auf Nodes Spiele- und Multimedia-Programmierung 3
Developer_X Java3D Point Sound Spiele- und Multimedia-Programmierung 71
Developer_X Lines in Java3D Spiele- und Multimedia-Programmierung 4
V Java3D: HUD erstellen Spiele- und Multimedia-Programmierung 2
V Java3D: scheinende Sonne Spiele- und Multimedia-Programmierung 4
V Java3D: Ringe für Saturn erstellen Spiele- und Multimedia-Programmierung 8
V Java3D: automatisches Bewegen der Kamera Spiele- und Multimedia-Programmierung 19
V Java3D: mehrere ViewingPlaforms in Sonnensystem Spiele- und Multimedia-Programmierung 8
Developer_X Thread in Java3D Spiele- und Multimedia-Programmierung 8
B Java3D .obj dateien Spiele- und Multimedia-Programmierung 2
Developer_X Java3D's next TopModel Spiele- und Multimedia-Programmierung 16

Ähnliche Java Themen

Neue Themen


Oben