📄 demo_main.java
字号:
/*
* Created on 2005-7-16
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author carso
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
import com.sun.j3d.utils.geometry.ColorCube;
import java.applet.Applet;
import java.awt.*;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import java.awt.GraphicsConfiguration;
import Axis_info.Axis_info;
//以下这些包为自己创建的包
import AixsSet.*;
import Move.*;
import View_Autoget.*;
import Loader.*;
public class Demo_main extends Applet{
public BranchGroup createSceneGraph(){
// Create the root of the branch graph
BranchGroup objRoot = new BranchGroup();
TransformGroup spin = new TransformGroup();
spin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
spin.addChild(new ColorCube(0.1));
// Spins continuously with a period of 10 sec
Alpha alpha = new Alpha(-1, 10000);
RotationInterpolator rotInt = new RotationInterpolator(alpha, spin);
rotInt.setSchedulingBounds(new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 400.0));
objRoot.addChild(spin);
objRoot.addChild(rotInt);
AmbientLight lightA = new AmbientLight();
lightA.setInfluencingBounds(new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 400.0));
objRoot.addChild(lightA);
DirectionalLight lightD1 = new DirectionalLight();
lightD1.setInfluencingBounds(new BoundingSphere(
new Point3d(0.0,0.0,0.0),400.0));
Vector3f direction = new Vector3f(-1.0f, -1.0f, -1.0f);
direction.normalize();
lightD1.setDirection(direction);
lightD1.setColor(new Color3f(Color.white));
objRoot.addChild(lightD1);
objRoot.compile();
return objRoot;
}
public BranchGroup set_axis(){
BranchGroup objRoot=new BranchGroup();
//draw 3D Axis
Shape3D line=new Draw3D_Axis();
objRoot.addChild(line);
Shape3D stripline=new Draw3D_Stripline(new Axis_info().getvert(),new Axis_info().getStripCount());
Shape3D stripline1=new Draw3D_Stripline(new Axis_info().getvert1(),new Axis_info().getStripCount());
objRoot.addChild(stripline);
objRoot.addChild(stripline1);
return objRoot;
}
public Demo_main(){
//setLayout(new BorderLayout());
setLayout(new GridLayout());
GraphicsConfiguration config=SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas = new Canvas3D(config);
add(canvas);
//Define VirtualUniverse and attach Locale
VirtualUniverse universe = new VirtualUniverse();
Locale locale = new Locale(universe);
//set location of view init
Transform3D view_t3d = new Transform3D();
Vector3f view_v3f = new Vector3f();
view_t3d.rotZ(1.57*3);
view_v3f.set(0,0,0);
view_t3d.setTranslation(view_v3f);
// Define ViewPlatform TransformGroup
TransformGroup viewPlatformTransform = new TransformGroup();
viewPlatformTransform.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
viewPlatformTransform.setTransform(view_t3d);
//Define content branch graph
BranchGroup scene =createSceneGraph();
//Create view graph
Axis_info view_axis_info=new Axis_info();
view_axis_info.setSections(90);
View_follow view_fol=new View_follow(90);
view_fol.setKnots(view_axis_info.getKnots());
//view_fol.setQuats(view_axis_info.getQuats());
view_fol.setPositions(view_axis_info.getPositions_inViewFol());
//view_fol.setKnots(view_axis_info.getKnot_InMoveInPath());
//view_fol.setPositions(view_axis_info.getPosition());
//view_fol.setQuats(view_axis_info.getQuat_InMoveInPath());
BranchGroup view =view_fol.createViewGraph(canvas,viewPlatformTransform);
//Create Axis graph
BranchGroup axis=set_axis();
//And attach both to the Locale
locale.addBranchGraph(scene);
locale.addBranchGraph(view);
locale.addBranchGraph(axis);
//创建一个沿指定路线运动的物体
Move_in_Certain_path cube_move0=new Move_in_Certain_path();
BranchGroup cube_move_graph=cube_move0.createAnimOfMove(new Axis_info().getPosition(),new Vrml_loader().LoadFile_graph("/material/zuqiu.WRL"));
locale.addBranchGraph(cube_move_graph);
//创建沿坐标轴运动的物体
Move_In_Axis_direction x_move0=new Move_In_Axis_direction();
BranchGroup axis_move_graph=x_move0.Move_in_direction(-40.f,30.f);
locale.addBranchGraph(axis_move_graph);
//创建摄象头跟随移动的物体
Camera_follow cube_follow0=new Camera_follow();
TransformGroup file_load_obj=new Vrml_loader().LoadFile_graph("material/zuqiu.WRL");
BranchGroup camera_follow_graph=cube_follow0.create_Camera_follow(file_load_obj);
locale.addBranchGraph(camera_follow_graph);
/*为了便于观察效果,再加上一个视角*/
Canvas3D view2_canvas = new Canvas3D(config);
add(view2_canvas);
VirtualUniverse view2_univ=new VirtualUniverse();
Locale view2_locale=new Locale(view2_univ);
Transform3D view2_t3d = new Transform3D();
Vector3f view2_v3f = new Vector3f();
//view2_t3d.rotY(1.57*3);
view2_v3f.set(2,5,60);
view2_t3d.setTranslation(view2_v3f);
TransformGroup view2_tfg=new TransformGroup();
//then add another viewplatform
ViewPlatform view2_plat=new ViewPlatform();
view2_plat.setActivationRadius(400);
view2_plat.setViewAttachPolicy(View.NOMINAL_HEAD);
view2_tfg.setTransform(view2_t3d);
View view2=new View();
view2.addCanvas3D(view2_canvas);
view2.attachViewPlatform(view2_plat);
view2.setPhysicalBody(new PhysicalBody());
view2.setPhysicalEnvironment(new PhysicalEnvironment());
//create a new BranchGroup to add this
BranchGroup view2_bgp=new BranchGroup();
//view2_bgp.addChild(view2_plat);
view2_tfg.addChild(view2_plat);
view2_bgp.addChild(view2_tfg);
view2_locale.addBranchGraph(view2_bgp);
//add a BranchGroup to draw axis to show more easy
BranchGroup setAxis=set_axis();
view2_locale.addBranchGraph(setAxis);
view2_locale.addBranchGraph(createSceneGraph());
//add a BranchGroup to show a cube's movement
Move_in_Certain_path cube_move=new Move_in_Certain_path();
//Move.Move_in_Certain_path cube_move.createAnimOfMove()
//give a certain path and move in it
Point3f[] p=new Axis_info().getPosition();
view2_locale.addBranchGraph(cube_move.createAnimOfMove(p,new Vrml_loader().LoadFile_graph("material/zuqiu.WRL")));
//add a BranchGroup to show a cube move in a direction
Move_In_Axis_direction x_move=new Move_In_Axis_direction();
view2_locale.addBranchGraph(x_move.Move_in_direction(-50,50));
//add a BranchGroup to show a cube move and a camera follow
TransformGroup view2_obj_file_TransG=new Vrml_loader().LoadFile_graph("material/zuqiu.WRL");
//BranchGroup view2_obj_file_BranchG=new BranchGroup();
//view2_obj_file_BranchG.addChild(view2_obj_file_TransG);
Camera_follow cube_follow=new Camera_follow();
view2_locale.addBranchGraph(cube_follow.create_Camera_follow(view2_obj_file_TransG));
//加载vrml文件,返回值为BranchGroup对象
Vrml_loader file_graph=new Vrml_loader();
TransformGroup file_graph_transG=file_graph.LoadFile_graph("material/nishuihan.WRL");
BranchGroup file_graph_branG=new BranchGroup();
file_graph_branG.addChild(file_graph_transG);
view2_locale.addBranchGraph(file_graph_branG);
/*利用View_Autoget包中的get_view生成一个新的视角*/
get_view view3=new get_view();
Canvas3D view3_canvas=new Canvas3D(config);
add(view3_canvas);
Vector3f view3_vector3f=new Vector3f();
view3_vector3f.set(5,65,0);
Transform3D view3_transform3D=new Transform3D();
view3_transform3D.rotX(1.57*3);
view3_transform3D.setTranslation(view3_vector3f);
TransformGroup view3_transformGroup=new TransformGroup();
view3_transformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
view3_transformGroup.setTransform(view3_transform3D);
BranchGroup view3_branchgroup=view3.get_New_View(view3_canvas,view3_transformGroup);
VirtualUniverse view3_univ=new VirtualUniverse();
Locale view3_locale=new Locale(view3_univ);
view3_locale.addBranchGraph(view3_branchgroup);
view3_locale.addBranchGraph(createSceneGraph());
//add a BranchGroup to show a cube's movement
Move_in_Certain_path cube_move3=new Move_in_Certain_path();
//Move.Move_in_Certain_path cube_move.createAnimOfMove()
//give a certain path and move in it
view3_locale.addBranchGraph(cube_move3.createAnimOfMove(p,new Vrml_loader().LoadFile_graph("material/zuqiu.WRL")));
//add a BranchGroup to show a cube move in a direction
Move_In_Axis_direction x_move3=new Move_In_Axis_direction();
view3_locale.addBranchGraph(x_move3.Move_in_direction(-50,50));
//add a BranchGroup to show a cube move and a camera follow
TransformGroup view3_obj_file_TransG=new Vrml_loader().LoadFile_graph("material/me.WRL");
BranchGroup view3_obj_file_BranchG=new BranchGroup();
view3_obj_file_BranchG.addChild(view3_obj_file_TransG);
view3_locale.addBranchGraph(view3_obj_file_BranchG);
TransformGroup view3_obj_file=new Vrml_loader().LoadFile_graph("material/zuqiu.WRL");
Camera_follow view3_cube_follow=new Camera_follow();
view3_locale.addBranchGraph(view3_cube_follow.create_Camera_follow(view3_obj_file));
//add a BranchGroup to draw axis to show more easy
BranchGroup setAxis3=set_axis();
view3_locale.addBranchGraph(setAxis3);
}
public static void main(String args[]){
new MainFrame(new Demo_main(),1000,400);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -