Michael,
Try this tree. It looks better in monospace font:
root
+-- Shape sun + appearance +geometry
+-- Lights - sun
+-- rotate year
+-- translate earth orbit radius
+-- rotate -year
| +-- tilt axis
| +-- rotate earth day
| +-- Shape earth + appearance + geometry
+-- rotate month
+-- translate moon orbit radius
+-- rotate moon day (if you're modeling earth's
moon, this can be a unit transform)
+-- Shape moon + appearance + geometry
Fred
----- Original Message -----
From: "Michael Gromiha(Jouhou)970709" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 03, 2001 12:23 AM
Subject: [JAVA3D] java 3d graphics: help
> ear 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) or kindly tell me
the
> changes that I have to make in my program.
>
> I am looking for your kind reply.
>
> Thanking you and
> with best regards,
>
> Michael
>
> ==========
> Code
> ====
>
> file://<applet code="SolarAppMod1" width=800 height=500>
> file://</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();
>
> file://scene.addChild(new Axis());
>
>
> Transform3D translate = new
> Transform3D();
> Transform3D rotate = new Transform3D();
>
>
>
> file://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);
>
> file://scene.addChild(new Axis());
>
> gp.compile();
> return gp;
>
> }
>
>
> BranchGroup createMoon()
> {
> BranchGroup moon = new BranchGroup();
>
> file://scene.addChild(new Axis());
>
>
> Transform3D translate1
= new
> Transform3D();
> Transform3D
tempRotate1 = new
> Transform3D();
> Transform3D rotate1 = new
Transform3D();
>
> file://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);
>
file://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();
> file://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);
> }
> }
> --
>
****************************************************************
******
> Dr. M. Michael Gromiha, Ph.D Tel: 0081-298-36-9082
(Office)
> Bio Informatics Lab 0081-298-38-2956
(home)
> RIKEN Tsukuba Institute Fax: 0081-298-36-9080
> The Institute of Physical and E-mail:
[EMAIL PROTECTED]
> Chemical Research (RIKEN) [EMAIL PROTECTED]
> 3-1-1 Koyadai, Tsukuba, Ibaraki 305-0074
> JAPAN URL:
http://www.rtc.riken.go.jp/~gromiha
>
****************************************************************
******
>
>
================================================================
===========
> 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".
>
>
===========================================================================
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".