【正文】
. It is the use of puter hardware devices and virtual reality simulation of the real world, not only enables people to visit the virtual environment, immersive feeling generated in the process, and also be able to interact with the virtual scene, with interactivity, immersion, Fantasy and more aware of other features. This paper discusses the use of 3ds max, VRML and JavaScript programming construct virtual technology virtual reality scene in supermarkets and restaurants in the application control, use the mouse to control objects within the scene, to issue instructions and make a corresponding change in the movement. For example: The restaurant part of the rotation in the microwave the heating, gas stove39。虛擬日常生活場(chǎng)景設(shè)計(jì)是將現(xiàn)實(shí)生活中經(jīng)常接觸到、使用到的日常生活場(chǎng)景虛擬化,使人們可以在虛擬的網(wǎng)絡(luò)世界中感受到現(xiàn)實(shí)生活的蹤影。概括地說,虛擬現(xiàn)實(shí)是人們通過計(jì)算機(jī)對(duì)復(fù)雜數(shù)據(jù)進(jìn)行可視化操作與交互的一種全新方式,與傳統(tǒng)的人機(jī)界面以及流行的視窗操作相比,虛擬現(xiàn)實(shí)在技術(shù)思想上有了質(zhì)的飛躍。其被廣泛應(yīng)用于Internet上創(chuàng)建充滿動(dòng)感的三維虛擬空間。具體來講,虛擬現(xiàn)實(shí)環(huán)境一般涉及計(jì)算機(jī)圖形學(xué)、圖像處理、模式識(shí)別、傳感器、語音處理、網(wǎng)絡(luò)技術(shù)、并行處理、人工智能等高新技術(shù),還涉及天文、地理、數(shù)學(xué)、物理、化學(xué)、美學(xué)、醫(yī)學(xué)、軍事、生理和心理等領(lǐng)域[4]。其前身是基于DOS操作系統(tǒng)的3D Studio系列軟件,最新版本是2010。 3ds max的特點(diǎn)功能強(qiáng)大,擴(kuò)展性好。室內(nèi)設(shè)計(jì)在3ds max等軟件中,可以制作出3D模型,可用于室內(nèi)設(shè)計(jì)、例如沙發(fā)模型、客廳模型、餐廳模型、臥室模型等等。這個(gè)程序是用JavaScript或Java寫的,Script節(jié)點(diǎn)腳本可以接收事件,處理事件中的信息,還可以產(chǎn)生基于處理結(jié)果的輸出事件。無論Script節(jié)點(diǎn)是直接包含程序腳本,還是將其放在分立的文件中,Script節(jié)點(diǎn)的程序腳本定義了此節(jié)點(diǎn)的動(dòng)作。 第3章 使用3ds max技術(shù)構(gòu)建模型 3ds max構(gòu)建模型的準(zhǔn)則一個(gè)虛擬現(xiàn)實(shí)場(chǎng)景在計(jì)算機(jī)上演示流暢與否,與場(chǎng)景中的模型個(gè)數(shù)、模型面數(shù)、模型貼圖這三個(gè)方面的數(shù)據(jù)量息息相關(guān),只有在前期建模時(shí)處理好這三個(gè)方面的數(shù)據(jù)量,才不會(huì)導(dǎo)致后期演示時(shí)出現(xiàn)卡、頓等現(xiàn)象。洗手池建模、油煙機(jī)建模 圖33 洗菜池的效果圖 圖34油煙機(jī)的效果圖 三維修改器建模在3ds max的修改工具中有大量的三維修改命令,通過使用這些三維修改命令可以對(duì)三維對(duì)象進(jìn)行一些復(fù)雜的變形和編輯,可以快捷地創(chuàng)建一些精度要求很高的復(fù)雜三維造型。(3)激活透視圖,觀察最終動(dòng)畫并加以修改。根據(jù)其所插值的類型而將插補(bǔ)器節(jié)點(diǎn)分為幾種[9]:PositionInterpolator位置插補(bǔ)器(用于造型位置的變化,和時(shí)間傳感器結(jié)合一起可以隨時(shí)間改變對(duì)象的位置,從而創(chuàng)建對(duì)象移動(dòng)的效果。) 使用VRML構(gòu)建交互功能的基本傳感器類型在虛擬場(chǎng)景中設(shè)置了一些具有檢測(cè)、感知作用的節(jié)點(diǎn),借助這些節(jié)點(diǎn)的使用,瀏覽者和虛擬對(duì)象能夠?qū)崿F(xiàn)更進(jìn)一步的交互[10]。如圖442所示功能實(shí)現(xiàn)。如圖45所示為天空效果圖。如圖449所示為超市收銀功能的實(shí)現(xiàn)。 使用VRML構(gòu)建油煙機(jī)聲音的交互功能利用VRML里的touchsensor實(shí)現(xiàn)現(xiàn)實(shí)生活中中抽煙煙機(jī)的工作,同時(shí)配有聲音的開啟和關(guān)閉,使人們可以交互控制虛擬的場(chǎng)景。如圖4141418所示為跟蹤視點(diǎn)的實(shí)現(xiàn)。所有這些域、eventIn事件和eventOut事件就定義了一個(gè)重力Script節(jié)點(diǎn)的接口。在initialize()方法中必須獲得Script節(jié)點(diǎn)中eventIn或field域的值,或者把java中的值返回給Script中的eventOut域。Event類的getValue()方法則返回一個(gè)ConstField類的實(shí)例。以下所示為實(shí)現(xiàn)水龍頭方向和出水大小的交互功能的代碼:DEF xuanzhuan CylinderSensor {maxAngle minAngle }DEF KSS Script {field SFNode shuilongkaiguan USE niu1field SFNode shuilongkaiguan USE niu2field SFNode liushui USE liushuifield SFNode liushuishen USE liushuisheneventIn SFBool shuishenurl [javascript:function keydown (value) {if() {=。 } ] }DEF zhuangS Script {eventIn SFTime Openfield SFNode ob USE niu1eventIn SFBool anniuOpenfield SFNode a USE kaiguanfield SFInt32 PD 1 url javascript:function Open(value){if(PD==0){ }function anniuOpen (value){ if(value){ }ROUTE TO ROUTE TO ROUTE TO ROUTE TO ROUTE TO ROUTE TO 圖55燃?xì)庠铋_關(guān)和火焰大小的的原始圖 圖56燃?xì)庠铋_關(guān)和火焰大小的的效果圖程序中第一條路由的作用是接觸傳感器anniutouch的isActive域值傳遞給腳本zhuangS的事件域anniuOpen,anniuOpen函數(shù)內(nèi)部的條件判斷語句if……else語句判斷按鈕的開啟狀態(tài),當(dāng)按鈕處于關(guān)閉時(shí)旋鈕可以旋轉(zhuǎn)但不會(huì)有火焰出現(xiàn);第二條路由作用是圓柱傳感器zhuangcyc的rotation_changed事件域傳遞域值給Transform節(jié)點(diǎn)niu1的set_rotation域;第三條作用是時(shí)間傳感器timer的cycleTime事件域傳遞域值給腳本zhuangS的事件域open;第四條路由作用是圓柱傳感器kai1的rotation_changed事件域傳遞域值給Transform節(jié)點(diǎn)niu1的rotation域;第五條作用是Transform節(jié)點(diǎn)niu1的rotation域傳遞域值給腳本KSS的事件域keydown,keydown函數(shù)內(nèi)部的條件判斷語句if……else判斷旋鈕的角度,若在火焰范圍內(nèi)顯示火焰,超出范圍火焰消失;最后一條路由的作用是圓柱觸感器kai1的isActive域值傳遞給腳本KSS的事件域shuoshen,最終完成交互控制燃?xì)庠畹拈_啟和火焰大小的功能?!疤摂M現(xiàn)實(shí)在超市及餐廳中的控制”正是實(shí)現(xiàn)了此項(xiàng)功能,該系統(tǒng)具有多種帶有交互功能的物體場(chǎng)景,操作簡(jiǎn)單,用戶只需輕輕點(diǎn)擊或旋轉(zhuǎn)便可隨意操控各種廚房用電器,還可在虛擬的超市中購物,感受虛擬購物帶來的樂趣。總結(jié)與體會(huì)此次畢業(yè)設(shè)計(jì)“虛擬現(xiàn)實(shí)在超市及餐廳中的控制”所涉及到的知識(shí)有3ds max建模, VRML實(shí)現(xiàn)動(dòng)畫與交互功能、 JavaScript控制動(dòng)態(tài)復(fù)雜場(chǎng)景等。(6)利用JavaScript創(chuàng)造出來的場(chǎng)景更逼真,比如利用JavaScript編寫而成的天空更接近感官上的真實(shí)天空。 陽化冰,. 虛擬現(xiàn)實(shí)構(gòu)造語言VRML[M].北京:北京航空航天大學(xué)出版社,2000. 7~25.[6] 董銘,[M].北京:電子工業(yè)出版社,2000. 52~63.[14] Script node eventIn event interface through a value shall receive an event receiver. Initialization, the program terminated and the event received depends on the specific structure and syntax of the programm。 Qi Liu,Alexei shape modeling extension of the Virtual Reality Modeling Language[J].Computers amp。 編程實(shí)例講解[M].北京:中國水利水電出版社,2002. 32~49.[8]我相信學(xué)好用好這方面的知識(shí)技能,將對(duì)我今后的工作生活帶來極大地幫助。同時(shí),此次的設(shè)計(jì)使我對(duì)以下幾方面的知識(shí)有所重新認(rèn)識(shí)與體會(huì)。程序中所提供的各種廚房電器和超市用品都是現(xiàn)實(shí)生活中常見的,用戶在操作上不會(huì)有任何不了解的地方,更好地讓用戶了解虛擬日常生活帶來的方便和樂趣。如圖558所示為實(shí)現(xiàn)購物車收獲物品和收銀之間切換的交互功能。} }function shuishen(value){ =1。所有事件處理完后程序就調(diào)用Script類中的eventsProcessed方法,在這兒可以加入用戶想要實(shí)現(xiàn)的動(dòng)畫交互等各種效果[15]。作為參數(shù)的fieldName、eventInName、eventOutName要與Script節(jié)點(diǎn)中定義的名稱相符合,對(duì)應(yīng)的Field 類的子類也要與Script節(jié)點(diǎn)中定義的各種Type類型一致。這種描述就是一個(gè)程序腳本,典型的為用Java或JavaScript寫成的程序腳本。 第5章 使用JavaScript構(gòu)建動(dòng)態(tài)場(chǎng)景的交互 使用JavaScript構(gòu)建動(dòng)態(tài)場(chǎng)景交互功能的實(shí)現(xiàn)Script節(jié)點(diǎn)可以描述一個(gè)由用戶制作的感應(yīng)器和內(nèi)插器。以下為實(shí)現(xiàn)抽油煙機(jī)工作功能的代碼:DEF anniutouch01 TouchSensor {}DEF anniutouch02 TouchSensor {}DEF shengyin Sound {source DEF youyan AudioClip {loop FALSE}}ROUTE TO ROUTE TO 圖414抽油煙機(jī)工作功能實(shí)現(xiàn)的效果圖在該程序中第一條路由的作用是接觸傳感器anniutouch01的touchTime事件域傳遞域值給AudioClip youyan的startTime域,開啟聲音;第二條路由作用是接觸傳感器anniutouch02的touchTime事件域傳遞域值給AudioClip youyan的stopTime域,關(guān)閉聲音,完成聲音交互。 使用VRML構(gòu)建超市點(diǎn)擊收獲物品的交互功能利用VRML里的多種傳感器還原現(xiàn)實(shí)生活中中超市購物,點(diǎn)擊相應(yīng)物品物品自動(dòng)飛入購物車中,實(shí)現(xiàn)方法原理與收款相似。 } }]ROUTE TO ROUTE TO ROUTE TO }圖45真實(shí)感天空實(shí)現(xiàn)的效果圖程序中第一條路由的作用是腳本SkyMove的coordsOUT事件域傳遞域值給_34的set_translation域;第二條路由作用是時(shí)間傳感器SkyTimer的fraction_changed事件域傳遞域值給標(biāo)量插補(bǔ)器SkyInterp的set_fraction域;第三條路由是標(biāo)量插補(bǔ)器SkyInterp的value_changed事件域傳遞域值給腳本SkyMove的floatIN域,實(shí)現(xiàn)云飄動(dòng)的動(dòng)畫。 使用VRML構(gòu)建壓力鍋的煙霧及開啟在顯示生活中壓力鍋工作中會(huì)有煙霧產(chǎn)生,通過VRML和cosmo worlds創(chuàng)建煙霧動(dòng)畫和鍋的開啟,還原真實(shí)場(chǎng)景。這些輸出描述了在何時(shí)、何地觀察者接觸到了可感知的造型。OrientationInterpolator方向插補(bǔ)器(用于對(duì)象的朝向變化,也就是隨著時(shí)間的變化,對(duì)象繞某個(gè)軸,逐漸旋轉(zhuǎn)不同的角度,體現(xiàn)出對(duì)象的方位的動(dòng)態(tài)變化。 圖310收銀場(chǎng)景動(dòng)畫應(yīng)用的原始圖 圖311收銀場(chǎng)景動(dòng)畫應(yīng)用的過程圖圖312收銀場(chǎng)景動(dòng)畫應(yīng)用的最終效果圖 第4章 使用VRML技術(shù)構(gòu)建動(dòng)畫與交互功能 使用VRML構(gòu)建動(dòng)畫與交互功能的基本語法 使用VRML構(gòu)建動(dòng)畫的基本插補(bǔ)器類型Timesensor節(jié)點(diǎn)的作用像一個(gè)時(shí)鐘,它可以被用來執(zhí)行開始、停止或者其他控制動(dòng)畫的動(dòng)作。 這些基本體靠參數(shù)來改變形態(tài)的,用這些基本體可以制作一些簡(jiǎn)單的造型。JavaScript繼承了Java語言的面向?qū)ο?、跨平臺(tái)等多想特點(diǎn),有人認(rèn)為它是為了快速、簡(jiǎn)單地編程而出現(xiàn)的微型Java語言。Script節(jié)點(diǎn)可以作為子節(jié)點(diǎn)包含在任何組節(jié)點(diǎn)中,但它不依靠于所使用的系統(tǒng),而且與子節(jié)點(diǎn)所作的選擇無關(guān)。 JavaScript概述 J