亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VRML與Java的黑板板書實(shí)驗(yàn)的設(shè)計與實(shí)現(xiàn)

        2008-12-31 00:00:00辛允東
        中國教育技術(shù)裝備 2008年12期

        摘要 VRML是開發(fā)虛擬實(shí)驗(yàn)的主流語言。介紹如何利用Java與VRML的結(jié)合,實(shí)現(xiàn)數(shù)據(jù)通信功能,實(shí)現(xiàn)黑板板書的虛擬實(shí)驗(yàn)。

        關(guān)鍵詞 VRML;Java;板書;虛擬實(shí)驗(yàn)

        中圖分類號 G434 文獻(xiàn)標(biāo)識碼 B 文章編號 1671-489X(2008)12-0077-02

        1 前言

        隨著計算機(jī)技術(shù)的迅速發(fā)展,虛擬現(xiàn)實(shí)技術(shù)已很成熟,廣泛應(yīng)用于各行各業(yè)。虛擬現(xiàn)實(shí)技術(shù)憑借其強(qiáng)大的交互功能,在教育領(lǐng)域中應(yīng)用也很廣泛。虛擬現(xiàn)實(shí)技術(shù)在教育中的應(yīng)用之一就是開發(fā)虛擬實(shí)驗(yàn)。VRML是開發(fā)虛擬實(shí)驗(yàn)的主流語言,能夠構(gòu)建逼真的實(shí)驗(yàn)環(huán)境。將VRML與Java相結(jié)合,通過EAI接口實(shí)現(xiàn)VRML場景與網(wǎng)頁中各個嵌入式對象之間互相方便地通信,使VRML場景成為網(wǎng)絡(luò)表現(xiàn)的一部分[1]。同時,也使用戶能夠動態(tài)地改變VRML場景。

        黑板是教學(xué)中最常用的教具之一,也是在虛擬實(shí)驗(yàn)中虛擬教室的一個重要組成部分。筆者主要探討黑板板書功能的設(shè)計以及實(shí)現(xiàn)方法。

        2 黑板板書實(shí)驗(yàn)的設(shè)計

        2.1 實(shí)驗(yàn)環(huán)境的設(shè)計實(shí)驗(yàn)的環(huán)境比較簡單,就是一間教室,里面包括黑板、桌椅、燈、多媒體柜等。為了實(shí)現(xiàn)黑板的板書功能,這里只需做一個黑板就可以。制作的方法主要有2種:一是用3DMAX制作完后,再轉(zhuǎn)化成VRML格式的文件,以便在VRML環(huán)境中對各種交互進(jìn)行編程;二是直接用VRML語言來編寫。2種方法各有長處。用3DMAX制作的實(shí)驗(yàn)器材比較精細(xì)、逼真,但在轉(zhuǎn)換成VRML格式的時候會有一些小錯誤,需要人工修改;直接用VRML編寫,做出來的器材的逼真度不如3DMAX,但編寫起來方便。這里采用第2種方法。

        2.2 交互功能的設(shè)計一般的交互功能都能通過JavaScript腳本來實(shí)現(xiàn),但是如果VRML程序較大,運(yùn)行起來就會影響速度。為了實(shí)現(xiàn)較好的交互功能,最好將VRML虛擬場景和交互的控制區(qū)分開,這就需要用到Java小程序Applet。

        教學(xué)中一般的黑板板書功能就是能夠在上面書寫,能用各種顏色的粉筆,能寫大小不等的字,還能用黑板擦擦掉。在這個虛擬實(shí)驗(yàn)中,這些功能都能實(shí)現(xiàn)。這就用到了EAI接口。在Applet小程序中設(shè)置字體的顏色、大小,將數(shù)據(jù)傳遞到VRML場景中,改變虛擬場景,就可以用設(shè)置好的顏色和大小來板書了。

        2.3 網(wǎng)頁布局的設(shè)計本實(shí)驗(yàn)的組成主要是虛擬場景和控制字體顏色大小的Applet小程序區(qū)。它們在屏幕上的分布設(shè)計如圖1所示。

        3 黑板板書實(shí)驗(yàn)的實(shí)現(xiàn)

        3.1 字體顏色、大小的控制

        1)方法介紹。板書功能的實(shí)現(xiàn)主要用JavaScript腳本來實(shí)現(xiàn)。由于EAI接口傳遞的數(shù)據(jù)不能直接傳到JavaScript腳本中,需要一個中間變量,這個中間變量其實(shí)就是一個節(jié)點(diǎn)。由這個中間變量接收EAI傳遞的數(shù)據(jù),那么這個節(jié)點(diǎn)的域就會發(fā)生變化。再通過一個路由將中間節(jié)點(diǎn)的域變化傳到JavaScript腳本的相應(yīng)事件中,進(jìn)而間接地實(shí)現(xiàn)參數(shù)的傳遞。方法如圖2所示。

        板書功能的實(shí)現(xiàn)關(guān)鍵是用createVRMLFromString()動態(tài)控制函數(shù)。由于板書是非常靈活的,所以寫出來的字應(yīng)該是圓滑的。擠壓造型Extrusion節(jié)點(diǎn)可以來創(chuàng)建彎曲的管道,板書寫的字和管道有相似之處。因此,可以用這個節(jié)點(diǎn)來實(shí)現(xiàn)具體的板書功能。

        2)關(guān)鍵代碼。

        ①VRML程序。JavaScript腳本部分代碼:

        function yanse(){ziyanse=mmm.diffuseColor ; } //獲取字體顏色值

        function zitidaxiao(){zidaxiao=daxiaobianhua.translation; } //獲取字體大小值

        function isActive (val) {

        ……

        zideyanse=new SFColor(ziyanse.r,ziyanse.g,ziyanse.b); //給字體賦顏色值

        scale=new SFVec2f(zidaxiao.x,zidaxiao.x); //給字體賦大小值

        string=xian1+'diffuseColor '+zideyanse+xian2+'spine '+spine+' scale '+scale+xian3;

        node=Browser.createVRMLFromString(string);//生成節(jié)點(diǎn)

        ……

        }

        function hitpoint(val){

        weix=val[0]; weiy=val[1];weiz=val[2];……

        spine[q]=new SFVec3f(weix,weiy,weiz);

        }

        ②Java程序。Java程序主要實(shí)現(xiàn)程序的界面布局以及獲取滾動條當(dāng)前值??刂谱煮w顏色、大小的滾動條的處理程序如下:

        public boolean handleEvent(Event event){//控制字體大小的滾動條

        if (event.id == Event. SCROLL_LINE_UP event.target ==scale){

        setScale(event);……}//控制字體顏色的滾動條

        for(int i=0;i<3;i++){

        if (event.id == Event. SCROLL_LINE_UP event.target ==scrBar[i]){

        setColorLabel(event,i);……

        }……}

        除了以上工作,還需要獲得滾動條實(shí)時變化的值,以進(jìn)一步對場景中相應(yīng)的VRML節(jié)點(diǎn)的域進(jìn)行賦值,進(jìn)而觸發(fā)腳本事件,實(shí)現(xiàn)板書功能。主要代碼如下:

        public void setColorLabel(Event ev,int i){……

        EventInSFColor newColor=(EventInSFColor)myMaterial.getEventIn(\"set_diffuseColor\");

        for(i=0;i<3;i++)

        value[i]=(float) (scrBar[i].getValue()/255f); //獲取顏色值

        newColor.setValue(value);

        }//控制文字大小

        public void setScale(Event e){

        EventInSFVec3f newtr=(EventInSFVec3f)ztdx.getEventIn(\"set_translation\");

        va[0]=(float)(scale.getValue()/10f);

        va[1]=(float)(scale.getValue()/10f);

        va[2]=(float)(scale.getValue()/10f);

        newtr.setValue(va);

        }

        3.2 擦除功能的實(shí)現(xiàn)這里所說的擦除并不是用鼠標(biāo)一點(diǎn)一點(diǎn)地抹掉,不是真正意義上的擦除;而是在Applet中引入一個按鈕,做一個超鏈接,重新打開這個網(wǎng)頁,看上去好像剛才寫的字不存在了,從而實(shí)現(xiàn)“擦除”效果。

        所用到的函數(shù)是showDocument()[2],使用它來實(shí)現(xiàn)超鏈接。

        Public void actionPerformed ( ActionEvent ae) {

        if (ae.getSource()==b) {

        try{

        getAppletContext().showDocument(new URL(getDocumentBase()+\"changecolor.htm\"),\"_self\");

        }

        catch (Exception e) { } } }

        至此,黑板板書功能設(shè)計完成,程序運(yùn)行結(jié)果如圖3所示。

        參考文獻(xiàn)

        [1]陸昌輝.使用VRML與JAVA創(chuàng)建網(wǎng)絡(luò)虛擬環(huán)境[M].北京:北京大學(xué)出版社,2003

        [2]如何在Java applet.class中實(shí)現(xiàn)超鏈接[EB/OL].[2008-3-20].http://www.readygo.com.cn/it-845520.html

        国产午夜视频免费观看| 久久99免费精品国产 | 欧美乱人伦中文字幕在线不卡| 日韩人妻免费一区二区三区| 日本最新一区二区三区在线视频 | 亚洲视频一区二区久久久| 女人一级特黄大片国产精品| 男女男在线精品免费观看| 高潮av一区二区三区| 少妇被黑人整得嗷嗷叫视频 | 99精品国产av一区二区| 久久精品成人91一区二区| 国产高潮流白浆免费观看不卡| 亚洲国产视频精品一区二区| 亚洲精品中文字幕乱码| 亚洲av午夜福利精品一区| 人妻 色综合网站| 日韩高清在线观看永久| 8888四色奇米在线观看| 无码国内精品久久人妻| 日本中文一区二区在线观看| 九九热线有精品视频86| 六月丁香久久| 国产女主播福利一区在线观看| 少妇被黑人嗷嗷大叫视频| 亚洲精品天堂成人片av在线播放| 欧美色五月| 中文字幕日韩一区二区不卡| 久久99精品综合国产女同 | 成人毛片av免费| 亚洲区在线| av天堂一区二区三区精品 | 亚洲av福利院在线观看| 俺来也俺去啦最新在线| 亚洲综合婷婷久久| 少妇极品熟妇人妻高清| 手机看片自拍偷拍福利| 18禁黄网站禁片免费观看| 精品一区二区三区在线视频观看| 亚洲av精品一区二区| 久久夜色精品国产亚洲av动态图|