Hi,
Habe schon wieder ein Problem...
Und zwar wollte ich spaßeshalber gerade mal versuchen etwas Licht zu meinen Universum hinzuzufügen
Ich füge jetzt mit der folgenden Methode Licht hinzu:
Außerdem habe ich dann noch mit folgender Funktion 2 Planeten hinzugefügt:
Das funktioniert auch alles soweit. Die Planeten werden schön beleuchtet und sieht auch gut aus.
Jetzt wollte ich aber noch, dass ein Shape3D-Objekt mit meiner Geometry beleuchtet wird.
Habe also testweise mal einen Würfel mit Hilfe von IndexedQuadArray erstellt. Habe in dem IndexedQuadArray keine Farbe hinzugefügt.
Danach erstelle ich aus dem IndexedQuadArray eine Shape3D und füge der die gleiche Appearance wie bei dem Planeten hinzu.
Jetzt wird der Würfel aber einfach nur Weiß angezeigt. Es wird also das Material einfach ignoriert. Wenn ich der Appearance noch ein ColoringAttribute anfüge, wird die Farbe vom ColoringAttribute genommen. Also die Appearance wird nicht ignoriert, nur das Material, aber ich füge das Material auch der Appearance hinzu.
Die Shape3D liegt auch im Einflussbereichs des Lichtes. Wenn ich den Planeten an die gleiche Position packe, wird er beleuchtet.
Hat einer von euch eine Idee woran das liegen könnte?
Gruß,
Dennis
Habe schon wieder ein Problem...
Und zwar wollte ich spaßeshalber gerade mal versuchen etwas Licht zu meinen Universum hinzuzufügen
Ich füge jetzt mit der folgenden Methode Licht hinzu:
Code:
public BranchGroup addLight() {
BranchGroup bg = new BranchGroup();
// Light-Bounds
BoundingSphere lightBounds = new BoundingSphere(new Point3d(-3.0f,3.0f,-10.0f),30.0f);
Color3f lightColor = new Color3f (1.0f, 1.0f, 1.0f);
Vector3f lightDirection = new Vector3f (0.4f, -0.2f, -0.5f);
DirectionalLight light = new DirectionalLight(lightColor,lightDirection);
light.setInfluencingBounds(lightBounds);
bg.addChild(light);
AmbientLight ambientLightNode = new AmbientLight (lightColor);
ambientLightNode.setInfluencingBounds(lightBounds);
bg.addChild(ambientLightNode);
bg.compile();
return bg;
}
Außerdem habe ich dann noch mit folgender Funktion 2 Planeten hinzugefügt:
Code:
public BranchGroup addPlanet(Vector3f trans) {
BranchGroup bg = new BranchGroup();
Transform3D movePlanet = new Transform3D();
movePlanet.setTranslation(trans);
TransformGroup transG = new TransformGroup(movePlanet);
Appearance app = new Appearance();
Material mat = new Material();
mat.setAmbientColor(new Color3f(1.0f, 0.89f, 0.0f));
mat.setDiffuseColor(new Color3f(0.7f,0.7f,0.7f));
mat.setSpecularColor(new Color3f(0.7f,0.7f,0.7f));
app.setMaterial(mat);
Sphere planet = new Sphere(1.0f,app);
transG.addChild(planet);
bg.addChild(transG);
bg.compile();
return bg;
}
Das funktioniert auch alles soweit. Die Planeten werden schön beleuchtet und sieht auch gut aus.
Jetzt wollte ich aber noch, dass ein Shape3D-Objekt mit meiner Geometry beleuchtet wird.
Habe also testweise mal einen Würfel mit Hilfe von IndexedQuadArray erstellt. Habe in dem IndexedQuadArray keine Farbe hinzugefügt.
Danach erstelle ich aus dem IndexedQuadArray eine Shape3D und füge der die gleiche Appearance wie bei dem Planeten hinzu.
Jetzt wird der Würfel aber einfach nur Weiß angezeigt. Es wird also das Material einfach ignoriert. Wenn ich der Appearance noch ein ColoringAttribute anfüge, wird die Farbe vom ColoringAttribute genommen. Also die Appearance wird nicht ignoriert, nur das Material, aber ich füge das Material auch der Appearance hinzu.
Die Shape3D liegt auch im Einflussbereichs des Lichtes. Wenn ich den Planeten an die gleiche Position packe, wird er beleuchtet.
Hat einer von euch eine Idee woran das liegen könnte?
Gruß,
Dennis