《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于VRML和JavaScript的數碼攝影虛擬實驗系統的設計與實現
基于VRML和JavaScript的數碼攝影虛擬實驗系統的設計與實現
來源:微型機與應用2011年第13期
孫永麗
(山東科技大學 信息科學與工程學院 數字媒體技術系,山東 青島 266510)
摘要: 設計開發了三維虛擬數碼單反相機,使學生對數碼單反相機有直觀形象的認識,再使用VRML軟件進行交互設計并實現網上發布,建立逼真的交互式三維虛擬實驗環境,實現數碼攝影虛擬實驗。
Abstract:
Key words :

摘  要: 設計開發了三維虛擬數碼單反相機,使學生對數碼單反相機有直觀形象的認識,再使用VRML軟件進行交互設計并實現網上發布,建立逼真的交互式三維虛擬實驗環境,實現數碼攝影虛擬實驗。
關鍵詞: VRML;JavaScript;虛擬實驗;三維建模三維場景;數碼單反相機

1 研究思路與開發平臺的選擇
 目前,基于網絡對實驗對象進行三維交互展示的有效處理方法是使用專業的設計軟件,如采用AUTOCAD、3DS MAX等將實驗對象的三維模型設計出來。這種方法建模過程直觀形象,但生成的模型和動畫不能與用戶進行交互,需要將三維模型導出為相關虛擬現實設計軟件所需要的格式文件,用虛擬現實設計軟件進行三維展示的交互設計,最后將它發布到網站上[1]。
 經過多年的發展,虛擬現實技術的實現也派生出多種不同的方法,現在較為流行的有VRML、Java 3D、CULT3D、X3D等多種實現方法。它們各自有不同的優缺點。其中,虛擬現實建模語言VRML(Virtual Reality Modeling Language)是一種描述大量對象的屬性及相互關系的語言,具有平臺無關性、三維交互性、多媒體集成、境界逼真等眾多優越的特征,所以選擇該軟件作為開發平臺。雖然VRML可以通過直接編程進行語義描述,建立實驗對象的三維模型,但這種方法適合建立簡單規則的模型。數碼單反相機主要由機身和鏡頭兩部分組成。機身上又包括取景窗口、液晶顯示屏、曝光模式選擇盤、控制撥輪以及各個操作按鈕等,結構比較復雜,不宜直接用VRML語言進行語義描述。而是利用3DS MAX建立整個模型,并賦予材質、色彩、光照,導出VRML的格式文件(.*wrl文件)。因此,選擇3DS MAX進行建模,再使用VRML軟件進行交互設計并實現網上發布,建立逼真的交互式三維虛擬實驗環境,可以讓學生隨時通過網絡瀏覽三維場景,并通過人機交互進行仿真實驗。
2 三維虛擬數碼單反相機的設計與實現
 實驗對象的建模是虛擬實驗開發過程中最重要的一步,模型的好壞直接影響運行的效果和場景的沉浸度。為了便于在VRML瀏覽器中設計三維數碼單反相機的交互,可以真實地模擬實際操作進行鏡頭的旋轉、曝光模式選擇盤的轉動、控制撥輪和按鈕的操作等,在對數碼相機進行建模時,將其各部分分別建模,后期組裝。將數碼單反相機的三維模型建好后,在3DS MAX中應用輸出插件導出*wrl格式的文件。在運用3DS MAX模型導出VRML文件后要充分注意優化VRML程序。優化技術是三維虛擬建模過程中至關重要的一個環節,優化結果的好壞將直接影響三維數碼相機的顯示速度和交互效果[2]。
3 使用VRML語言結合JavaScript實現數碼單反相機的虛擬實驗
 數碼單反相機虛擬實驗系統共包括四個實驗,分別是:認識數碼相機、數碼相機的調節模式、數碼相機的光圈調節、數碼相機快門調節。
