Wrox Home  
Search P2P Archive for: Go

  Return to Index  

asp_web_howto thread: java 3d graphics: help


Message #1 by "Michael Gromiha" <gromiha@r...> on Fri, 30 Nov 2001 11:38:29
Dear members,



I am now learning JAVA 3D graphics and as a first step I like

to make a solar system (earth rotates the sun and the moon rotates both

the earth and sun).



I am struggling with this problem for the past two weeks and I hope you 

can help me in this regard.



In my present program, the earth rotates the sun. The moon also rotates the

sun.  But I want to rotate also the MOON TOWARDS EARTH as its rotate the

sun. 



The problem is I don't know how to rotate

the moon towards earth and towards sun (it rotates around the sun

alone).



I am sending the source code that I have written for your kind perusal.

Could you please go through the program, modify it as you wish and

send me the corrected version which solves my problem 

(make a solar system in Java 3D graphics).



I am looking for your kind reply.



Thanking you and

with best regards,



Michael



==========

Code

====



//<applet code="SolarAppMod1" width=800 height=500>

//</applet>



import java.applet.Applet;

import java.awt.BorderLayout;

import java.awt.Frame;

import java.awt.Label.*;

import java.awt.event.*;

import com.sun.j3d.utils.applet.MainFrame;

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

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

import com.sun.j3d.utils.image.TextureLoader;

import com.sun.j3d.utils.behaviors.vp.OrbitBehavior;



import javax.media.j3d.*;

import javax.vecmath.*;

import Axis;





public class SolarAppMod1 extends Applet{



	Appearance createAppearance()

            {

                Appearance app = new Appearance();

                String fn = "earth.jpg";

                TextureLoader loader = new TextureLoader(fn,this);

                ImageComponent2D image = loader.getImage();

                Texture2D texture = new

Texture2D(Texture.BASE_LEVEL,Texture.RGBA,

                image.getWidth(),image.getHeight());



                texture.setImage(0,image);

                texture.setEnable(true);

                texture.setMagFilter(Texture.BASE_LEVEL_LINEAR);

                texture.setMinFilter(Texture.BASE_LEVEL_LINEAR);



		        Material material = new Material();

                material.setShininess(100.0f);

		        app.setMaterial(material);

		        app.setTexture(texture);

		        return app;

            }





     public BranchGroup createSunEarthScene()

            {

                BranchGroup scene = new BranchGroup();



                //scene.addChild(new Axis());





				Transform3D translate = new Transform3D();

                Transform3D rotate = new Transform3D();







                //SUN



                translate.set(new Vector3f(0.0f, 0.2f, 0.0f));

                TransformGroup BallTGT1 = new TransformGroup(translate);

                TransformGroup BallTGR1 = new TransformGroup(rotate);

                scene.addChild(BallTGT1);

                rotate.rotX(Math.PI/180.0d);

                BallTGR1.addChild(new Sphere (0.2f,

Sphere.GENERATE_NORMALS, createAppearance()));

                BallTGT1.addChild(BallTGR1);





                // Earth rotating around the sun



                translate.set(new Vector3f(-0.7f, 0.20f, 0.20f));



                TransformGroup BallTGT2 = new TransformGroup(translate);

                TransformGroup BallTGR2 = new TransformGroup(rotate);

               

BallTGT2.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

                scene.addChild(BallTGT2);

                Appearance appear = createAppearance();

                rotate.rotZ(Math.PI/5.0d);

                BallTGR2.addChild(new

Sphere(0.1f,Primitive.GENERATE_TEXTURE_COORDS,appear));

                BallTGT2.addChild(BallTGR2);







                BranchGroup gp = new BranchGroup();



                TransformGroup objSpin = new TransformGroup();



               

objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);





                gp.addChild(objSpin);







                objSpin.addChild(scene);







                Transform3D yAxis = new Transform3D();

                Alpha rotationAlpha = new Alpha(3, 16000);





                RotationInterpolator rotator 

		        new RotationInterpolator(rotationAlpha,

objSpin,yAxis,0.0f,(float)Math.PI*2.0f);

