code: --------------------------------------------------------------------------- import com.sun.j3d.utils.behaviors.keyboard.*; import com.sun.j3d.utils.behaviors.mouse.*; import com.sun.j3d.utils.universe.*; import javax.media.j3d.*; import javax.vecmath.*;
public class Movement{ private BoundingSphere boundsSphere; private double bounds = 10000; private TransformGroup vpTrans = null; private MouseRotate mRotate; private MouseTranslate mTranslate; private MouseZoom mZoom; private KeyNavigatorBehavior kBehavior; public Movement(SimpleUniverse su, TransformGroup TG){ boundsSphere = new BoundingSphere(new Point3d(), bounds); Transform3D T3D = new Transform3D(); Vector3f translate = new Vector3f(); vpTrans = su.getViewingPlatform().getViewPlatformTransform (); translate.set( 0.0f, 0.0f, 69f); // Observers position T3D.setTranslation(translate); vpTrans.setTransform(T3D); mRotate = new MouseRotate(MouseBehavior.INVERT_INPUT); mRotate.setTransformGroup(vpTrans); mRotate.setSchedulingBounds(boundsSphere); mTranslate = new MouseTranslate(); mTranslate.setTransformGroup(vpTrans); mTranslate.setSchedulingBounds(boundsSphere); mZoom = new MouseZoom(MouseBehavior.INVERT_INPUT); mZoom.setFactor(1); mZoom.setTransformGroup(vpTrans); mZoom.setSchedulingBounds(boundsSphere); kBehavior = new KeyNavigatorBehavior(vpTrans); kBehavior.setSchedulingBounds(boundsSphere); } public MouseRotate getMouseRotate(){ return mRotate; } public MouseTranslate getMouseTranslate(){ return mTranslate; } public MouseZoom getMouseZoom(){ return mZoom; } public KeyNavigatorBehavior getKeyNavigator(){ return kBehavior; } } import java.applet.Applet; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GraphicsConfiguration; import com.sun.j3d.utils.applet.MainFrame; import com.sun.j3d.utils.geometry.*; import com.sun.j3d.utils.universe.*; import javax.media.j3d.*; import javax.vecmath.*; import java.awt.event.*; import java.awt.AWTEvent; import java.util.Enumeration; import com.sun.j3d.utils.image.TextureLoader; public class Ray3dApp extends Applet{ Appearance createTwistAppearance(){ Appearance twistAppear = new Appearance(); TextureLoader loader = new TextureLoader("TEST.jpg", this); ImageComponent2D image = loader.getImage(); Texture2D texture = new Texture2D(Texture.BASE_LEVEL //Texture.ALLOW_LOD_RANGE_READ //| Texture.ALLOW_LOD_RANGE_WRITE , Texture.RGBA , image.getWidth() , image.getHeight()); texture.setImage(0,image); texture.setEnable(true); twistAppear.setTexture(texture); twistAppear.setTransparencyAttributes( new TransparencyAttributes (TransparencyAttributes.FASTEST, 0.1f)); // ALTERNATIVE WITH MIPMAP /*final int SMALLEST = 1; int imageWidth, imageHeight, imageLevel; String filename = "earth0.jpg"; System.out.println("attempt to load texture from file: "+filename); TextureLoader loader = new TextureLoader(filename, this); ImageComponent2D image = loader.getImage(); if(image == null) { System.out.println("load failed for texture: "+filename); } imageWidth = image.getWidth(); imageHeight = image.getHeight(); Texture2D texture = new Texture2D (Texture.MULTI_LEVEL_MIPMAP //| Texture.ALLOW_MIPMAP_MODE_READ //| Texture.ALLOW_LOD_RANGE_WRITE //Texture.BASE_LEVEL //| Texture.ALLOW_ENABLE_READ //| Texture.ALLOW_ENABLE_WRITE //| Texture.ALLOW_MIPMAP_MODE_READ //| Texture.ALLOW_IMAGE_READ ,Texture.RGBA, imageWidth, imageHeight); imageLevel = 0; System.out.println("set image level: "+imageLevel+" width: "+imageWidth +" height: "+imageHeight); texture.setImage(imageLevel, image); while (imageWidth > SMALLEST || imageWidth > SMALLEST){ imageLevel++; if (imageWidth > SMALLEST) imageWidth /= 2; if (imageHeight > SMALLEST) imageHeight /= 2; System.out.print("load image level: "+imageLevel+" width: "+imageWidth +" height: "+imageHeight+" :: "); //filename = "earth"+(imageLevel+4)+".jpg"; filename = "earth"+imageLevel+".jpg"; System.out.print(filename + " ... "); loader = new TextureLoader(filename, this); image = loader.getImage(); System.out.println("set image"); texture.setImage(imageLevel, image); } texture.setMagFilter(Texture.BASE_LEVEL_POINT); texture.setMinFilter(Texture.MULTI_LEVEL_POINT); twistAppear.setTexture(texture); //TextureAttributes tAtt = new TextureAttributes(); //tAtt.setCapability(TextureAttributes.ALLOW_TRANSFORM_WRITE); //twistAppear.setTextureAttributes(tAtt); twistAppear.setTransparencyAttributes( new TransparencyAttributes (TransparencyAttributes.FASTEST, 0.1f)); //texture.setEnable(true); */ //END OF MIPMAP return twistAppear; } // public BranchGroup createSceneGraph(SimpleUniverse su) { BranchGroup objRoot = new BranchGroup(); Appearance app = new Appearance(); BoundingSphere bounds = new BoundingSphere(new Point3d (),1000); TransformGroup TG = new TransformGroup(); TG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); TG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); //TG.setBounds(new BoundingSphere(new Point3d(),200)); objRoot.addChild(TG); Appearance appear = createTwistAppearance(); Sphere earth = new Sphere (63.78137f,Primitive.GENERATE_NORMALS | Primitive.GENERATE_TEXTURE_COORDS | Primitive.GEOMETRY_NOT_SHARED,200, appear); //objRoot.addChild(earth); Movement movement = new Movement(su,TG); /* Alpha rotationAlpha = new Alpha(-1, 16000); RotationInterpolator rotator = new RotationInterpolator(rotationAlpha, TG); BoundingSphere mbounds = new BoundingSphere(new Point3d(),637.8137f); rotator.setSchedulingBounds(mbounds); TG.addChild(rotator); */ TG.addChild(earth); objRoot.addChild(movement.getMouseRotate()); objRoot.addChild(movement.getMouseTranslate()); objRoot.addChild(movement.getMouseZoom()); objRoot.addChild(movement.getKeyNavigator()); Background background = new Background(1.0f, 1.0f, 1.0f); background.setApplicationBounds(bounds); objRoot.addChild(background); objRoot.compile(); return objRoot; } public Ray3dApp(){ setLayout(new BorderLayout()); GraphicsConfiguration gConfig = SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas3D = new Canvas3D(gConfig); add("Center",canvas3D); canvas3D.setStereoEnable(false); SimpleUniverse sUniverse = new SimpleUniverse(canvas3D); sUniverse.getViewingPlatform().setNominalViewingTransform (); //sUniverse.setActivationRadius(40); BranchGroup scene = createSceneGraph(sUniverse); sUniverse.addBranchGraph(scene); } public static void main(String[] args) { //Frame frame = new MainFrame(new Ray3dApp(), 2048,1024 ); Frame frame = new MainFrame(new Ray3dApp(), 512,512 ); } } =========================================================================== 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".