我的订单|我的收藏|我的商城|帮助中心|返回首页
虚拟现实新闻>VR>行业资讯>培训教程

Java3D入门教程3:与Java平台技术结合

文章来源:第三维度 作者: 发布时间:2012年03月20日 点击数: 字号:

      来源:第三维度

      Java3D API是Sun定义的用于实现3D显示的接口。3D技术是底层的显示技术,Java3D提供了基于Java的上层接口。java3D用其自己定义的场景图和观察模式等技术构造了3D的上层结构,实现了在Java平台使用三维技术。本文在原理上着重介绍Java3D特有的两个重要概念:场景图(Scene Graph)、观察模式(View Model)。在接口使用上的介绍分为两部分:实例说明如何使用Java3D接口;说明如何将Java3D技术与Java原有的Web技术(JSP、Serverlet)相结合,在网页上实现三维显示。

   Java3D可以很容易的与Java平台的其他技术相结合,如Applet、JSP、Serverlet、JDBC、EJB等。100%的纯Java实现是Java3D可以与如此多的Java平台技术结合的根本原因:

   同是Java平台保证Java3D可以在Applet中实现;

   Applet使Java3D可以轻易的在网页中显示;

   JSP、Serverlet技术保证将动态网页技术用于Java3D显示;

   Serverlet本身就是J2EE平台的核心技术,这使得Java3D可以搭建于J2EE平台。更可以使用所有J2EE的其他技术:JDBC、EJB、JMS…

  1 在网页上显示3D图形

  Java3D一个最大的特性是可以使用Applet作为显示容器,例3和例4的代码分别显示了如何在Applet中显示3D图形和在网页文件中(HTML)嵌入该Applet。

    例1 Applet实现Java3D

   Public class HelloUniverse extends Applet {
    private SimpleUniverse u = null;
    public BranchGroup createSceneGraph() {
    BranchGroup objRoot = new BranchGroup();
    ….
    return objRoot;
    }
    public void init() {
    Canvas3D c = new Canvas3D(config);
    add("Center", c);
    ….
    u.addBranchGraph(scene);
    }
    ….
    }

    例2在网页嵌入显示3D Applet

    <HTML>
    <HEAD>
    <TITLE>Hello, Universe!</TITLE>
    </HEAD>
    <BODY BGCOLOR="#000000">
    <applet align=middle code="HelloUniverse.class" width=256 height=256>
    </applet>
    </BODY>
    </HTML>

  2 动态网页技术与Java3D

  通过Jsp和Serverlet,可以使Java3D在网页中"动"起来。虽然Java3D本身就有三维动画的功能,但是这里的"动"指得是赋予了程序编写人员对Java3D动态的控制能力。改造上面的HelloUniverse,例5 的jsp代码可以实现控制旋转的正方体大小的功能。通过每次Random对象生成的随机数,立方体的大小也是随即改变,这段程执行的效果,如图6、7所示。

Java3D入门教程3:与Java平台技术结合    Java3D入门教程3:与Java平台技术结合

    例3实现可以动态调整三位物体大小的jsp代码

    <HTML>
    <HEAD>
    <TITLE>
    <%@ page contentType="text/html; charset=GBK" %>
    <HTML>
    <HEAD>
    <TITLE>Hello, Universe!</TITLE>
    </HEAD>
    <BODY BGCOLOR="#000000">
    <%int i=300;%>
    <%float j=i*(new java.util.Random()).nextFloat();%>
    <applet align=middle code="HelloUniverse.class" width=<%=j%> height=<%=j%>>
    </applet>
    </BODY>
    </HTML> 

  3 J2EE平台对Java3D的支持

  上面的例子只是通过动态设定Applet大小来控制Java3D的显示,实际上可应通过更多的方法实现Jsp、Serverlet对Java3D显示效果的控制,甚至可以将Java3D置于J2EE平台的显示层,实现对EJB、JDBC的调用。

  实现Java3D利用J2EE平台资源的方法很多,甚至可以直接在Java3D的实现类中直接调用EJB。但是从J2EE平台的设计模式出发,把对EJB调用放到Jsp中,而将返回的结果作为参数传入实现Java3D的Applet类中是一个更好的模式。具体代码见例6。

    例4 调用EJB作为Java3D参数代码

    <applet align=middle code="HelloUniverse.class" width=200 height=200>
    <param name="Data" value=<%=data%>>
    </applet>
    </BODY>

    </HTML>

  上面的代码首先访问JNDI名为"Customer"的EJB,然后将返回值作为参数传入实现Java3D的Applet。

  Java3D与J2EE是相互支持的关系:Java3D丰富、强化了J2EE的显示模式,使略显枯燥的J2EE客户端光鲜多彩;J2EE平台为Java3D提供了支持,功能强大的Server端处理能力为三维显示所需的复杂计算和大数据量提供了有力的支持。

  我们可以想象下面的两幅场景:

  通讯卫星将全国所有道路、建筑信息录入大型数据库;EJB实现应用逻辑并将之部署到AppServer上;所有支持JVM的手机、PDA、车载GPS可以通过调用EJB显示与真实世界一模一样的周围环境。

  地震局根据实际勘测到的地表等高线信息绘制二维矢量图,存为FDX文件;将二维图像转为三维实现的复杂算法放到EJB中实现;Jsp页面调用EJB后可以在Appet上实现三维GIS的显示。

  有了Java3D和Java,这一切都不只是梦想。

  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料