                BoundingSphere bounds 

                new BoundingSphere(new Point3d(0.0,0.0,0.0), 10.0);









                DirectionalLight light1 = new DirectionalLight();

                light1.setInfluencingBounds(bounds);

                Vector3f light1Direction = new Vector3f(-1.0f, -1.0f,

-1.0f);

                light1Direction.normalize();

                light1.setDirection(light1Direction);

                light1.setColor(new Color3f(1.0f, 1.0f, 1.0f));

                scene.addChild(light1);



                DirectionalLight light2 = new DirectionalLight();

                light2.setInfluencingBounds(bounds);

                Vector3f light2Direction = new Vector3f(1.0f, 1.0f, 1.0f);

                light2Direction.normalize();

                light2.setDirection(light2Direction);

                light2.setColor(new Color3f(0.0f, 1.0f, 0.0f));

                scene.addChild(light2);











                rotator.setSchedulingBounds(bounds);

                objSpin.addChild(rotator);









                Background bg = new Background();

                bg.setColor(0.05f, 0.05f, 0.2f);

                bg.setApplicationBounds(new BoundingSphere());

                scene.addChild(bg);



                //scene.addChild(new Axis());



                 gp.compile();

                 return gp;



	       }





	 BranchGroup createMoon()

	       {

	                BranchGroup moon = new BranchGroup();



	                //scene.addChild(new Axis());





					Transform3D translate1 = new Transform3D();

					Transform3D tempRotate1 = new Transform3D();

	                Transform3D rotate1 = new Transform3D();



	                //Moon rotating around earth

	                translate1.set(new Vector3f(-0.9f, 0.20f, 0.25f));

					TransformGroup BallTGT3 = new TransformGroup(translate1);

					moon.addChild(BallTGT3);

					Appearance appear = createAppearance();

					rotate1.rotZ(Math.PI/2.0d);

					TransformGroup BallTGR3 = new TransformGroup(rotate1);

					//rotate1.set(m1);

					BallTGR3.addChild(new

Sphere(0.1f,Sphere.GENERATE_NORMALS,createAppearance()));

					BallTGT3.addChild(BallTGR3);





					BranchGroup gp1 = new BranchGroup();



					TransformGroup objSpin1 = new TransformGroup();



					objSpin1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);





					gp1.addChild(objSpin1);







					objSpin1.addChild(moon);







					Transform3D yAxis = new Transform3D();

					Alpha rotationAlpha1 = new Alpha(-1, Alpha.INCREASING_ENABLE,0,0,

																				 4000,0,0,

																				 0,0,0);





				    RotationInterpolator rotator1 

					new RotationInterpolator(rotationAlpha1,

objSpin1,yAxis,0.0f,(float)Math.PI*2.0f);

					BoundingSphere bounds1 

					new BoundingSphere(new Point3d(-0.7,0.20,20.0), 0.1);



					 rotator1.setSchedulingBounds(bounds1);

					 objSpin1.addChild(rotator1);

                     gp1.compile();

                     return gp1;



             }

















    public SolarAppMod1()

    {

        setLayout(new BorderLayout());

        Canvas3D canvas3D = new

Canvas3D(SimpleUniverse.getPreferredConfiguration());

        add("Center", canvas3D);





        BranchGroup scene = createSunEarthScene();

        BranchGroup moon = createMoon();

        //scene.addChild(new Axis());

        scene.compile();

        moon.compile();



        SimpleUniverse simpleU = new SimpleUniverse(canvas3D);



        simpleU.getViewingPlatform().setNominalViewingTransform();



        simpleU.addBranchGraph(scene);

        simpleU.addBranchGraph(moon);

    }



    public static void main(String[] args)

    {

        Frame frame = new MainFrame(new SolarAppMod1(), 400, 300);

    }

}

Message #2 by Nick Charlesworth <nick@f...> on Fri, 30 Nov 2001 11:34:47 -0000
This is an ASP list. :)



-----Original Message-----

From: Michael Gromiha [mailto:gromiha@r...]