3.1 認識數碼單反相機模塊的設計與實現[3]
 實驗1是對數碼單反相機的三維展示,主要分為:(1)自由旋轉展示。在這種方式下,相機自動在瀏覽器中旋轉,讓學習者從不同的角度上觀察相機的結構。(2)手動控制展示。在這種方式下,學習者可以自主轉動相機,從不同角度細致地觀察相機。
 為了實現相機的自由旋轉展示,可以運用時間傳感器節點(TimeSensor)和方向插補器節點(OrientationInterpolator)。TimeSensor節點的作用是創建一個虛擬時鐘,可以像時鐘一樣標記時間的流逝,設置開始動畫、結束動畫和控制動畫的播放速度等屬性,并向插補器節點輸出時間事件,產生相應的動畫效果。OrientationInterpolator可改變觀察方向或者改變形狀體的方向。插補器節點使用一組關鍵時刻和關鍵值來描述一個動畫。關鍵時刻列表在插補器節點的key域中指定,關鍵值列表在插補器節點的keyvalue域中指定。瀏覽器在渲染時將根據這些關鍵時刻所對應的關鍵狀態在場景中通過線性插值計算技術自動生成連續動畫。實現自由旋轉展示部分相應代碼如下:
 OrientationInterpolator{   //創建控制動畫的插補器
        key    [0 0.5 1]//指定關鍵時刻列表
        keyValue [//指定對應的旋轉關鍵值列表
            0 1 0 0,
            0 1 0 3.14,
            0 1 0 6.28
        ]
}
TimeSensor {//創建控制動畫的時間感應器
        enabled    TRUE
        cycleInterval 30//指定每個變化周期的時間長短
}
ROUTE clock_camera.fraction_changed    TO camera_auto_rotation.set_fraction
ROUTE camera_auto_rotation.value_changed TO
    camera_all.rotation
 在ROUTE中,將TimeSensor的fraction_changed出事件路由到插補器的set_fraction入事件,每次時間傳感器輸出一個新的時刻,插補器就會利用輸入的時間計算出一個新的旋轉值,然后通過其value_changed出事件路由到方向插補器節點。
 為了能從各種角度來展示相機,運用SphereSensor傳感器節點,對相機進行了手動的三維展示。 SphereSensor節點用于感知觀察者的拖動動作,并且計算旋轉角和角度。通過使用它的rotation_changed域輸出變化的參數,對相機整體進行360°上下左右的旋轉完成相機的手動展示。代碼如下:
SphereSensor{
        enabled TRUE
}
 ROUTE camera_sd.rotation_changed TO    camera_all.rotation
對于VRML窗口與網頁之間的交互主要是通過JavaScript和VRML中的TouchSensor節點完成。由于TouchSensor節點能感知用戶的鼠標事件,一般的鼠標操作通常有3種:移動、點擊、拖動。本設計主要使用了移動操作,當用戶進行移動操作的時候會使TouchSensor中的isOver公共域變為TRUE,傳遞出去一個真事件。在網頁中用JavaScript接收到該事件再運用相應的程序完成相應的操作,然后在VRML場景中運用Onmousemove感知鼠標的移動事件。VRML場景中主要代碼:
Touchsensor {
    Enabled TRUE
}
 在網頁中對VRML場景運用了Onmousemove感知鼠標的移動事件,當鼠標作用于VRML場景時會觸發相應的處理事件javascript代碼,例如當鼠標移動到LCD顯示屏時,用到了條件判斷語句對其進行判斷:
if(M_e.Nodes("Viewfinder_button").Fields("isOver")==-1){
                display_div(2,12);
}
 然后進行相應的處理操作。其中Viewfinder_button是取景器的觸發傳感器TouchSensor的名稱。
3.2 數碼相機曝光模式的選擇模塊的設計與實現

 


 在實驗2中,要求能模擬真實的數碼相機的操作,允許學習者通過轉動曝光模式調節環,選擇不同的曝光模式。每一種曝光模式都有各自的特點以及適用的場合。實現這一效果,是在VRML中使用CylinderSensor(圓柱傳感器)與Script節點的結合實現了用戶與曝光模式選擇盤的交互。CylinderSensor節點也可以感知一個觀察者的拖動動作,并且計算轉軸和角度,通過它的rotation_changed域(eventOut出事件)輸出。其代碼如下:
