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

📄 complexprimitivedisplay.java

📁 是一个简单的Java3d小例子
💻 JAVA
字号:
import java.applet.Applet;
import java.awt.*;
import com.sun.j3d.utils.applet.MainFrame;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.behaviors.mouse.*;
import com.sun.j3d.utils.behaviors.vp.OrbitBehavior;
import com.sun.j3d.utils.geometry.*;

public class complexprimitivedisplay extends Applet{   
	private SimpleUniverse u;
	private BranchGroup root=new BranchGroup();
	private Canvas3D c;
	private BranchGroup scene1=null;
	private BranchGroup scene2=null;
	int flag=0;
	
	 public complexprimitivedisplay()
     {
      setLayout(new BorderLayout());
      GraphicsConfiguration config=SimpleUniverse.getPreferredConfiguration();
      c=new  Canvas3D(config);
      add("Center",c);
      BranchGroup scene=createSceneGraph();
      u=new SimpleUniverse(c);
      u.getViewingPlatform().setNominalViewingTransform();
      OrbitBehavior orbit = new OrbitBehavior(c, OrbitBehavior.REVERSE_ALL);
      orbit.setSchedulingBounds(new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0));
      u.getViewingPlatform().setViewPlatformBehavior(orbit);
      //root.addChild(new MouseVoteBehavior(canvas3D,simpleU.getLocale()));
      root.addChild(scene);
      root.setCapability(BranchGroup.ALLOW_DETACH);
      root.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
	  root.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
	  root.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
	  root.setPickable(true);
	  root.compile();
      // and add it to out universe
      u.addBranchGraph(root);
      Panel p=new Panel();
      p.setLayout(new GridLayout(0,1,0,0));
               
      final Button button=new Button("增加小球");
      button.addActionListener(
    		  new ActionListener() {
    		    public void actionPerformed(ActionEvent ae) {  
    		    if(scene1==null){
                scene1=createSceneGraph1(); 
               // scene1.setCapability(BranchGroup.ALLOW_DETACH);
    		    root.addChild(scene1);	
    		    flag=1;
    				}  
    		    }
    		    }   		  
    		);
    