Sent: 30 November 2001 11:38

To: ASP Web HowTo

Subject: [asp_web_howto] java 3d graphics: help





Dear members,



I am now learning JAVA 3D graphics and as a first step I like

to make a solar system (earth rotates the sun and the moon rotates both

the earth and sun).



I am struggling with this problem for the past two weeks and I hope you 

can help me in this regard.



In my present program, the earth rotates the sun. The moon also rotates the

sun.  But I want to rotate also the MOON TOWARDS EARTH as its rotate the

sun. 



The problem is I don't know how to rotate

the moon towards earth and towards sun (it rotates around the sun

alone).



I am sending the source code that I have written for your kind perusal.

Could you please go through the program, modify it as you wish and

send me the corrected version which solves my problem 

(make a solar system in Java 3D graphics).



I am looking for your kind reply.



Thanking you and

with best regards,



Michael



==========

Code

====



//<applet code="SolarAppMod1" width=800 height=500>

//</applet>



import java.applet.Applet;

import java.awt.BorderLayout;

import java.awt.Frame;

import java.awt.Label.*;

import java.awt.event.*;

import com.sun.j3d.utils.applet.MainFrame;

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

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

import com.sun.j3d.utils.image.TextureLoader;

import com.sun.j3d.utils.behaviors.vp.OrbitBehavior;



import javax.media.j3d.*;

import javax.vecmath.*;

import Axis;





public class SolarAppMod1 extends Applet{



	Appearance createAppearance()

            {

                Appearance app = new Appearance();

                String fn = "earth.jpg";

                TextureLoader loader = new TextureLoader(fn,this);

                ImageComponent2D image = loader.getImage();

                Texture2D texture = new

Texture2D(Texture.BASE_LEVEL,Texture.RGBA,

                image.getWidth(),image.getHeight());



                texture.setImage(0,image);

                texture.setEnable(true);

                texture.setMagFilter(Texture.BASE_LEVEL_LINEAR);

                texture.setMinFilter(Texture.BASE_LEVEL_LINEAR);



		        Material material = new Material();

                material.setShininess(100.0f);

		        app.setMaterial(material);

		        app.setTexture(texture);

		        return app;

            }





     public BranchGroup createSunEarthScene()

            {

                BranchGroup scene = new BranchGroup();



                //scene.addChild(new Axis());





				Transform3D translate = new Transform3D();

                Transform3D rotate = new Transform3D();







                //SUN



                translate.set(new Vector3f(0.0f, 0.2f, 0.0f));

                TransformGroup BallTGT1 = new TransformGroup(translate);

                TransformGroup BallTGR1 = new TransformGroup(rotate);

                scene.addChild(BallTGT1);

                rotate.rotX(Math.PI/180.0d);

                BallTGR1.addChild(new Sphere (0.2f,

Sphere.GENERATE_NORMALS, createAppearance()));

                BallTGT1.addChild(BallTGR1);





                // Earth rotating around the sun



                translate.set(new Vector3f(-0.7f, 0.20f, 0.20f));



                TransformGroup BallTGT2 = new TransformGroup(translate);

                TransformGroup BallTGR2 = new TransformGroup(rotate);

               

BallTGT2.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

                scene.addChild(BallTGT2);

                Appearance appear = createAppearance();

                rotate.rotZ(Math.PI/5.0d);

                BallTGR2.addChild(new

Sphere(0.1f,Primitive.GENERATE_TEXTURE_COORDS,appear));

                BallTGT2.addChild(BallTGR2);







                BranchGroup gp = new BranchGroup();



                TransformGroup objSpin = new TransformGroup();



               

objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);





                gp.addChild(objSpin);







                objSpin.addChild(scene);







                Transform3D yAxis = new Transform3D();

                Alpha rotationAlpha = new Alpha(3, 16000);





                RotationInterpolator rotator 

		        new RotationInterpolator(rotationAlpha,

objSpin,yAxis,0.0f,(float)Math.PI*2.0f);

                BoundingSphere bounds 

                new BoundingSphere(new Point3d(0.0,0.0,0.0), 10.0);









