I send you a code with an animated sphere under 3 different lights (ambient, point, directional).
You can go in the code and switch each light on and off if you want.
You should read j3d tutorials and chapter 6 about lights anyway..
JR
Ben Logan wrote:
Hello, I wonder if someone could take the time to write a simple lighting example for me, just to help me get my head around how to program lights. For example; a simple (ceiling) light on the roof of a 1,1,1 cube, shining down and lighting the contents of the box (but nothing else) - so it shouldn't breach the walls in anyway. Of all the books I have on Java3D this simple example is all I need to help get me started, but I cant find example code anywhere! Any help would be much appreciatedRegards Ben ******************************************** Ben Logan - Graduate Software Engineer RCID Stephenson Building Newcastle Upon Tyne NE1 7RU www.rcid.ncl.ac.uk ******************************************** =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff JAVA3D-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".
--
D'Amore Jean-Robert
IT Systems
Bell Geospace Ltd.
Unit 5A, Crombie Lodge
Aberdeen A.S.T.P
Balgownie Drive
Aberdeen AB228GU
Tel: +44(0)1224227703
Email: [EMAIL PROTECTED]
D'Amore Jean-Robert
IT Systems
Bell Geospace Ltd.
Unit 5A, Crombie Lodge
Aberdeen A.S.T.P
Balgownie Drive
Aberdeen AB228GU
Tel: +44(0)1224227703
Email: [EMAIL PROTECTED]
=========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff JAVA3D-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.*;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.Sphere;
import javax.media.j3d.*;
import javax.vecmath.*;
import javax.media.j3d.SpotLight;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.AmbientLight;
import javax.media.j3d.PointLight;
import javax.media.j3d.Appearance;
import javax.media.j3d.Material;
import com.sun.j3d.utils.behaviors.mouse.MouseBehavior;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;
// CubeLight renders a single, rotating sphere, under light.
public class LightSphere extends Applet {
public LightSphere() {
setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
add("Center", canvas3D);
BranchGroup scene = createSceneGraph();
SimpleUniverse simpleU = new SimpleUniverse(canvas3D); // SimpleUniverse is
a Convenience Utility class
simpleU.getViewingPlatform().setNominalViewingTransform(); // This will
move the ViewPlatform back a bit so the
// objects in
the scene can be viewed.
simpleU.addBranchGraph(scene);
}
public BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup(); // Create the root of the
branch graph
TransformGroup transGroup = new TransformGroup();
transGroup.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE);
transGroup.setCapability( TransformGroup.ALLOW_TRANSFORM_READ);
BoundingSphere bounds = new BoundingSphere(); // I set the bounds for the
light
bounds.setRadius(1);
// Here I create three different types of light
// The only one missing is spotlight
AmbientLight ambient = new AmbientLight();
ambient.setColor( new Color3f(0.4f, 0.4f, 0.4f));
ambient.setEnable( true);
ambient.setInfluencingBounds( bounds);
DirectionalLight directional = new DirectionalLight();
((DirectionalLight)directional).setDirection( 0.0f, 0.0f, -1.0f);
directional.setColor( new Color3f(0.6f, 0.6f, 0.6f));
directional.setEnable( true);
directional.setInfluencingBounds( bounds);
PointLight point = new PointLight();
((PointLight)point).setPosition( 0.0f, 0.0f, 1.0f);
point.setColor( new Color3f(0.6f, 0.6f, 0.6f));
point.setEnable( true);
point.setInfluencingBounds( bounds);
// here are the three lights you can switch on and off to see the influence of
each
objRoot.addChild( ambient);
objRoot.addChild( directional);
objRoot.addChild( point);
// Mouse behaviors for animation
MouseTranslate myMouseTranslate = new
MouseTranslate(MouseBehavior.INVERT_INPUT);
myMouseTranslate.setTransformGroup( transGroup);
myMouseTranslate.setSchedulingBounds(bounds);
MouseRotate myMouseRotate = new MouseRotate(MouseBehavior.INVERT_INPUT);
myMouseRotate.setTransformGroup( transGroup);
myMouseRotate.setSchedulingBounds(bounds);
objRoot.addChild( myMouseRotate);
objRoot.addChild( myMouseTranslate);
objRoot.addChild( transGroup);
// Here we create a sphere, generate normals and the appearence and material
properties.
// the chapter 6 lights of j3d tutorials v1.5
transGroup.addChild(new Sphere(0.5f, Sphere.GENERATE_NORMALS,
createAppearance()));
return objRoot;
}
private Appearance createAppearance() {
Appearance appear = new Appearance();
Material material = new Material();
appear.setMaterial( material);
return appear;
}
// The following allows this to be run as an application
// as well as an applet
public static void main(String[] args) {
Frame frame = new MainFrame(new LightSphere(), 256, 256);
}
}
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".
