Board logo

标题: Java3D 实现三维显示(6)将 Java3D 与 Java 平台技术的结合 [打印本页]

作者: look_w    时间: 2018-7-15 08:52     标题: Java3D 实现三维显示(6)将 Java3D 与 Java 平台技术的结合

将 Java3D 与 Java 平台技术的结合 Java3D 可以很容易的与 Java 平台的其他技术相结合,如 Applet、JSP、Serverlet、JDBC、EJB 等。100%的纯                Java 实现是 Java3D 可以与如此多的 Java 平台技术结合的根本原因:
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 端处理能力为三维显示所需的复杂计算和大数据量提供了有力的支持。
我们可以想象下面的两幅场景:





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0