                DirectionalLight light1 = new DirectionalLight();

                light1.setInfluencingBounds(bounds);

                Vector3f light1Direction = new Vector3f(-1.0f, -1.0f,

-1.0f);

                light1Direction.normalize();

                light1.setDirection(light1Direction);

                light1.setColor(new Color3f(1.0f, 1.0f, 1.0f));

                scene.addChild(light1);



                DirectionalLight light2 = new DirectionalLight();

                light2.setInfluencingBounds(bounds);

                Vector3f light2Direction = new Vector3f(1.0f, 1.0f, 1.0f);

                light2Direction.normalize();

                light2.setDirection(light2Direction);

                light2.setColor(new Color3f(0.0f, 1.0f, 0.0f));

                scene.addChild(light2);











                rotator.setSchedulingBounds(bounds);

                objSpin.addChild(rotator);









                Background bg = new Background();

                bg.setColor(0.05f, 0.05f, 0.2f);

                bg.setApplicationBounds(new BoundingSphere());

                scene.addChild(bg);



                //scene.addChild(new Axis());



                 gp.compile();

                 return gp;



	       }





	 BranchGroup createMoon()

	       {

	                BranchGroup moon = new BranchGroup();



	                //scene.addChild(new Axis());





					Transform3D translate1 = new

Transform3D();

					Transform3D tempRotate1 = new

Transform3D();

	                Transform3D rotate1 = new Transform3D();



	                //Moon rotating around earth

	                translate1.set(new Vector3f(-0.9f, 0.20f, 0.25f));

					TransformGroup BallTGT3 = new

TransformGroup(translate1);

					moon.addChild(BallTGT3);

					Appearance appear 

createAppearance();

					rotate1.rotZ(Math.PI/2.0d);

					TransformGroup BallTGR3 = new

TransformGroup(rotate1);

					//rotate1.set(m1);

					BallTGR3.addChild(new

Sphere(0.1f,Sphere.GENERATE_NORMALS,createAppearance()));

					BallTGT3.addChild(BallTGR3);





					BranchGroup gp1 = new BranchGroup();



					TransformGroup objSpin1 = new

TransformGroup();



	

objSpin1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);





					gp1.addChild(objSpin1);







					objSpin1.addChild(moon);







					Transform3D yAxis = new

Transform3D();

					Alpha rotationAlpha1 = new Alpha(-1,

Alpha.INCREASING_ENABLE,0,0,

	

4000,0,0,

	

0,0,0);





				    RotationInterpolator rotator1 

					new

RotationInterpolator(rotationAlpha1,

objSpin1,yAxis,0.0f,(float)Math.PI*2.0f);

					BoundingSphere bounds1 

					new BoundingSphere(new

Point3d(-0.7,0.20,20.0), 0.1);



	

rotator1.setSchedulingBounds(bounds1);

					 objSpin1.addChild(rotator1);

                     gp1.compile();

                     return gp1;



             }

















    public SolarAppMod1()

    {

        setLayout(new BorderLayout());

        Canvas3D canvas3D = new

Canvas3D(SimpleUniverse.getPreferredConfiguration());

        add("Center", canvas3D);





        BranchGroup scene = createSunEarthScene();

        BranchGroup moon = createMoon();

        //scene.addChild(new Axis());

        scene.compile();

        moon.compile();



        SimpleUniverse simpleU = new SimpleUniverse(canvas3D);



        simpleU.getViewingPlatform().setNominalViewingTransform();



        simpleU.addBranchGraph(scene);

        simpleU.addBranchGraph(moon);

    }



    public static void main(String[] args)

    {

        Frame frame = new MainFrame(new SolarAppMod1(), 400, 300);

    }

}






$subst('Email.Unsub')



Read the future with ebooks at B&N

http://service.bfast.com/bfast/click?bfmid=2181&sourceid=38934667&categoryid

=rn_ebooks

Message #3 by Joe Ingle <Joe@k...> on Fri, 30 Nov 2001 12:20:49 -0000
I think you may be in the wrong list Michael, this is for ASP.