      final Button button1=new Button("增加底座");
      button1.addActionListener(
    		  new ActionListener() {
    		    public void actionPerformed(ActionEvent ae) { 
    		    if(scene2==null){
    		    	
    		   
                scene2=createSceneGraph2(); 
                root.addChild(scene2);	
                }
    		    }
    		  }
    		);
      final Button button2=new Button("删除小球");
      button2.addActionListener(
    		  new ActionListener() {
    		    public void actionPerformed(ActionEvent ae) {  
    		    	if(scene1!=null){
    			  	 for(int i=0;i<root.numChildren();++i){				
						if(root.getChild(i)==scene1){					
						root.removeChild(i);
						scene1=null;
						System.out.println(i);
						break;
				}
					}
    		    	}
    		    	
    		    }
    		  }
    		);
      final Button button3=new Button("删除底座");
      button3.addActionListener(
    		  new ActionListener() {
    		    public void actionPerformed(ActionEvent ae) {   
    		    	
    		       	if(scene2!=null){
       			  	 for(int i=0;i<root.numChildren();++i){				
   						if(root.getChild(i)==scene2){					
   						root.removeChild(i);
   						scene2=null;
   						System.out.println(i);
   						break;
   				}
   					}
       		    	}
    		    }
    		  }
    		);
      p.add(button);
      p.add(button1);
      p.add(button2);
      p.add(button3);
      add("West", p);
 }
	 
  public BranchGroup createSceneGraph()
            {
                 BranchGroup objRoot=new BranchGroup();
                 BoundingSphere bounds=new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0);
                 Color3f bgColor=new Color3f(1.0f,1.0f,1.0f);
                 Background bg=new Background(bgColor);
                 bg.setApplicationBounds(bounds);
                 objRoot.addChild(bg);
                 Color3f directionalColor=new Color3f(1.f,1.f,1.f);
                 Vector3f vec=new Vector3f(-1.f,-1.f,-1.0f);
                 DirectionalLight directionalLight=new DirectionalLight(directionalColor,vec);
                 directionalLight.setInfluencingBounds(bounds);
                 objRoot.addChild(directionalLight);
                 
                 Appearance app1=new Appearance();
                 Material material1=new Material();
                 material1.setDiffuseColor(new Color3f(1.0f,0.0f,0.0f));
                 app1.setMaterial(material1);
                 
                 Appearance app2=new Appearance();
                 Material material2=new Material();
                 material2.setDiffuseColor(new Color3f(0.0f,1.0f,0.0f));
                 app2.setMaterial(material2);

                 Appearance app3=new Appearance();
                 Material material3=new Material();
                 material3.setDiffuseColor(new Color3f(0.0f,0.0f,1.0f));
                 app3.setMaterial(material3);

                 Appearance app4=new Appearance();
                 Material material4=new Material();
                 material4.setDiffuseColor(new Color3f(1.0f,1.0f,0.0f));
                 app4.setMaterial(material4);

                 Appearance app5=new Appearance();
                 Material material5=new Material();
                 material5.setDiffuseColor(new Color3f(0.0f,1.0f,1.0f));
                 app5.setMaterial(material5);

                 Appearance app6=new Appearance();
                 Material material6=new Material();
                 material6.setDiffuseColor(new Color3f(1.0f,0.0f,1.0f));
                 app6.setMaterial(material6);

                 TransformGroup trans=new TransformGroup();   
                 trans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);       
                 trans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
                 
                 objRoot.addChild(trans);

                Transform3D t=new Transform3D();
             

                 t=new Transform3D();
                 t.setTranslation(new Vector3f(0.f,0.45f,0.f));


                 TransformGroup tg3=new TransformGroup(t); 
                 tg3.addChild(new Box(0.5f,0.05f,0.5f,app3));

                 t=new Transform3D();
                 t.setTranslation(new Vector3f(0.4f,0.f,0.4f));

                 
                 TransformGroup tg4=new TransformGroup(t); 
                 tg4.addChild(new Cylinder(0.05f,0.8f,app4));

                 t=new Transform3D();
                 t.setTranslation(new Vector3f(-0.4f,0.f,-0.4f));


                 TransformGroup tg5=new TransformGroup(t); 
                 tg5.addChild(new Cylinder(0.05f,0.8f,app5));

                 t=new Transform3D();
                 t.setTranslation(new Vector3f(-0.4f,0.f,0.4f));


                 TransformGroup tg6=new TransformGroup(t); 
                 tg6.addChild(new Cylinder(0.05f,0.8f,app6));

                 t=new Transform3D();
                 t.setTranslation(new Vector3f(0.4f,0.f,-0.4f));


                 TransformGroup tg7=new TransformGroup(t); 
                 tg7.addChild(new Cylinder(0.05f,0.8f,app1));

                 t=new Transform3D();
                 t.setTranslation(new Vector3f(0.4f,0.6f,0.4f));


                 TransformGroup tg8=new TransformGroup(t); 
                 tg8.addChild(new Cone(0.1f,0.3f,app2));

                 t=new Transform3D();
                 t.setTranslation(new Vector3f(-0.4f,0.6f,-0.4f));


                 TransformGroup tg9=new TransformGroup(t); 
                 tg9.addChild(new Cone(0.1f,0.3f,app3));

                 t=new Transform3D();
                 t.setTranslation(new Vector3f(-0.4f,0.6f,0.4f));


                 TransformGroup tg10=new TransformGroup(t); 
                 tg10.addChild(new Cone(0.1f,0.3f,app4));

                 t=new Transform3D();
                 t.setTranslation(new Vector3f(0.4f,0.6f,-0.4f));

                 TransformGroup tg11=new TransformGroup(t); 
                 tg11.addChild(new Cone(0.1f,0.3f,app5));

                 t=new Transform3D();
                 t.setTranslation(new Vector3f(0.f,0.85f,0.f));


                 TransformGroup tg12=new TransformGroup(t); 
                 tg12.addChild(new Cone(0.3f,0.8f,app6));

                //trans.addChild(tg1);
                 //trans.addChild(tg2);
                 trans.addChild(tg3);
                 trans.addChild(tg4);
                 trans.addChild(tg5);
                 trans.addChild(tg6);
                 trans.addChild(tg7);
                 trans.addChild(tg8);
                 trans.addChild(tg9);
                 trans.addChild(tg10);
                 trans.addChild(tg11);
                 trans.addChild(tg12);
                // objRoot.setCapability(BranchGroup.ALLOW_DETACH);
                // objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
                // objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
                // objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
                 objRoot.compile();
                 return objRoot;
            }
            public BranchGroup createSceneGraph1()
            {
                 BranchGroup objRoot=new BranchGroup();
                 BoundingSphere bounds=new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0);
                 Color3f bgColor=new Color3f(1.0f,1.0f,1.0f);
                 Background bg=new Background(bgColor);
                 bg.setApplicationBounds(bounds);
                 objRoot.addChild(bg);
                // Color3f directionalColor=new Color3f(1.f,1.f,1.f);
                // Vector3f vec=new Vector3f(-1.f,-1.f,-1.0f);
                // DirectionalLight directionalLight=new DirectionalLight(directionalColor,vec);
                // directionalLight.setInfluencingBounds(bounds);
                // objRoot.addChild(directionalLight);
                 Appearance app1=new Appearance();
                 Material material1=new Material();
                 material1.setDiffuseColor(new Color3f(1.0f,0.0f,0.0f));
                 app1.setMaterial(material1);              
                 TransformGroup trans=new TransformGroup();   
                 trans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);       
                 trans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
                          
                 objRoot.addChild(trans);
                 
                 Transform3D t=new Transform3D();
                 t.setTranslation(new Vector3f(0.f,-0.225f,0.f));

                 TransformGroup tg1=new TransformGroup(t); 
                 tg1.addChild(new Sphere(0.2f,app1));
                 trans.addChild(tg1); 
                 objRoot.setCapability(BranchGroup.ALLOW_DETACH);
                 objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
                 objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
                 objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
                 objRoot.compile();
                 return objRoot;
            }
            public BranchGroup createSceneGraph2()
            {
                 BranchGroup objRoot=new BranchGroup();
                 BoundingSphere bounds=new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0);
                 Color3f bgColor=new Color3f(1.0f,1.0f,1.0f);
                 Background bg=new Background(bgColor);
                 bg.setApplicationBounds(bounds);
                 objRoot.addChild(bg);
                // Color3f directionalColor=new Color3f(1.f,1.f,1.f);
                // Vector3f vec=new Vector3f(-1.f,-1.f,-1.0f);
                // DirectionalLight directionalLight=new DirectionalLight(directionalColor,vec);
                // directionalLight.setInfluencingBounds(bounds);
                // objRoot.addChild(directionalLight);
                 Appearance app2=new Appearance();
                 Material material2=new Material();
                 material2.setDiffuseColor(new Color3f(0.0f,1.0f,0.0f));
                 app2.setMaterial(material2);
                 
                 TransformGroup trans=new TransformGroup();   
                 trans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);       
                 trans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
                 
                 objRoot.addChild(trans);
                 
                 Transform3D t=new Transform3D();
                 t.setTranslation(new Vector3f(0.f,-0.45f,0.f));
                 TransformGroup tg2=new TransformGroup(t); 
                 tg2.addChild(new Box(0.5f,0.05f,0.5f,app2));
                 trans.addChild(tg2);  
                 objRoot.setCapability(BranchGroup.ALLOW_DETACH);
                 objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
                 objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
                 objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
                 objRoot.compile();
                 return objRoot;
            }
           
           
            public static void main(String args[]){
                 new MainFrame(new complexprimitivedisplay(),300,200);
            }
            
}

⌨️ 快捷键说明

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