青衣白鹤 2007-11-5 18:49
EAI 实现java 对vrml的控制(转)
综合看了一些文章和帖子, 对网友常提出的关于"EAI 实现java 对vrml的控制"问题给出以下个人意见.
重复我的整个制作过程
1.准备工作:
下载并安装jdk开发包jdk1.3.1_16(建议jdk1.3低版本).默认安转路径C:\jdk1.3.1_16
下载地址[img]http://www.vr100.com/images/filetype/url.gif[/img][url=http://www.vr100.com/down/view.asp?id=115][color=#0000ff]http://www.vr100.com/down/view.asp?id=115 [/color][/url]; 下载并安转vrml浏览器
下载并安装java虚拟机
2.配置环境变量:右键 单击"我的电脑"--〉"属性"--〉"高级"--〉"环境变量"--〉
在"环境变量"属性框中的"系统变量(s)" 栏里点"新建",新建三个环境变量JAVA_HOME,Path,CLASSPATH.并分别填上它们的变量值.
变量名:JAVA_HOME
变量值:C:\jdk1.3.1_16(这是您jdk的安装目录)
变量名:Path
变量值%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
变量名:CLASSPATH
变量值%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\vrml97.jar
3.添加包vrml97.jar
下载vrml97.jar
下载地址[img]http://www.vr100.com/images/filetype/url.gif[/img][url=http://www.vr100.com/down/view.asp?id=114][color=#0000ff]http://www.vr100.com/down/view.asp?id=114[/color][/url]
下载后把vrml97.jar放在目录C:\jdk1.3.1_16\lib\(注:这就是环境变量CLASSPATH设置的目录%JAVA_HOME%\lib\vrml97.jar).
由于程序中会引用到浏览器类(就是引用这些import vrml.external.Browser;
import vrml.external.Node;import vrml.external.field.EventInSFColor)的时候会用到
,这里我已经把vrml浏览器类包添加到vrml97.jar中了.制作jar方法很简单,在备注中细说
青衣白鹤 2007-11-5 18:49
[table][tr][td][img]http://www.vr100.com/images/smiley/icon/0.gif[/img]
[/td][/tr][tr][td]4.编写java代码.以<vrml与java编成实例讲解>一书中的代码changecolor.java为例:
import java.awt.*;
import java.applet.*;
import vrml.external.Browser;
import vrml.external.Node;
import vrml.external.field.EventInSFColor;
public class changecolor extends Applet{
Scrollbar scrBar[]=new Scrollbar[3];
Label labelColor[]=new Label[3];
Label labelDemo;
Browser browser;
Node myMaterial;
String Text[]={"R=","G=","B="};
boolean isScenceLoading=true;
public void start(){
while (isScenceLoading){
try{
browser=Browser.getBrowser(this);
myMaterial=(Node)(browser.getNode("ConeColor"));
isScenceLoading=false;
labelDemo.setText("TestColor");
}
catch(Exception e){labelDemo.setText("VRML Loading");}
}
}
public void init(){
super.init();
setLayout(null);
resize(240,240);
setBackground(Color.orange);
for(int i=0;i<3;i++){
scrBar[i]=new Scrollbar(Scrollbar.VERTICAL);
add(scrBar[i]);
scrBar[i].reshape(100+80*i,5,20,160);
scrBar[i].setValues(50,0,0,10);
labelColor[i]=new Label(Text[i]+scrBar[i].getValue(),Label.LEFT);
add(labelColor[i]);
labelColor[i].setBackground(Color.green);
labelColor[i].reshape(100+80*i,165,40,20);
}
labelDemo=new Label("TestColor",Label.CENTER);
add(labelDemo);
labelDemo.reshape(320,70,80,80);
labelDemo.setBackground(new Color(122,122,122));
}
public boolean handleEvent(Event event){
for(int i=0;i<3;i++){
if (event.id==Event.SCROLL_LINE_UP&&event.target==scrBar[i]){
setColorLabel(event,i);
return true;
}
else if(event.id==Event.SCROLL_LINE_DOWN&&event.target==scrBar[i]){
setColorLabel(event,i);
return true;
}
else if(event.id==Event.SCROLL_ABSOLUTE&&event.target==scrBar[i]){
setColorLabel(event,i);
return true;
}
}
return super.handleEvent(event);
}
public void setColorLabel(Event ev,int i){
Color demoColor;
labelColor[i].setText(Text[i]+scrBar[i].getValue());
demoColor=new Color((int)(2.55*scrBar[0].getValue()),
(int)(2.55*scrBar[1].getValue()),
(int)(2.55*scrBar[2].getValue())
);
labelDemo.setBackground(demoColor);
float value[]=new float[3];
EventInSFColor newColor=(EventInSFColor)myMaterial.getEventIn("set_diffuseColor");
for(i=0;i<3;i++)
value[i]=(float)(scrBar[i].getValue()/100f);
newColor.setValue(value);
}
}
保存changecolor.java(比如您的保存目录为D:\lianxi\vrml\test\changecolor.java)
5.编译changecolor.java
比如在MS-DOC下编译
(开始--> 运行)输入cmd
在MS-DOC下输入编译语句.
C:\jdk1.3.1_16\bin\javac.exe D:\lianxi\vrml\test\changecolor.java
注: C:\jdk1.3.1_16\bin\javac.exe是你编译程序文件,而D:\lianxi\vrml\test\changecolor.java就是您的.java原代码文件
如果编译通过将在changecolor.java同目录的文件下生成字节码文件changecolor.class
6.编写html 文件
<html>
<head>
<title>Color pest</title>
</head>
<body bgcolor=blue "topmarqin=0">
<big><big><b>
<font color="#ff0000">the example for control color:</font>
</b></big></big><br>
<center>
<embed src="cone.wrl" border=0 height="220" width="300">
</center>
<br>
<center>
<applet code="changecolor.class" width="450" height="200" mayscript>
</applet>
</center>
</body>
</html>
保存该文件,取名为changecolor.html
(保存在与changecolor.class同目录的文件夹里,比如D:\lianxi\vrml\test\)
7.可能java虚拟机不支持,可以用微软的虚拟机预览
在ie里面设置如下:
[img]http://www.vr100.com/upload/forum/2005092618403397.jpg[/img]
8.ok来预览一下效果吧
[img]http://www.vr100.com/upload/forum/2005092618394934.jpg[/img]
[color=red]备注:jar 文件的制作方法:
当需要某个类包包含在一个jar文件里面的时候,您可以用winrar软件打开已经有的jar文件(比如vrml97.jar),点击"添加"
选择要添加的包(比如在某个目录里).比如Cortona浏览器类包在C:\Program Files\Common Files\ParallelGraphics\Cortona\corteai.zip里面
点"确定"就ok了
以后要用到某个类包的时候,就用这种方法(所有的类包都放在一个文件jar文件里面比如C:\jdk1.3.1_16\lib\vrml97.jar),向jar文件里面添加类就行了.不必再设置环境变量后重启电脑这么麻烦.[/color]
[/td][/tr][/table]