-----Original Message-----

From: Michael Gromiha [mailto:gromiha@r...]

Sent: Friday, November 30, 2001 11:38

To: ASP Web HowTo

Subject: [asp_web_howto] java 3d graphics: help





Dear members,



I am now learning JAVA 3D graphics and as a first step I like

to make a solar system (earth rotates the sun and the moon rotates both

the earth and sun).



I am struggling with this problem for the past two weeks and I hope you 

can help me in this regard.



In my present program, the earth rotates the sun. The moon also rotates the

sun.  But I want to rotate also the MOON TOWARDS EARTH as its rotate the

sun. 



The problem is I don't know how to rotate

the moon towards earth and towards sun (it rotates around the sun

alone).



I am sending the source code that I have written for your kind perusal.

Could you please go through the program, modify it as you wish and

send me the corrected version which solves my problem 

(make a solar system in Java 3D graphics).



I am looking for your kind reply.



Thanking you and

with best regards,



Michael



==========

Code

====



//<applet code="SolarAppMod1" width=800 height=500>

//</applet>



import java.applet.Applet;

import java.awt.BorderLayout;

import java.awt.Frame;

import java.awt.Label.*;

import java.awt.event.*;

import com.sun.j3d.utils.applet.MainFrame;

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

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

import com.sun.j3d.utils.image.TextureLoader;

import com.sun.j3d.utils.behaviors.vp.OrbitBehavior;



import javax.media.j3d.*;

import javax.vecmath.*;

import Axis;





public class SolarAppMod1 extends Applet{



	Appearance createAppearance()

            {

                Appearance app = new Appearance();

                String fn = "earth.jpg";

                TextureLoader loader = new TextureLoader(fn,this);

                ImageComponent2D image = loader.getImage();

                Texture2D texture = new

Texture2D(Texture.BASE_LEVEL,Texture.RGBA,

                image.getWidth(),image.getHeight());



                texture.setImage(0,image);

                texture.setEnable(true);

                texture.setMagFilter(Texture.BASE_LEVEL_LINEAR);

                texture.setMinFilter(Texture.BASE_LEVEL_LINEAR);



		        Material material = new Material();

                material.setShininess(100.0f);

		        app.setMaterial(material);

		        app.setTexture(texture);

		        return app;

            }





     public BranchGroup createSunEarthScene()

            {

                BranchGroup scene = new BranchGroup();



                //scene.addChild(new Axis());





				Transform3D translate = new Transform3D();

                Transform3D rotate = new Transform3D();







                //SUN



                translate.set(new Vector3f(0.0f, 0.2f, 0.0f));

                TransformGroup BallTGT1 = new TransformGroup(translate);

                TransformGroup BallTGR1 = new TransformGroup(rotate);

                scene.addChild(BallTGT1);

                rotate.rotX(Math.PI/180.0d);

                BallTGR1.addChild(new Sphere (0.2f,

Sphere.GENERATE_NORMALS, createAppearance()));

                BallTGT1.addChild(BallTGR1);





                // Earth rotating around the sun



                translate.set(new Vector3f(-0.7f, 0.20f, 0.20f));



                TransformGroup BallTGT2 = new TransformGroup(translate);

                TransformGroup BallTGR2 = new TransformGroup(rotate);

               

BallTGT2.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

                scene.addChild(BallTGT2);

                Appearance appear = createAppearance();

                rotate.rotZ(Math.PI/5.0d);

                BallTGR2.addChild(new

Sphere(0.1f,Primitive.GENERATE_TEXTURE_COORDS,appear));

                BallTGT2.addChild(BallTGR2);







                BranchGroup gp = new BranchGroup();



                TransformGroup objSpin = new TransformGroup();



               

objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);





                gp.addChild(objSpin);







                objSpin.addChild(scene);







                Transform3D yAxis = new Transform3D();

                Alpha rotationAlpha = new Alpha(3, 16000);





                RotationInterpolator rotator 

		        new RotationInterpolator(rotationAlpha,

objSpin,yAxis,0.0f,(float)Math.PI*2.0f);

