首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Java3D 实现三维显示(6)将 Java3D 与 Java 平台技术的结合

Java3D 实现三维显示(6)将 Java3D 与 Java 平台技术的结合

将 Java3D 与 Java 平台技术的结合 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…
4.1 在网页上显示 3D 图形Java3D 一个最大的特性是可以使用 Applet 作为显示容器,例 3 和例 4 的代码分别显示了如何在 Applet 中显示 3D                图形和在网页文件中(HTML)嵌入该 Applet。
例 3. Applet 实现                Java3D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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);
}
….
}




例 4. 在网页嵌入显示 3D                Applet
1
2
3
4
5
6
7
8
9
<HTML>
<HEAD>
<TITLE>Hello, Universe!</TITLE>
</HEAD>
<BODY BGCOLOR="#000000">
<applet align=middle code="HelloUniverse.class" width=256 height=256>
</applet>
</BODY>
</HTML>




4.2 动态网页技术与 Java3D通过 Jsp 和 Serverlet,可以使 Java3D 在网页中"动"起来。虽然 Java3D                本身就有三维动画的功能,但是这里的"动"指得是赋予了程序编写人员对 Java3D 动态的控制能力。改造上面的 HelloUniverse,例 5 的                jsp 代码可以实现控制旋转的正方体大小的功能。通过每次 Random 对象生成的随机数,立方体的大小也是随即改变,这段程执行的效果,如图 6、7                所示。
例 5 实现可以动态调整三位物体大小的 jsp                代码
1
2
3
4
5
6
7
8
9
10
11
12
<%@ 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>




图 6. Jsp 显示效果 1图 7. Jsp 显示效果 24.3 J2EE 平台对 Java3D 的支持上面的例子只是通过动态设定 Applet 大小来控制 Java3D 的显示,实际上可应通过更多的方法实现 Jsp、Serverlet 对 Java3D                显示效果的控制,甚至可以将 Java3D 置于 J2EE 平台的显示层,实现对 EJB、JDBC 的调用。
实现 Java3D 利用 J2EE 平台资源的方法很多,甚至可以直接在 Java3D 的实现类中直接调用 EJB。但是从 J2EE                平台的设计模式出发,把对 EJB 调用放到 Jsp 中,而将返回的结果作为参数传入实现 Java3D 的 Applet                类中是一个更好的模式。具体代码见例 6。
例 6 调用 EJB 作为 Java3D                参数代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="javax.ejb.*" %>
<%@ page import="java.rmi.*"%>
<%@ page import="javax.rmi.PortableRemoteObject"%>
<%@ page import="javax.naming.*"%>
<%@ page import="java.util.Properties"%>
<HTML>
<HEAD>
<TITLE>Hello, Universe!</TITLE>
</HEAD>
<BODY BGCOLOR="#000000">
<% try{
Properties properties = null;
Context context = new InitialContext(properties);
Object ref = context.lookup("Customer");
EJBHome home= (EJBHome)PortableRemoteObject.narrow(ref,CustomerHome.class);
CustomerHome home=(CustomerHome)home;
Customer customer= home.findByPrimaryKey("1000000");
String data = customer.getData();
}
catch(Exception e){e.printStackTrace();}
%>
<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 的显示。
返回列表