信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

 找回密码
 马上注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: 翔羽
打印 上一主题 下一主题

虚拟现实vrml script 语法介绍

  [复制链接]

该用户从未签到

升级  30.8%

11
 楼主| 发表于 2006-4-24 08:43:08 | 只看该作者
<p>Java代码</p><p>iport java.awt.*;<br/>import java.applet.*;<br/>import vrml.external.Browser;<br/>import vrml.external.Node;<br/>import vrml.external.field.EventInSFVec3f;<br/>import vrml.external.field.EventOutSFVec3f;</p><p>public class eai_test extends java.applet.Applet implements Runnable{<br/>&nbsp;&nbsp;&nbsp; Browser browser;<br/>&nbsp;&nbsp;&nbsp; Node ball;<br/>&nbsp;&nbsp;&nbsp; Node Timer;<br/>&nbsp;&nbsp;&nbsp; Button btn_click;<br/>&nbsp;&nbsp;&nbsp; int appletSize[]={100,125};//width and height<br/>&nbsp;&nbsp;&nbsp; float scaleOfBall[]={1,1};<br/>&nbsp;&nbsp;&nbsp; boolean isBig;<br/>&nbsp;&nbsp;&nbsp; Thread clockThread =null;</p><p>&nbsp;&nbsp;&nbsp; public void run(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(true){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; repaint();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scaleOfBall[0]=(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((EventOutSFVec3f)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ball.getEventOut("scale_changed"))).getValue()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )[0];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scaleOfBall[1]=scaleOfBall[0];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Exception e){}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{Thread.sleep(100);}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(InterruptedException e){}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; public void start(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(clockThread ==null){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clockThread =new Thread(this);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clockThread.start();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; browser=Browser.getBrowser(this);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ball=(Node)(browser.getNode("BALL"));<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; public void paint(Graphics g){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.setColor(Color.green);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.fillRect(0,0,appletSize[0],appletSize[1]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.setColor(Color.red);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x,y,radius; //Ball of Applet</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int centerX=(int)(appletSize[0]/2.0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int centerY=(int)(appletSize[0]/2.0);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; radius=(int)(scaleOfBall[0]*appletSize[0]/3.0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x=(int)(centerX-radius);y=(int)(centerY-radius);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.fillOval(x,y,2*radius,2*radius);<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; public void stop(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clockThread.stop();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clockThread = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch (Exception e){}<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; public void init() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.init();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setLayout(null);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resize(appletSize[0],appletSize[1]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; btn_click=new Button("Make Ball Large");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(btn_click);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; btn_click.reshape(0,100,100,25);<br/>&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; public boolean handleEvent(Event event) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (event.id == Event.ACTION_EVENT &amp;&amp; event.target == btn_click) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clickedBtnClick();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return super.handleEvent(event);<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; public void clickedBtnClick() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EventInSFVec3f scale=<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (EventInSFVec3f)ball.getEventIn("set_scale");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float value[]=new float[3];<br/>&nbsp;&nbsp;&nbsp; public void clickedBtnClick() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EventInSFVec3f scale=<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (EventInSFVec3f)ball.getEventIn("set_scale");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float value[]=new float[3];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(isBig){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;3;i++) value=1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; btn_click.setLabel("Make Ball Large");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;3;i++) value=1.5f;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; btn_click.setLabel("Make Ball Small");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scale.setValue(value);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isBig=!isBig;<br/>&nbsp;&nbsp;&nbsp; }<br/>}</p><p><br/>???? </p><p></p>

该用户从未签到

升级  30.8%

12
 楼主| 发表于 2006-4-24 08:43:18 | 只看该作者
<p>VRML代码</p><p>#VRML V2.0 utf8<br/>DEF BALL Transform{<br/>&nbsp;&nbsp;&nbsp; children [<br/>&nbsp;&nbsp;&nbsp; Shape{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; appearance Appearance{ material Material{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diffuseColor 1 0 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shininess .8<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; geometry Sphere{radius 0.5}<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; DEF SENSOR TouchSensor{}<br/>&nbsp;&nbsp;&nbsp; ]<br/>}<br/>DEF POS PositionInterpolator{<br/>&nbsp;&nbsp;&nbsp; key[0,0.25,0.5,0.75,1.0]<br/>&nbsp;&nbsp;&nbsp; keyValue[1,1,1,1.3 1.3 1.3, 1.5 1.5 1.5<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.3 1.3 1.3 1&nbsp;&nbsp; 1&nbsp;&nbsp; 1 ]<br/>}<br/>DEF TIMER TimeSensor{ cycleInterval 1}</p><p>ROUTE SENSOR.touchTime TO TIMER.startTime<br/>ROUTE TIMER.fraction_changed TO POS.set_fraction<br/>ROUTE POS.value_changed TO BALL.set_scale</p><p><br/>&nbsp;&nbsp;&nbsp; Background {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; groundAngle [ 0.9, 1.5, 1.57 ]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; groundColor [<br/>&nbsp;0 0.333 0,&nbsp;0 0.4 0,<br/>&nbsp;0 0.5 0,&nbsp;0.62 0.67 0.60<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; skyAngle [ 0.9, 1.5, 1.57 ]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; skyColor [<br/>&nbsp;0.21 0.18 0.66,&nbsp;0.2 0.44 0.85,<br/>&nbsp;0.51 0.81 0.95,&nbsp;0.77 0.8 0.82<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br/>&nbsp;&nbsp;&nbsp; }<br/>DEF INITVIEW Viewpoint{position 0 0 4&nbsp; description "init_view"}</p><p><br/>vr.wrl <br/>#VRML V2.0 utf8<br/>DEF MYMATERIAL Material{<br/>&nbsp;&nbsp;&nbsp; diffuseColor 0 1 0<br/>&nbsp;&nbsp;&nbsp; shininess 1<br/>}<br/>DEF BALL Transform{<br/>&nbsp;&nbsp;&nbsp; children&nbsp; Shape{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; appearance Appearance{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; material USE MYMATERIAL<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; geometry Sphere{radius 0.3}<br/>&nbsp;&nbsp;&nbsp; }<br/>}<br/>&nbsp;&nbsp;&nbsp; Background {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; groundAngle [ 0.9, 1.5, 1.57 ]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; groundColor [<br/>&nbsp;0 0.333 0,&nbsp;0 0.4 0,<br/>&nbsp;0 0.5 0,&nbsp;0.62 0.67 0.60<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; skyAngle [ 0.9, 1.5, 1.57 ]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; skyColor [<br/>&nbsp;0.21 0.18 0.66,&nbsp;0.2 0.44 0.85,<br/>&nbsp;0.51 0.81 0.95,&nbsp;0.77 0.8 0.82<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br/>&nbsp;&nbsp;&nbsp; }</p><p>DEF INITVIEW Viewpoint{position 0 0 4&nbsp; description "init_view"}</p><p><br/>Back to Top CtlVrml.java <br/>import java.awt.*;<br/>import java.applet.*;<br/>import vrml.external.Browser;<br/>import vrml.external.Node;<br/>import vrml.external.field.EventInSFColor;</p><p>public class CtlVrml extends Applet {<br/>&nbsp;&nbsp;&nbsp; Scrollbar scrBar[]=new Scrollbar[3];<br/>&nbsp;&nbsp;&nbsp; Label labelColor[]=new Label[3];<br/>&nbsp;&nbsp;&nbsp; Label labelDemo;<br/>&nbsp;&nbsp;&nbsp; Browser browser;<br/>&nbsp;&nbsp;&nbsp; Node myMaterial;<br/>&nbsp;&nbsp;&nbsp; String Text[]={"R=","G=","B="};<br/>&nbsp;&nbsp;&nbsp; boolean isScenceLoading=true&nbsp; ;<br/>&nbsp;&nbsp;&nbsp; public void start(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(isScenceLoading){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; browser=Browser.getBrowser(this);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myMaterial=(Node)(browser.getNode("MYMATERIAL"));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isScenceLoading=false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelDemo.setText("DemoLabel");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Exception e){labelDemo.setText("VRML Loading");}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; public void init() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.init();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setLayout(null);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resize(240,240);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setBackground(Color.green);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;3;i++){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scrBar=new Scrollbar(Scrollbar.HORIZONTAL);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(scrBar);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scrBar.reshape(0,15+45*i,200,20);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scrBar.setValues(50,0,0,101);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelColor=new Label(Text+scrBar.getValue(),Label.LEFT);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(labelColor);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelColor.setBackground(Color.green);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelColor.reshape(200,15+45*i,40,20);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelDemo=new Label("DemoLabel",Label.CENTER);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(labelDemo);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelDemo.reshape(90,160,60,60);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelDemo.setBackground(new Color(122,122,122));<br/>&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; public boolean handleEvent(Event event) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;3;i++){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (event.id == Event.SCROLL_LINE_UP &amp;&amp; event.target == scrBar) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setColorLabel(event,i);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (event.id == Event.SCROLL_LINE_DOWN &amp;&amp; event.target == scrBar) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setColorLabel(event,i);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (event.id == Event.SCROLL_ABSOLUTE &amp;&amp; event.target == scrBar) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setColorLabel(event,i);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return super.handleEvent(event);<br/>&nbsp;&nbsp;&nbsp; }</p><p>&nbsp;&nbsp;&nbsp; public void setColorLabel(Event ev,int i) {</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color demoColor;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelColor.setText(Text+scrBar.getValue());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; demoColor=new Color((int)(2.55*scrBar[0].getValue()),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (int)(2.55*scrBar[1].getValue()),<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (int)(2.55*scrBar[2].getValue())<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelDemo.setBackground(demoColor);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float value[]=new float[3];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EventInSFColor newColor=(EventInSFColor)myMaterial.getEventIn("set_diffuseColor");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;3;i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value=(float)(scrBar.getValue()/100f);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newColor.setValue(value);</p><p>&nbsp;&nbsp;&nbsp; }<br/>}</p><p></p><p>vr.wrl</p><p>Back To Top</p><p>#VRML V2.0 utf8<br/>DEF BALL Transform{<br/>&nbsp;&nbsp;&nbsp; children&nbsp; Shape{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; appearance Appearance{ material Material{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diffuseColor 1 0 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shininess 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; geometry Sphere{radius 0.3}<br/>&nbsp;&nbsp;&nbsp; }<br/>}<br/>DEF POS PositionInterpolator{<br/>&nbsp;&nbsp;&nbsp; key[0,0.25,0.5,0.75,1.0]<br/>&nbsp;&nbsp;&nbsp; keyValue[1 1 1, 2 2 2,4 4 4,2 2 2,1 1 1]</p><p>}<br/>DEF TIMER TimeSensor{<br/>&nbsp;&nbsp;&nbsp; loop TRUE<br/>&nbsp;&nbsp;&nbsp; cycleInterval 8<br/>}<br/>ROUTE TIMER.fraction_changed TO POS.set_fraction<br/>ROUTE POS.value_changed TO BALL.set_scale</p><p><br/>&nbsp;&nbsp;&nbsp; Background {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; groundAngle [ 0.9, 1.5, 1.57 ]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; groundColor [<br/>&nbsp;0 0.333 0,&nbsp;0 0.4 0,<br/>&nbsp;0 0.5 0,&nbsp;0.62 0.67 0.60<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; skyAngle [ 0.9, 1.5, 1.57 ]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; skyColor [<br/>&nbsp;0.21 0.18 0.66,&nbsp;0.2 0.44 0.85,<br/>&nbsp;0.51 0.81 0.95,&nbsp;0.77 0.8 0.82<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br/>&nbsp;&nbsp;&nbsp; }</p><p>DEF INITVIEW Viewpoint{position 0 0 4&nbsp; description "init_view"}<br/></p>

该用户从未签到

升级  30.8%

13
 楼主| 发表于 2006-4-24 08:43:31 | 只看该作者
<p>MyObserver.java </p><p>Back To Top</p><p>import vrml.external.Browser;<br/>import vrml.external.Node;<br/>import vrml.external.field.*;<br/>import vrml.external.field.EventOutObserver;<br/>import java.awt.*;</p><p>public class MyObserver implements EventOutObserver {<br/>&nbsp;&nbsp;&nbsp; EventInSFVec3f scale;<br/>&nbsp;&nbsp;&nbsp; float scaleOfBall;<br/>&nbsp;&nbsp;&nbsp; Node ball;<br/>&nbsp;&nbsp;&nbsp; public void init(Browser browse) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ball = browse.getNode("BALL");<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; public void callback(EventOut event, double timeStamp, Object myLabel) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scaleOfBall=(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((EventOutSFVec3f)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ball.getEventOut("scale_changed"))).getValue()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )[0];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((Label)myLabel).setText(""+scaleOfBall);<br/>&nbsp;&nbsp;&nbsp; }<br/>}</p><p></p><p>--------------------------------------------------------------------------------</p><p>Observer.java Back To Top</p><p>import java.awt.*;<br/>import java.applet.*;<br/>import vrml.external.Browser;<br/>import vrml.external.Node;<br/>import vrml.external.field.EventOutObserver;</p><p>public class ScaleObserver extends Applet {<br/>&nbsp;&nbsp;&nbsp; Browser browse;<br/>&nbsp;&nbsp;&nbsp; Node sensor;<br/>&nbsp;&nbsp;&nbsp; Label labelScale;<br/>&nbsp;&nbsp;&nbsp; public void start(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; browse=Browser.getBrowser(this);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sensor = browse.getNode("BALL");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyObserver observer = new MyObserver();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; observer.init(browse);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sensor.getEventOut("set_scale").advise((EventOutObserver)observer, (Object)labelScale);<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; public void init() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.init();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setLayout(null);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resize(100,100);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelScale=new Label("");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(labelScale);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; labelScale.reshape(0,0,100,20);<br/>&nbsp;&nbsp;&nbsp; }<br/>}<br/></p>

该用户从未签到

升级  30.8%

14
 楼主| 发表于 2006-4-24 08:44:55 | 只看该作者
<p>该组帖子从网络上整理而得,有兴趣的朋友不妨阅读一下《VRML与Java编程技术》人民邮电出版社</p>

该用户从未签到

升级  30.8%

15
 楼主| 发表于 2006-4-24 08:47:52 | 只看该作者
关于编辑器,目前主要的vrml script 编辑器有:vrmlpad2.1版,需要的朋友留言后本人可上传到论坛。
  • TA的每日心情
    开心
    2015-8-14 08:31
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    升级  0.01%

    16
    发表于 2011-7-3 08:32:51 | 只看该作者
    挺好啊  
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    小黑屋|手机版|Archiver|信息系统项目管理师_软考交流平台. ( 鄂ICP备11002878号-1  公安备案号:42011102001150

    GMT+8, 2025-7-5 08:08

    Software by Discuz! X3.2

    © 2001-2013 SKIN BY DSVUE

    快速回复 返回顶部 返回列表