                BoundingSphere bounds 

                new BoundingSphere(new Point3d(0.0,0.0,0.0), 10.0);









                DirectionalLight light1 = new DirectionalLight();

                light1.setInfluencingBounds(bounds);

                Vector3f light1Direction = new Vector3f(-1.0f, -1.0f,

-1.0f);

                light1Direction.normalize();

                light1.setDirection(light1Direction);

                light1.setColor(new Color3f(1.0f, 1.0f, 1.0f));

                scene.addChild(light1);



                DirectionalLight light2 = new DirectionalLight();

                light2.setInfluencingBounds(bounds);

                Vector3f light2Direction = new Vector3f(1.0f, 1.0f, 1.0f);

                light2Direction.normalize();

                light2.setDirection(light2Direction);

                light2.setColor(new Color3f(0.0f, 1.0f, 0.0f));

                scene.addChild(light2);











                rotator.setSchedulingBounds(bounds);

                objSpin.addChild(rotator);









                Background bg = new Background();

                bg.setColor(0.05f, 0.05f, 0.2f);

                bg.setApplicationBounds(new BoundingSphere());

                scene.addChild(bg);



                //scene.addChild(new Axis());



                 gp.compile();

                 return gp;



	       }





	 BranchGroup createMoon()

	       {

	                BranchGroup moon = new BranchGroup();



	                //scene.addChild(new Axis());





					Transform3D translate1 = new

Transform3D();

					Transform3D tempRotate1 = new

Transform3D();

	                Transform3D rotate1 = new Transform3D();



	                //Moon rotating around earth

	                translate1.set(new Vector3f(-0.9f, 0.20f, 0.25f));

					TransformGroup BallTGT3 = new

TransformGroup(translate1);

					moon.addChild(BallTGT3);

					Appearance appear 

createAppearance();

					rotate1.rotZ(Math.PI/2.0d);

					TransformGroup BallTGR3 = new

TransformGroup(rotate1);

					//rotate1.set(m1);

					BallTGR3.addChild(new

Sphere(0.1f,Sphere.GENERATE_NORMALS,createAppearance()));

					BallTGT3.addChild(BallTGR3);





					BranchGroup gp1 = new BranchGroup();



					TransformGroup objSpin1 = new

TransformGroup();



	

objSpin1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);





					gp1.addChild(objSpin1);







					objSpin1.addChild(moon);







					Transform3D yAxis = new

Transform3D();

					Alpha rotationAlpha1 = new Alpha(-1,

Alpha.INCREASING_ENABLE,0,0,

	

4000,0,0,

	

0,0,0);





				    RotationInterpolator rotator1 

					new

RotationInterpolator(rotationAlpha1,

objSpin1,yAxis,0.0f,(float)Math.PI*2.0f);

					BoundingSphere bounds1 

					new BoundingSphere(new

Point3d(-0.7,0.20,20.0), 0.1);



	

rotator1.setSchedulingBounds(bounds1);

					 objSpin1.addChild(rotator1);

                     gp1.compile();

                     return gp1;



             }

















    public SolarAppMod1()

    {

        setLayout(new BorderLayout());

        Canvas3D canvas3D = new

Canvas3D(SimpleUniverse.getPreferredConfiguration());

        add("Center", canvas3D);





        BranchGroup scene = createSunEarthScene();

        BranchGroup moon = createMoon();

        //scene.addChild(new Axis());

        scene.compile();

        moon.compile();



        SimpleUniverse simpleU = new SimpleUniverse(canvas3D);



        simpleU.getViewingPlatform().setNominalViewingTransform();



        simpleU.addBranchGraph(scene);

        simpleU.addBranchGraph(moon);

    }



    public static void main(String[] args)

    {

        Frame frame = new MainFrame(new SolarAppMod1(), 400, 300);

    }

}






$subst('Email.Unsub')



Read the future with ebooks at B&N

http://service.bfast.com/bfast/click?bfmid=2181&sourceid=38934667&categoryid

=rn_ebooks


  Return to Index