⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 colorinterp.java

📁 使用java3d进行,obj文件的加载.和实现全方位的3维场景交互
💻 JAVA
字号:
package csu.chailei.test422;

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.event.*;
import java.awt.*;
import java.awt.GraphicsConfiguration;
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.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.behaviors.vp.*;
import csu.chailei.Resources;
public class ColorInterp extends Applet {

	/**
	 * @param args
	 */
	 private SimpleUniverse universe ; 
	 private BranchGroup scene;  
	 private Canvas3D canvas;    
	 private BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 1000.0);
	
	 public Primitive  createGeometry(int filter,  java.net.URL texImage, Appearance appearance) 
	 {        /**         Create Sphere and texture it        */      
		 TextureLoader tex = new TextureLoader(texImage, TextureLoader.GENERATE_MIPMAP , this); 
		 Texture texture = tex.getTexture();  
		 texture.setMinFilter(filter) ;   
		 appearance.setTexture(texture);    
		 TextureAttributes texAttr = new TextureAttributes();    
		 texAttr.setTextureMode(TextureAttributes.MODULATE);      
		 appearance.setTextureAttributes(texAttr);     
		 Color3f black = new Color3f(0.0f, 0.0f, 0.0f);     
		 Color3f white = new Color3f(1.0f, 1.0f, 1.0f);     
		 Color3f gray = new Color3f(0.3f, 0.3f, 0.3f);      
		 Color3f ltgray = new Color3f(0.6f, 0.6f, 0.6f);   
		 // Set up the material properties      
		 appearance.setMaterial(new Material(white, black, ltgray, ltgray, 32.0f));     
		 Sphere sphere =  new Sphere(.4f,Primitive.GENERATE_NORMALS|Primitive.GENERATE_TEXTURE_COORDS,appearance); 
		 return sphere;    
		 }
	
	 public void setupView() {       
		 /** Add some view related things to view branch side     
		  *     of scene graph */      
		 // add mouse interaction to the ViewingPlatform    
		 
		 OrbitBehavior orbit = new OrbitBehavior(canvas,OrbitBehavior.REVERSE_ALL|OrbitBehavior.STOP_ZOOM);      
		 orbit.setSchedulingBounds(bounds);          
		 ViewingPlatform viewingPlatform = universe.getViewingPlatform();    
		 // This will move the ViewPlatform back a bit so the    
		 // objects in the scene can be viewed.        
		 viewingPlatform.setNominalViewingTransform();    
		 viewingPlatform.setViewPlatformBehavior(orbit);       
		 }
	 public BranchGroup createSceneGraph() {     
		 // Create the root of the branch graph      
		 BranchGroup objRoot = new BranchGroup();  
		 // Create a simple Shape3D node; add it to the scene graph.   
		 // Set up the texture map     
		 java.net.URL texImage = null;      
		 texImage=Resources.getResource("/resouce\\images\\bg.jpg");
		// texImage = new java.net.URL("file:../images/earth.jpg");     
		 Appearance app= new Appearance();    
		 Primitive geo = createGeometry( Texture.MULTI_LEVEL_LINEAR,texImage,app);
		 //spinGroup will be hooked into the interpolator   
		 TransformGroup spinGroup = new TransformGroup();   
		 spinGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);  
		 spinGroup.addChild(geo);      
		 // Create a new Behavior object that will perform the   
		 // desired operation on the specified transform and add   
		 // it into the scene graph.      
		 Alpha rotationAlpha = new Alpha(-1, 4000);      
		 RotationInterpolator rotator =          
			 new RotationInterpolator(rotationAlpha, spinGroup); 
		 rotator.setSchedulingBounds(bounds);       
		 //we'll need the Material to Interpolate the diffuse color    
		 //set capability bit to allow interpolator to change at render time   
		 Material mat = app.getMaterial();       
		 mat.setCapability(Material.ALLOW_COMPONENT_WRITE);     
		 Alpha colorAlpha = new Alpha(-1, 2000);    
		 //We interpolate from black to white, looping indefinitely   
		 Color3f endColor = new Color3f(1.0f,1.0f,1.0f);    
		 Color3f startColor = new Color3f(0.0f,0.0f,0.0f);    
		 ColorInterpolator colorInterp =       
			 new ColorInterpolator(colorAlpha, mat,startColor,endColor); 
		 colorInterp.setSchedulingBounds(bounds);        
			 //throw in some light so we aren't stumbling      
		 //around in the dark       
		 Color3f lightColor = new Color3f(.5f,.5f,.5f);  
		 AmbientLight ambientLight= new AmbientLight(lightColor);  
		 ambientLight.setInfluencingBounds(bounds);       
		 DirectionalLight directionalLight = new DirectionalLight();    
		 directionalLight.setColor(lightColor);       
         directionalLight.setInfluencingBounds(bounds);     
         objRoot.addChild(rotator); 
         //behavior gets attached at the top      
         objRoot.addChild(colorInterp); 
         //behavior gets attached at the top       
         objRoot.addChild(spinGroup); //TransformGroup and sphere  
         objRoot.addChild(directionalLight);       
         objRoot.addChild(ambientLight);        
         return objRoot;    }
	 public ColorInterp() { 
		 }   
	 public void init()
	 {        
		 BranchGroup scene = createSceneGraph();    
		 setLayout(new BorderLayout());       
		 GraphicsConfiguration config =          
			 SimpleUniverse.getPreferredConfiguration();  
		 canvas = new Canvas3D(config);     
		 add("Center", canvas);       
		 // Create a simple scene and attach it to the virtual universe  
		 universe = new SimpleUniverse(canvas);     
		 setupView();        
		 universe.addBranchGraph(scene); 
		 }    
	 public void destroy() {      
		 universe.removeAllLocales();  
		 }
	
	 public static void main(String[] args) {
		// TODO Auto-generated method stub
		 new MainFrame(new ColorInterp(), 400,400);
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -