大家晚上好
啊 我是寻觅!
以后会有文章给大家介绍一个java 3D 游戏引擎现在,先委屈大家看个简单例子了,
呵呵;
先给大家个游戏引擎下载地址大家可以先下去看看:在这里要感谢新朋友守护天使的
推荐
http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge
/j/ji/jirr/
呵呵,废话少说了 开始解析代码
大家先要下载些东西,说实话java就是这样,功能不错就是麻烦
下载:
java-media
http://java.sun.com/products/java-media/jmf/2.1.1/download.html
java-3d
http://www.downloadjava3d.com/windows.php 或
https://java3d.dev.java.net/binary-builds.html
接着,安装就不说了,easy very
当然希望大家把doc也下来看看。
装好后,给大家一个经过我修改的简单实验代码:(由于时间关系,解说会放在以后)
import
java.awt.
*
;
import
javax.swing.
*
;
import
javax.media.j3d.
*
;
import
javax.vecmath.
*
;
import
java.awt.event.
*
;
import
com.sun.j3d.utils.geometry.
*
;

public
class
MyJava3D
extends
JFrame

...
{
// Virtual Universe object.
private VirtualUniverse universe;

// Locale of the scene graph.
private Locale locale;

// BranchGroup for the Content Branch of the scene
private BranchGroup contentBranch;

// TransformGroup node of the scene contents
private TransformGroup contentsTransGr;

// BranchGroup for the View Branch of the scene
private BranchGroup viewBranch;

// ViewPlatform node, defines from where the scene is viewed.
private ViewPlatform viewPlatform;

// Transform group for the ViewPlatform node
private TransformGroup vpTransGr;

// View node, defines the View parameters.
private View view;

// A PhysicalBody object can specify the user's head
PhysicalBody body;

// A PhysicalEnvironment object can specify the physical
// environment in which the view will be generated
PhysicalEnvironment environment;

// Drawing canvas for 3D rendering
private Canvas3D canvas;

// Screen3D Object contains screen's information
private Screen3D screen;

private Bounds bounds;
//***********************MyJava3D******************************/
public MyJava3D()

...{
super("My First Java3D Example");

//****************************************************************************************/

GraphicsDevice dev =
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
GraphicsConfigTemplate3D template = new GraphicsConfigTemplate3D();
GraphicsConfiguration config =
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getBestConfiguration(template);
canvas = new Canvas3D(config);






// Creating and setting the Canvas3D
//canvas = new Canvas3D(null); //改了这里
//****************************************************************************************/
getContentPane().setLayout( new BorderLayout( ) );
getContentPane().add(canvas, "Center");

// Setting the VirtualUniverse and the Locale nodes
setUniverse();

// Setting the content branch
setContent();

// Setting the view branch
setViewing();

// To avoid problems between Java3D and Swing
JPopupMenu.setDefaultLightWeightPopupEnabled(false);

// enabling window closing

addWindowListener(new WindowAdapter() ...{
public void windowClosing(WindowEvent e)

...{System.exit(0); } });
setSize(600, 600);
bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), Double.MAX_VALUE);
}
//***********************MyJava3D******************************/

//***********************setUniverse******************************/
private void setUniverse()

...{
// Creating the VirtualUniverse and the Locale nodes
universe = new VirtualUniverse();
locale = new Locale(universe);
}
//***********************setUniverse******************************/
//***********************setContent******************************/
private void setContent()

...{
// Creating the content branch

contentsTransGr = new TransformGroup();
contentsTransGr.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

setLighting();

ColorCube cube1 = new ColorCube(0.1);

Appearance appearance = new Appearance();
cube1.setAppearance(appearance);

contentsTransGr.addChild(cube1);

ColorCube cube2 = new ColorCube(0.25);

Transform3D t1 = new Transform3D();
t1.rotZ(0.5);
Transform3D t2 = new Transform3D();
t2.set(new Vector3f(0.7f, 0.6f,-1.0f));
t2.mul(t1);
TransformGroup trans2 = new TransformGroup(t2);
trans2.addChild(cube2);
contentsTransGr.addChild(trans2);

Sphere sphere = new Sphere(0.2f);
Transform3D t3 = new Transform3D();
t3.set(new Vector3f(-0.2f, 0.5f,-0.2f));
TransformGroup trans3 = new TransformGroup(t3);

Appearance appearance3 = new Appearance();

Material mat = new Material();
mat.setEmissiveColor(-0.2f, 1.5f, 0.1f);
mat.setShininess(5.0f);
appearance3.setMaterial(mat);
sphere.setAppearance(appearance3);
trans3.addChild(sphere);
contentsTransGr.addChild(trans3);

contentBranch = new BranchGroup();
contentBranch.addChild(contentsTransGr);
// Compiling the branch graph before making it live
contentBranch .compile();

// Adding a branch graph into a locale makes its nodes live (drawable)
locale.addBranchGraph(contentBranch);
}
//***********************setContent******************************/

//***********************setLighting******************************/
private void setLighting()

...{
AmbientLight ambientLight = new AmbientLight();
ambientLight.setEnable(true);
ambientLight.setColor(new Color3f(0.10f, 0.1f, 1.0f) );
ambientLight.setCapability(AmbientLight.ALLOW_STATE_READ);
ambientLight.setCapability(AmbientLight.ALLOW_STATE_WRITE);
ambientLight.setInfluencingBounds(bounds);
contentsTransGr.addChild(ambientLight);

DirectionalLight dirLight = new DirectionalLight();
dirLight.setEnable(true);
dirLight.setColor( new Color3f( 1.0f, 0.0f, 0.0f ) );
dirLight.setDirection( new Vector3f( 1.0f, -0.5f, -0.5f ) );
dirLight.setCapability( AmbientLight.ALLOW_STATE_WRITE );
dirLight.setInfluencingBounds(bounds);
contentsTransGr.addChild(dirLight);
}

//***********************setLighting******************************/

//***********************setViewing******************************/
private void setViewing()

...{
// Creating the viewing branch

viewBranch = new BranchGroup();

// Setting the viewPlatform
viewPlatform = new ViewPlatform();
viewPlatform.setActivationRadius(Float.MAX_VALUE);
viewPlatform.setBounds(bounds);

Transform3D t = new Transform3D();
t.set(new Vector3f(0.3f, 0.7f, 3.0f));
vpTransGr = new TransformGroup(t);

// Node capabilities control (granding permission) read and write access
// after a node is live or compiled
// The number of capabilities small to allow more optimizations during compilation
vpTransGr.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
vpTransGr.setCapability( TransformGroup.ALLOW_TRANSFORM_READ);

vpTransGr.addChild(viewPlatform);
viewBranch.addChild(vpTransGr);

// Setting the view
view = new View();
view.setProjectionPolicy(View.PERSPECTIVE_PROJECTION );
view.addCanvas3D(canvas);

body = new PhysicalBody();
view.setPhysicalBody(body);
environment = new PhysicalEnvironment();
view.setPhysicalEnvironment(environment);

view.attachViewPlatform(viewPlatform);

view.setWindowResizePolicy(View.PHYSICAL_WORLD);

locale.addBranchGraph(viewBranch);
}

//***********************setViewing******************************/




//***********************************************************/
public static void main(String[] args)

...{
JFrame frame = new MyJava3D();
frame.setVisible(true);

}
}