基本构建 : 三维基础 « 三维图形动画 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 三维图形动画 » 三维基础屏幕截图 
基本构建
基本构建

// JFrame

import javax.swing.JFrame;

// BorderLayout stuff
import java.awt.*;
import javax.swing.*;

// Canvas3D
import javax.media.j3d.Canvas3D;

// The Universe
import com.sun.j3d.utils.universe.SimpleUniverse;

// The BranchGroup
import javax.media.j3d.BranchGroup;

// For the Box
import com.sun.j3d.utils.geometry.Box;
import javax.vecmath.*;

// The directional light
import javax.media.j3d.DirectionalLight;

// For the bouding sphere of the light source
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.Appearance;
import javax.media.j3d.Material;

// Transformgroup
import javax.media.j3d.TransformGroup;
import com.sun.j3d.utils.behaviors.mouse.*;

public class BasicConstruct extends JFrame {
  /**
   * The SimpleUniverse object
   */
  protected SimpleUniverse simpleU;

  /**
   * The root BranchGroup Object.
   */
  protected BranchGroup rootBranchGroup;

  /**
   * Constructor that consturcts the window with the given name.
   
   @param name
   *            The name of the window, in String format
   */
  public BasicConstruct(String name) {
    // The next line will construct the window and name it
    // with the given name
    super(name);

    // Perform the initial setup, just once
    initial_setup();
  }

  /**
   * Perform the essential setups for the Java3D
   */
  protected void initial_setup() {
    // A JFrame is a Container -- something that can hold
    // other things, e.g a button, a textfield, etc..
    // however, for a container to hold something, you need
    // to specify the layout of the storage. For our
    // example, we would like to use a BorderLayout.
    // The next line does just this:
    getContentPane().setLayout(new BorderLayout());

    // The next step is to setup graphics configuration
    // for Java3D. Since different machines/OS have differnt
    // configuration for displaying stuff, therefore, for
    // java3D to work, it is important to obtain the correct
    // graphics configuration first.
    GraphicsConfiguration config = SimpleUniverse
        .getPreferredConfiguration();

    // Since we are doing stuff via java3D -- meaning we
    // cannot write pixels directly to the screen, we need
    // to construct a "canvas" for java3D to "paint". And
    // this "canvas" will be constructed with the graphics
    // information we just obtained.
    Canvas3D canvas3D = new Canvas3D(config);

    // And we need to add the "canvas to the centre of our
    // window..
    getContentPane().add("Center", canvas3D);

    // Creates the universe
    simpleU = new SimpleUniverse(canvas3D);

    // First create the BranchGroup object
    rootBranchGroup = new BranchGroup();
  }

  /**
   * Adds a light source to the universe
   
   @param direction
   *            The inverse direction of the light
   @param color
   *            The color of the light
   */
  public void addDirectionalLight(Vector3f direction, Color3f color) {
    // Creates a bounding sphere for the lights
    BoundingSphere bounds = new BoundingSphere();
    bounds.setRadius(1000d);

    // Then create a directional light with the given
    // direction and color
    DirectionalLight lightD = new DirectionalLight(color, direction);
    lightD.setInfluencingBounds(bounds);

    // Then add it to the root BranchGroup
    rootBranchGroup.addChild(lightD);
  }

  /**
   * Adds a box to the universe
   
   @param x
   *            The x dimension of the box
   @param y
   *            The y dimension of the box
   @param z
   *            The z dimension of the box
   */
  public void addBox(float x, float y, float z, Color3f diffuse, Color3f spec) {
    // Add a box with the given dimension

    // First setup an appearance for the box
    Appearance app = new Appearance();
    Material mat = new Material();
    mat.setDiffuseColor(diffuse);
    mat.setSpecularColor(spec);
    mat.setShininess(5.0f);

    app.setMaterial(mat);
    Box box = new Box(x, y, z, app);

    // Create a TransformGroup and make it the parent of the box
    TransformGroup tg = new TransformGroup();
    tg.addChild(box);

    // Then add it to the rootBranchGroup
    rootBranchGroup.addChild(tg);

    tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);

    MouseRotate myMouseRotate = new MouseRotate();
    myMouseRotate.setTransformGroup(tg);
    myMouseRotate.setSchedulingBounds(new BoundingSphere());
    rootBranchGroup.addChild(myMouseRotate);

    MouseTranslate myMouseTranslate = new MouseTranslate();
    myMouseTranslate.setTransformGroup(tg);
    myMouseTranslate.setSchedulingBounds(new BoundingSphere());
    rootBranchGroup.addChild(myMouseTranslate);

    MouseZoom myMouseZoom = new MouseZoom();
    myMouseZoom.setTransformGroup(tg);
    myMouseZoom.setSchedulingBounds(new BoundingSphere());
    rootBranchGroup.addChild(myMouseZoom);
  }

  /**
   * Finalise everything to get ready
   */
  public void finalise() {
    // Then add the branch group into the Universe
    simpleU.addBranchGraph(rootBranchGroup);

    // And set up the camera position
    simpleU.getViewingPlatform().setNominalViewingTransform();
  }

  public static void main(String[] argv) {
    BasicConstruct bc = new BasicConstruct("Foo");

    bc.setSize(250250);
    bc.addBox(0.4f0.5f0.6fnew Color3f(100)new Color3f(100));
    bc.addDirectionalLight(new Vector3f(0f0f, -1),
        new Color3f(1f1f0f));
    bc.finalise();

    bc.show();

    return;
  }
}


           
       
Related examples in the same category
1. 简单的3D演示简单的3D演示
2. 定位对象定位对象
3. 必要步骤来显示三维物体必要步骤来显示三维物体
4. 外观范围
5. 外观外观
6. 外观混合
7. 入门Java3D API入门Java3D API
8. 简单的旋转简单的旋转
9. HelloJava3Db单一的,旋转立方体HelloJava3Db单一的,旋转立方体
10. 用户界面与Java
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.