File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Game Development and the fly likes Problem with lighting in Java3D Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Game Development
Bookmark "Problem with lighting in Java3D" Watch "Problem with lighting in Java3D" New topic

Problem with lighting in Java3D

Kirk Gao

Joined: Aug 30, 2007
Posts: 8
Well I've been trying to code one level of a simple game with a bouncing ball, paddle, and bricks. I've more or less been snipping bits of code from the 2001 "The Joy of Java3D" tutorial by Greg Hopkins. In particular, I used an adaptation of and a small section cut from Below is the section of code that is problematic. The problem is that after compiling fine, for some reason the red lighting is not falling on the mass of bricks AT ALL while it does fall on the ball and the paddle. Can anyone see why and maybe offer an alternative way of coding that will output the desired effect? Thank you in advance.


public BranchGroup createSceneGraph ()
// Create the root of the branch graph
BranchGroup objRoot = new BranchGroup();
ballTrans = new TransformGroup();
paddleTrans = new TransformGroup();

// Create a ball.
Sphere sphere = new Sphere(0.05f);
Transform3D pos1 = new Transform3D();
pos1.setTranslation(new Vector3f(ballX,0.0f,0.0f));

// Create a paddle.
Cylinder cylinder = new Cylinder(0.2f, 0.02f);
Transform3D pos2 = new Transform3D();
//ap.setMaterial(new Material(white, black, white, black, 0.0f));
pos2.setTranslation(new Vector3f(paddleX,-0.5f,0.0f));

// Create bricks.
for (float f=-0.75f; f<=0.85f; f+=0.1f)
for (float g=0.0f; g<=0.5f; g+=0.05f)
TransformGroup bricksTrans = new TransformGroup();
Transform3D pos3 = new Transform3D();
Box box = new Box(0.05f, 0.04f, 0.1f, new Appearance());
pos3.setTranslation(new Vector3f(f, g, 0.0f));

// Attach both objects to transform groups.
BoundingSphere bounds = new BoundingSphere();

Color3f light1Color = new Color3f(1.0f, 0.0f, 0.2f);
Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);
DirectionalLight light1 = new DirectionalLight(light1Color, light1Direction);

// Set up the ambient light
Color3f ambientColor = new Color3f(1.0f, 1.0f, 1.0f);
AmbientLight ambientLightNode = new AmbientLight(ambientColor);

return objRoot;
Jiri Goddard

Joined: Aug 21, 2007
Posts: 21
maybe the problem is in setting your influencing bound and the light vector. try to extend the influencing bounds or play around with the light vector. these are my first thoughts after reading your code.
I agree. Here's the link:
subject: Problem with lighting in Java3D
Similar Threads
Help Java3d
Java3D Animation problem (Loads up components, then skips animation. No errors. Less than 75 lines.)
Problem with lighting in Java3D
Java3D: using for loops to draw objects I can later delete
Error (compile time) for JAVAX package