📄 simpletexattr.java
字号:
import java.applet.Applet;import java.awt.*;import java.awt.event.*;import com.sun.j3d.utils.applet.MainFrame;import com.sun.j3d.utils.universe.*;import com.sun.j3d.utils.image.TextureLoader;import com.sun.j3d.utils.geometry.Box;import com.sun.j3d.utils.geometry.Cylinder;import javax.media.j3d.*;import javax.vecmath.*;import java.awt.GraphicsConfiguration;public class SimpleTexAttr extends Applet {
private java.net.URL imageURL = null; private SimpleUniverse u = null; private Texture myTex;public BranchGroup createSceneGraph() { // Create the root of the branch graph BranchGroup sceneRoot = new BranchGroup(); BoundingSphere bounds =new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
Color3f white = new Color3f(1.0f, 1.0f, 1.0f); Color3f yellow = new Color3f(1.0f, 1.0f, 0.0f); Color3f cyan = new Color3f(0.0f, 1.0f, 1.0f); TransformGroup objTrans = new TransformGroup(); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); Transform3D yAxis = new Transform3D(); yAxis.rotY(Math.PI/4.0); objTrans.setTransform(yAxis); sceneRoot.addChild(objTrans); // TextureLoader myLoader=new TextureLoader (filename,this); Appearance app = new Appearance(); TextureLoader myLoader=new TextureLoader (imageURL,this); if(myLoader==null) return null;// ImageComponent2D myImage=myLoader.getImage ();// myTex=(Texture2D)myLoader.getTexture(); myTex=myLoader.getTexture(); // Create appearance object for textured cube app.setTexture(myTex); /* TextureAttributes texAttr = new TextureAttributes(); Transform3D myTrans = new Transform3D( ); myTrans.rotZ( Math.PI/4.0 ); // 45 degrees texAttr.setTextureTransform( myTrans ); app.setTextureAttributes(texAttr);*//* TextureAttributes texAttr = new TextureAttributes(); Transform3D myTrans = new Transform3D( ); myTrans.setScale(new Vector3d(2.0,4.0,0.0)); texAttr.setTextureTransform( myTrans ); app.setTextureAttributes(texAttr);*//* TextureAttributes texAttr = new TextureAttributes(); Transform3D myTrans = new Transform3D( ); myTrans.setTranslation(new Vector3f(0.5f,0.5f,0.0f)); texAttr.setTextureTransform( myTrans ); app.setTextureAttributes(texAttr);*/
/* TransparencyAttributes myTA = new TransparencyAttributes( ); myTA.setTransparency( 0.5f ); myTA.setTransparencyMode( TransparencyAttributes.BLENDED ); app.setTransparencyAttributes (myTA);
Material mat = new Material(); mat.setDiffuseColor(cyan); mat.setSpecularColor(white); mat.setShininess(128); app.setMaterial (mat);
TextureAttributes texAttr = new TextureAttributes(); texAttr.setTextureMode(TextureAttributes.REPLACE ); texAttr.setTextureBlendColor (new Color4f(0.0f,1.0f,1.0f,0.5f)); app.setTextureAttributes(texAttr);
AmbientLight lightA = new AmbientLight(); lightA.setInfluencingBounds(bounds); sceneRoot.addChild(lightA); DirectionalLight lightD1 = new DirectionalLight(); lightD1.setInfluencingBounds(bounds); Vector3f direction = new Vector3f(-0.2f, -1.0f, -1.0f); lightD1.setDirection(direction); lightD1.setColor(yellow); sceneRoot.addChild(lightD1);*/ /* myTex.setBoundaryModeS(Texture2D.CLAMP );
myTex.setBoundaryModeT(Texture2D.CLAMP );
myTex.setBoundaryColor (new Color4f(0.0f,1.0f,1.0f,0.0f)); TextureAttributes texAttr = new TextureAttributes(); Transform3D myTrans = new Transform3D( ); myTrans.setScale(2.0f); texAttr.setTextureTransform( myTrans ); app.setTextureAttributes(texAttr);*/
/* myTex.setMagFilter( Texture.BASE_LEVEL_POINT );// myTex.setMinFilter( Texture.BASE_LEVEL_POINT );
TextureAttributes texAttr = new TextureAttributes(); Transform3D myTrans = new Transform3D( ); myTrans.setScale(0.5f); texAttr.setTextureTransform( myTrans ); app.setTextureAttributes(texAttr);*/ // Create textured cube and add it to the scene graph. Box myBox = new Box(0.4f, 0.4f, 0.4f, Box.GENERATE_TEXTURE_COORDS |Box.GENERATE_NORMALS , app); objTrans.addChild(myBox);
// Have Java 3D perform optimizations on this scene graph. sceneRoot.compile(); return sceneRoot; } public SimpleTexAttr(java.net.URL filename) { imageURL = filename; // filename = "brick.jpg";/* setLayout(new BorderLayout()); GraphicsConfiguration config =SimpleUniverse.getPreferredConfiguration(); Canvas3D c = new Canvas3D(config); add("Center", c); BranchGroup scene = createSceneGraph(); SimpleUniverse u = new SimpleUniverse(c); u.getViewingPlatform().setNominalViewingTransform(); u.addBranchGraph(scene);*/ } public void init() { if (imageURL == null) { // the path to the image for an applet try { imageURL = new java.net.URL(getCodeBase().toString() + "../misc/brick.jpg"); } catch (java.net.MalformedURLException ex) { System.out.println(ex.getMessage()); System.exit(1); } } setLayout(new BorderLayout()); GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); GraphicsConfiguration confi= SimpleUniverse.getPreferredConfiguration(); Canvas3D c=new Canvas3D(confi); add("Center", c); // create the gui BranchGroup scene = createSceneGraph(); u = new SimpleUniverse(c); ViewingPlatform viewingPlatform = u.getViewingPlatform(); // This will move the ViewPlatform back a bit so the // objects in the scene can be viewed. viewingPlatform.setNominalViewingTransform(); u.addBranchGraph(scene); } public static void main(String[] args) { java.net.URL filename=null; try { filename=new java.net.URL("file:../misc/brick.jpg"); } catch(java.net.MalformedURLException e) { System.out.println(e.getMessage()); System.exit(1); } new MainFrame(new SimpleTexAttr(filename), 256, 256); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -