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

        ?

        基于VRML的幻燈機(jī)虛擬實(shí)驗(yàn)的設(shè)計與實(shí)現(xiàn)

        2008-12-31 00:00:00辛允東
        電腦知識與技術(shù) 2008年12期

        摘要:VRML語言是一種建模語言,廣泛應(yīng)用于虛擬實(shí)驗(yàn)中。本文介紹如何利用VRML語言實(shí)現(xiàn)幻燈機(jī)的虛擬實(shí)驗(yàn)。

        關(guān)鍵詞:VRML;虛擬實(shí)驗(yàn);幻燈機(jī)

        中圖分類號:TP393文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)12-20ppp-0c

        The Design and Realization of Virtual Experiment of the Slide Projector Based on VRML

        XIN Yun-dong

        (The Information and Technology Department of Jining College, Qufu 273155, China)

        Abstract: The VRML is a Modeling Language, which is applied in virtual experiment widly. The virtual experiment of slide projector is realized in VRML language.

        Key words: VRML; Virtual experiment; Slide projector

        1 VRML語言介紹

        VRML(Virtual Reality Modeling Language)即虛擬現(xiàn)實(shí)建模語言,是一種用于建立真實(shí)世界的場景模型或人們虛構(gòu)的三維世界的場景建模語言,具有平臺無關(guān)性,是目前虛擬實(shí)驗(yàn)制作的主流語言。VRML的對象稱為節(jié)點(diǎn),子節(jié)點(diǎn)的集合可以構(gòu)成復(fù)雜的景物。節(jié)點(diǎn)可以通過實(shí)例得到復(fù)用,對它們賦以名字,進(jìn)行定義后,即可建立動態(tài)的VR(虛擬世界)。

        虛擬現(xiàn)實(shí)的三大特點(diǎn)就是沉浸感、交互性、構(gòu)想性。VRML不僅支持?jǐn)?shù)據(jù)和過程的三維表示,而且能提供帶有音響效果的節(jié)點(diǎn),用戶能走進(jìn)視聽效果十分逼真的虛擬世界。用戶能與虛擬對象交互,并得到相應(yīng)的反饋信息,就像在真實(shí)的實(shí)驗(yàn)環(huán)境中,為用戶帶來了全新的感受。

        2 幻燈機(jī)虛擬實(shí)驗(yàn)的設(shè)計

        2.1 創(chuàng)建虛擬實(shí)驗(yàn)環(huán)境的VR界面

        構(gòu)建逼真三維效果的空間場景和實(shí)體。這些場景和實(shí)體與真實(shí)世界的幾何特征和物理特性基本相同,提供實(shí)驗(yàn)環(huán)境和進(jìn)行實(shí)驗(yàn)操作的虛擬空間。實(shí)驗(yàn)者在進(jìn)行實(shí)驗(yàn)時,能夠體驗(yàn)到具有基本真實(shí)感的三維視覺空間。本虛擬實(shí)驗(yàn)室需要進(jìn)行建模的實(shí)驗(yàn)實(shí)體有實(shí)驗(yàn)室場景(包括墻壁、地面、頂棚、燈光、實(shí)驗(yàn)臺)、幻燈機(jī)、幻燈片、銀幕。

        2.2 設(shè)計并實(shí)現(xiàn)基于VRML的幻燈機(jī)操作功能

        這是實(shí)現(xiàn)系統(tǒng)功能的主要部分。實(shí)驗(yàn)者在虛擬實(shí)驗(yàn)環(huán)境中完成幻燈機(jī)實(shí)驗(yàn)的各個環(huán)節(jié)。操作功能包括連接電源、放置幻燈片、調(diào)焦、換片等。

        2.3 實(shí)驗(yàn)組成部分

        該實(shí)驗(yàn)包括以下幾個部分:正確放置幻燈片、連接電源、調(diào)焦、換片。

        3 幻燈機(jī)虛擬實(shí)驗(yàn)的實(shí)現(xiàn)

        這里以直線盒式幻燈機(jī)為例。

        3.1 實(shí)驗(yàn)器材的設(shè)計

        實(shí)驗(yàn)器材包括實(shí)驗(yàn)臺、銀幕、幻燈機(jī)三部分。有兩種方法可以實(shí)現(xiàn)。一是直接用VRML語言創(chuàng)作,主要用到了Transform、Shape節(jié)點(diǎn);二是用3DMAX制作完之后,導(dǎo)出VRML文件格式,再對其中的一些錯誤進(jìn)行修改。這里采用VRML語言直接編輯,幻燈機(jī)的效果如圖1。

        3.2 正確放置幻燈片

        幻燈機(jī)就是利用凸透鏡當(dāng)物體距透鏡的距離大于一倍焦距而小于二倍焦距時成倒立、放大的實(shí)像這個原理制成的。當(dāng)幻燈片離鏡頭的距離在一倍焦距和二倍焦距之間,用強(qiáng)光照射幻燈片時,就可以在屏幕上得到倒立、放大的實(shí)像。為了使得到的像成為“正立”的,所以要把幻燈片上下顛倒放置?;脽羝某跏嘉恢迷趯?shí)驗(yàn)臺上,在幻燈片上加一個接觸傳感器,當(dāng)單擊幻燈片時,便出現(xiàn)一個動畫,演示如何放置幻燈片。制作這個動畫較簡單,這里不再贅述。

        3.3 連接電源

        放好幻燈片后,需要接通電源,開始實(shí)驗(yàn)。電源的連接操作應(yīng)該是將電源插頭插入插座。為了實(shí)現(xiàn)連接電源,有兩種方式:一是電源導(dǎo)線由無到有的顯示;二是做一個動畫,將電源插頭插入插座的過程進(jìn)行模擬。兩種方式都可以。這個相對來說也簡單,重點(diǎn)開發(fā)的是下面兩方面。

        3.4 調(diào)焦

        根據(jù)成像公式1/f=1/u+1/v(u、v、f分別代表像距、物距、焦距),幻燈機(jī)的放置位置不一樣,在銀幕上成的像的清晰度就不一樣。所以需要調(diào)焦。調(diào)焦動畫的模擬是這樣的:當(dāng)單擊鏡頭左半部分時,鏡頭向左轉(zhuǎn)動、向后移動;單擊鏡頭右半部分時,鏡頭向右轉(zhuǎn)動、向前移動。為使動畫模擬更逼真,鏡頭的轉(zhuǎn)動應(yīng)具有繼承性,這就需要兩個變量分別記錄上次轉(zhuǎn)動的角度及距離,然后再加上本次轉(zhuǎn)動的角度及距離,使動畫具有了繼承性。還有一點(diǎn),那就是在鏡頭轉(zhuǎn)動的過程中,物距發(fā)生變化,像距也隨之發(fā)生變化,那么,幻燈片能否在銀幕上成清晰的像也在變化。為了實(shí)現(xiàn)成像的清晰度的變化的模擬,采用了在銀幕前加一個很薄的方體,設(shè)置為白色,通過改變其透明度屬性(transparency),來改變成像的清晰度。主要代碼及注釋如下:

        DEF tiaojiaocontrol Script {

        eventInSFFloatjingtoutimefraction#時間片段

        eventInSFVec3fjingtoutouchpoint#接收點(diǎn)擊點(diǎn)位置的入事件

        eventInSFTime jingtoustarttime#點(diǎn)擊的開始時間

        eventOut SFRotation jingtourotation#轉(zhuǎn)動角度的出事件

        eventOut SFVec3f jingtouqianhouyidong#鏡頭前后移動的距離

        eventOut SFFloat jiaoju#改變銀幕成像的清晰度

        field SFVec3f touchpoint 0 0 0#判斷點(diǎn)擊位置的中間變量

        field SFFloat jtzd 0#記錄上次轉(zhuǎn)完后,所處的角度

        field SFFloat qianzd 0#記錄上次轉(zhuǎn)過的角度

        field SFFloat houzd 0#記錄本次轉(zhuǎn)過的角度

        field SFFloat juli 0#記錄上次轉(zhuǎn)完后,所處的位置

        field SFFloat qianydjuli 0#記錄上次移動的距離

        field SFFloat houydjuli 0#記錄本次移動的距離

        url \"javascript:

        function jingtoustarttime(value){

        qianzd=jtzd;

        houzd=0;//在本次轉(zhuǎn)動之前,先將其置零 ,使其具有繼承性

        qianydjuli=juli;

        houydjuli=0;

        }

        function jingtoutouchpoint(value){touchpoint=value;}

        function jingtoutimefraction(value){

        houzd=houzd+0.002;

        houydjuli=houydjuli+.002;

        if(touchpoint[0]<0.035) { //向左轉(zhuǎn)

        jingtourotation[0]=0;jingtourotation[1]=0;jingtourotation[2]=1;

        jingtourotation[3]=qianzd+houzd*1.57; //本次轉(zhuǎn)動后的角度

        if(juli<=.2){jingtouqianhouyidong[0]=0;jingtouqianhouyidong[1]=0;

        jingtouqianhouyidong[2]=qianydjuli+houydjuli;

        if(jingtouqianhouyidong[2]<=.1){jiaoju=jingtouqianhouyidong[2]*10;}

        else{jiaoju=2-jingtouqianhouyidong[2]*10;}

        }

        }

        else{……}

        jtzd=jingtourotation[3];

        juli=jingtouqianhouyidong[2];

        }\"

        }

        #鏡頭變動

        ROUTE jingtoutouch.isActive TO jingtoutime.set_enabled

        ROUTE jingtoutouch.touchTime TO tiaojiaocontrol.jingtoustarttime

        ROUTE jingtoutime.fraction_changed TO tiaojiaocontrol.jingtoutimefraction

        ROUTE tiaojiaocontrol.jingtourotation TO jingtouti.set_rotation

        ROUTE tiaojiaocontrol.jingtouqianhouyidong TO jingtouti.translation

        ROUTE jingtoutouch.hitPoint_changed TO tiaojiaocontrol.jingtoutouchpoint

        ROUTE tiaojiaocontrol.jiaoju TOqingxidu.transparency

        效果如圖2、圖3。

        3.5 換片操作

        在進(jìn)行幻燈機(jī)操作時,需要按下一個按鈕來換上下一個幻燈片,這是換片操作。這個操作包括兩部分:一是直線盒要往前移動一個格,導(dǎo)桿將幻燈片推入鏡頭的后面,二是銀幕上的像也要作相應(yīng)的變化。主要代碼如下:

        DEF piankongzhi Script {

        eventInSFTime huanpiananxia

        eventOut SFVec3f pian1dong

        ……

        eventOut SFVec3f pian10dong

        eventOut SFVec3f dihedong

        eventOut MFString urlchange

        field SFVec3f piandi1weizhi -.12 .066 -0.2

        ……

        field SFVec3f piandi10weizhi -.12 .066 0.16

        field SFVec3f fangpian1weizhi .15 0 0

        ……

        field SFVec3f fangpian10weizhi .15 .0 -0.36

        field SFVec3f huipian1weizhi 0 0 0

        ……

        field SFVec3f huipian10weizhi 0 0 -0.36

        field SFInt32 cishu 0

        url \"javascript:

        function huanpiananxia(){

        cishu+=1;

        if(cishu==1){pian1dong=fangpian1weizhi;

        dihedong=piandi1weizhi;

        urlchange[0]='huandengji1.jpg';

        }

        ……

        if(cishu==10){pian10dong=fangpian10weizhi;

        pian9dong=huipian9weizhi;

        dihedong=piandi10weizhi;

        urlchange[0]='huandengji2.jpg';

        }

        }\"

        }

        ROUTE huanpiananniu.touchTime TO piankongzhi.huanpiananxia

        ROUTE piankongzhi.pian1dong TO huandengpian1.translation

        ……

        ROUTE piankongzhi.pian10dong TOhuandengpian10.translation

        ROUTE piankongzhi.dihedong TO pianjidizuo.translation

        效果如圖4、圖5。

        5 總結(jié)

        這里只是實(shí)現(xiàn)了幻燈機(jī)虛擬實(shí)驗(yàn)的部分主要功能。還有擴(kuò)展的地方,如成像原理模擬、內(nèi)部結(jié)構(gòu)模擬、實(shí)驗(yàn)方式、其他型號幻燈機(jī)功能的模擬等。這里不能一一細(xì)述,有待以后進(jìn)一步完善。

        參考文獻(xiàn):

        [1] 段新昱.虛擬現(xiàn)實(shí)基礎(chǔ)與VRML編程[M].北京:高等教育出版社,2004.

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

        收稿日期:2008-03-12

        香蕉视频免费在线| 久久久老熟女一区二区三区 | 秋霞国产av一区二区三区| 久久AV中文综合一区二区| 日本高清视频在线一区二区三区| 国产视频激情在线观看| 国产成年女人毛片80s网站| 国产精品久久久久久人妻精品| 天天中文字幕av天天爽| 国产视频一区2区三区| 少妇高潮太爽了在线视频| 精品无码人妻一区二区三区| 精品国产性色av网站| 91久久精品一区二区三区大全| 欧美丰满少妇xxxx性| av片在线观看免费| 久久久国产精品ⅤA麻豆百度 | 日本阿v片在线播放免费| 婷婷丁香社区| 国产精品无套粉嫩白浆在线| 国产亚洲精品在线视频| 国产又爽又黄又刺激的视频| 亚洲国产精品无码久久电影| 蜜桃伦理一区二区三区| 91九色人妻精品一区二区三区| 免费人成网ww555kkk在线| 亚洲熟妇色xxxxx欧美老妇| 国产一区二区三区porn| 邻居少妇张开腿让我爽了一夜| 国内a∨免费播放| 国产在线天堂av| 亚洲精品第四页中文字幕| 人与禽性视频77777| 日本欧美在线播放| 日韩精品极品免费在线视频| 无码人妻丰满熟妇啪啪网不卡| 久久精品国产亚洲精品| 无码国产一区二区色欲| 亚洲一区二区三区精品| 中国丰满熟妇xxxx性| 亚洲色偷偷综合亚洲av伊人|