CylinderSensor{
        exposedField SFFloat minAngle 0
        exposedField SFFloat maxAngle -1
        exposedField SFBool enabled TRUE
        exposedField SFFloat diskAngle 0.262
        exposedField SFFloat offset 0
        exposedField SFFloat autooffset TRUE
        eventOut SFBool isActive
eventOut SFVce3f trackPoint_changed
        eventOut SFRotation rotation_changed
}
 觀察者每次改變軌跡點時,autoOffset、offset、maxAngle和minAngle域值在一起作用把軌跡點轉化成為旋轉值,并通過rotation_changed域(eventOut出事件)輸出。然后通過旋轉角度的不同改變LCD顯示屏上不同的曝光模式畫面。同時也向瀏覽器環境傳遞不同的旋轉角度,瀏覽器根據不同的旋轉角度來顯示不同的模式說明。
3.3 光圈與快門的調節模塊的設計與實現
 實驗3和實驗4分別是針對光圈大小和快門大小進行調節,然后在模擬的場景中進行拍攝,比較不同的光圈值和快門速度對畫面成像效果的影響。這樣,既讓學生掌握了光圈和快門值的調整方法,又讓他們理解了光圈值和快門速度與畫面成像效果的關系。這兩部分實現的方法相似,所以在此一并說明。
 以快門速度的調整為例,通過設置不同的快門速度,模擬了不同的成像效果。首先通過機身上的調節按鈕設置快門速度,如圖1所示,分別設置快門速度為1/200 s與1/1 000 s。

 然后到模擬的三維場景中進行取景操作。由于不同的快門速度對成像效果的影響主要是體現在動態被攝對象上,所以,在場景中模擬了一輛奔跑的汽車,按下拍攝,即可得到模擬的成像效果,如圖2所示。

 具體實現方法如下:
    if(a==4){
        M_e.Nodes("tv_sensor").Fields("offset")=-4.125;
        M_e.Nodes("tv_sensor").Fields("enabled")=-1;
        M_e.Nodes("start_t4_script").Fields("show")=-1;
    }
    else{
        M_e.Nodes("tv_sensor").Fields("enabled")=0;
        if(a==1||a==2){
            M_e.Nodes("start_t4_script").Fields("show")=0;
        }else{
            M_e.Nodes("start_t5_script").Fields("show")=0;
        }
        document.getElementById("left_content").style.display="none"
 也就是用JavaScript啟動了VRML中快門傳感器和控制放在VRML中快門傳感器的動作。
4 網絡發布與插件的自動安裝
 VRML 文件可以采用超級鏈接的方式把HTML文件和VRML 文件鏈接到一起,這對于三維模型的虛擬展示具有十分重要意義。HTML文件格式的標準并不支持對VRML文檔的嵌入,但非標準HTML提供<EMBED>標記可實現VRML文檔的嵌入。例如下面的語句實現了VRML文檔camera.wrl在HTML文件中的嵌入,其中SRC域指定關聯的URL,“camera.wrl”是一個VRML文件。
<OBJECT CLASSID="CLSID:4B6E3013-6E45-11D0-9309-0020AFE05CC8"  WIDTH=600px HEIGHT=400px; >
<PARAM NAME="SRC" VALUE="vrml/camera.wrl">
<EMBED name=camera id=camera src="vrml/camera.wrl" TYPE="application/x-cc3d" onmousemove="test1_contactVW();"/>
</OBJECT>
 在網頁中要進行對VRML的操作只進行上述嵌入是遠遠不夠的,還要通過javaScript中的M_e=camera.Engine,獲取對相機VRML場景的句柄并賦給M_e。這樣,就可以對VRML場景中的每一個節點中的每一個域和事件的值進行獲取了。
 為了保證用戶機器上能正常播放,需要在用戶機器上安裝VRML瀏覽器。可通過以下代碼實現自動安裝:
<OBJECT CLASSID="CLSID:4B6E3013-6E45-11D0-9309-0020AFE05CC8"  WIDTH=600px HEIGHT=400px;
        codebase="source/cortvrml.exe">
    <PARAM NAME="SRC" VALUE="vrml/camera.wrl">
    <EMBED  name=camera id=camera src="vrml/camera.wrl" pluginspage="source/cortvrml.exe" type="application/x-shockwave-flash"  TYPE="application/x-cc3d" onmousemove="test1_contactVW();"/>
        </OBJECT>
 虛擬實驗是開展網絡教學的一個瓶頸,而其中最關鍵的是沒能較好地解決交互性的問題。利用VRML技術,結合支持VRML的開發工具構建一個虛擬實驗環境,并利用Java提供的支持VRML的開發包,實現了用戶與虛擬環境之間的交互,可以滿足數碼攝影虛擬實驗教學的需要。實驗常常是一種協作性的活動,合作是實驗過程中一個至關重要的環節,因此,要充分利用現代網絡技術,增強對虛擬實驗的協同操作,進一步體現網上實驗的優勢[4]。
參考文獻
[1] 田茵.基于虛擬現實的三維產品展示[J].計算機教育,2009(6).
[2] 張枝軍.電子商務網站中商品三維虛擬展示技術研究[J].商場現代化,2008(11).
[3] 孫永麗.三維虛擬仿真數碼單反相機的設計與實現[J].軟件導刊,2010(8).
[4] 張民.遠程虛擬實驗平臺及LabVIEW實驗研究[D].太原:太原理工大學,2010.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲国产精品尤物yw在线观看| 亚洲欧洲精品一区二区三区波多野1战4| 国产精品免费看片| 久久国产欧美日韩精品| 亚洲欧美中文日韩在线| 亚洲精品一级| 黄色在线一区| 国产精品伊人日日| 欧美成人免费观看| 久久精品欧美日韩精品| 亚洲私人影院| 欧美精品一区二| 久久婷婷亚洲| 亚洲一区一卡| 亚洲午夜激情| 亚洲久久视频| 亚洲福利视频一区| 国产一区清纯| 国产区日韩欧美| 国产精品久久久久久久久免费樱桃 | 一级成人国产| 亚洲国产另类久久精品| 亚洲淫性视频| 亚洲无线一线二线三线区别av| 亚洲精品综合久久中文字幕| 亚洲成人在线视频播放| 韩国成人理伦片免费播放| 欧美日本在线| 欧美精品激情在线| 免费日本视频一区| 久色成人在线| 欧美怡红院视频一区二区三区| 亚洲一区二区成人| 一区二区三区欧美成人| 亚洲美女电影在线| 亚洲精品在线免费| 亚洲美女色禁图| 亚洲精品久久| 亚洲二区在线视频| 久久精品国产免费看久久精品| 亚洲精品一区二区在线观看| 国产精品免费在线 | 免费欧美电影| 欧美14一18处毛片| 久久久www成人免费精品| 亚洲欧美日韩在线不卡| 99视频精品在线| 国产自产精品| 国产精品久久久久久久9999| 欧美日韩一区二区三区在线视频 | 欧美影院成人| 久久精品一二三区| 老司机精品久久| 免费观看成人| 欧美精品激情在线| 欧美日韩亚洲成人| 国产精品久久久久三级| 国产精品美女主播在线观看纯欲| 国产精品久久久久aaaa樱花| 欧美日韩精品系列| 国产精品第13页| 国产精品户外野外| 久久久久久久久久久久久女国产乱 | 亚洲欧美一区二区激情| 欧美专区第一页| 久久人人九九| 久久伊人一区二区| 欧美激情在线免费观看| 欧美午夜精品理论片a级大开眼界| 欧美经典一区二区| 国产精品第一页第二页第三页| 欧美日韩免费观看一区| 欧美成人精品h版在线观看| 欧美日韩一区二区三区四区在线观看 | 在线观看欧美黄色| 一本高清dvd不卡在线观看| 欧美一区二区三区四区在线观看地址| 日韩视频在线观看国产| 久久成人精品视频| 欧美日韩成人一区二区| 国产综合久久| 亚洲小说春色综合另类电影| 亚洲三级电影全部在线观看高清| 欧美亚洲一级片| 欧美日韩免费观看一区| 红桃视频亚洲| 亚洲在线一区| 99成人在线| 美女黄毛**国产精品啪啪| 国产精品视频福利| 日韩视频中文| 亚洲精品乱码| 久久亚洲一区二区三区四区| 国产精品国产三级国产普通话蜜臀 | 亚洲国产激情| 亚久久调教视频| 欧美日本一区二区高清播放视频| 精品999成人| 欧美亚洲日本国产| 亚洲特黄一级片| 欧美精品色网| 亚洲第一区在线观看| 久久gogo国模啪啪人体图| 亚洲男人天堂2024| 欧美日韩亚洲一区二区| 亚洲国产一区二区三区a毛片| 久久国产视频网站| 欧美一区二区三区精品| 欧美视频免费在线| 亚洲欧洲精品一区二区精品久久久| 久久www成人_看片免费不卡| 欧美一区二区三区在| 国产精品乱码妇女bbbb| 99精品国产在热久久婷婷| 亚洲另类黄色| 欧美日韩爆操| 亚洲精品乱码久久久久久黑人 | 国产精品v片在线观看不卡| 亚洲日本欧美天堂| 日韩午夜高潮| 欧美日韩1234| 99精品国产一区二区青青牛奶| 日韩写真视频在线观看| 欧美国产在线观看| 91久久精品国产91久久性色tv| 亚洲精品一区在线| 欧美精品国产一区二区| 亚洲精品综合| 亚洲在线1234| 国产精品青草久久| 亚洲欧美成人一区二区三区| 欧美一二区视频| 国产婷婷色一区二区三区| 性欧美videos另类喷潮| 久久色在线播放| 一区在线播放视频| 亚洲免费成人av| 欧美日韩三区| 亚洲手机视频| 欧美一区二区观看视频| 国产一区二区三区在线观看精品 | 国产亚洲一级高清| 久久精品国产第一区二区三区最新章节| 久久精品国产精品亚洲精品| 国产日韩高清一区二区三区在线| 午夜亚洲性色福利视频| 久久久久国产精品厨房| 在线观看精品一区| 中国日韩欧美久久久久久久久| 国产精品久久国产精麻豆99网站| 亚洲欧美在线观看| 亚洲永久在线| 久久久7777| 亚洲第一精品福利| 一区二区三区四区精品| 国产精品久久久99| 欧美一区二区三区免费视频| 免费精品视频| 日韩视频免费观看高清在线视频 | 国产精品久久久久久久久久直播 | 欧美视频精品在线| 午夜精品免费| 麻豆国产精品一区二区三区| 91久久视频| 亚洲欧美国产日韩天堂区| 国产一区二区电影在线观看| 亚洲精品国产品国语在线app| 欧美日韩免费观看一区=区三区| 亚洲综合色激情五月| 久久夜色精品| 一本色道久久综合| 久久激情中文| 亚洲欧洲精品一区二区| 欧美一区二区在线播放| 在线欧美福利| 亚洲综合社区| 1769国内精品视频在线播放| 亚洲一区二区三区在线看 | 久久久久久久久久久久久久一区 | 亚洲夜间福利| 今天的高清视频免费播放成人| 一本久久综合| 国模大胆一区二区三区| 亚洲视频一区二区在线观看 | 欧美刺激性大交免费视频| 亚洲一区二区在线免费观看| 老司机精品视频一区二区三区| 一本色道久久综合一区| 久久精品盗摄| 日韩亚洲精品在线| 久久亚洲一区| 亚洲一区二区精品视频| 欧美成人国产va精品日本一级| 中文久久精品| 欧美韩日视频| 亚洲成色777777在线观看影院| 国产精品激情电影| 亚洲麻豆视频| 在线观看视频一区| 欧美诱惑福利视频|