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

        ?

        Java3D 虛擬室內(nèi)裝飾效果展示研究

        2011-10-12 02:55:50
        關(guān)鍵詞:效果用戶

        李 蕊

        (新華職工大學(xué),天津市 300040)

        Java3D 虛擬室內(nèi)裝飾效果展示研究

        李 蕊

        (新華職工大學(xué),天津市 300040)

        目前虛擬現(xiàn)實(shí)的建模方法主要采用OpenGL,VRM L等語言進(jìn)行編程,這存在著難以掌握、不易廣泛推廣等缺點(diǎn)。而Java3D作為一種新興的三維開發(fā)應(yīng)用程序接口,則提供了高效的開發(fā)性能。結(jié)合實(shí)際應(yīng)用中的實(shí)現(xiàn)方法和步驟,對使用Java3D構(gòu)建虛擬環(huán)境,豐富三維表現(xiàn)效果,實(shí)現(xiàn)環(huán)境與用戶的交互等進(jìn)行了研究,并給出在Java3D場景中實(shí)現(xiàn)虛擬場景漫游的方法。

        Java3D;虛擬現(xiàn)實(shí);虛擬場景

        一、Java3D實(shí)現(xiàn)虛擬室內(nèi)裝飾效果實(shí)現(xiàn)方法

        1.Java3D場景結(jié)構(gòu)圖

        Java 3D實(shí)際上是Java語言在三維圖形領(lǐng)域的擴(kuò)展,Java 3D的編程和Java一樣,是面向?qū)ο蟮木幊?。Java 3D的數(shù)據(jù)結(jié)構(gòu)采用的是Scene Graphs Structure(場景圖),這一靈活的樹狀結(jié)構(gòu)與顯示列表多少有些相似之處,但運(yùn)用起來更耐用。Java3D的場景圖是DAG(Directed-acyclic Graph),即具有方向性的不對稱圖形。

        在一個Java 3D應(yīng)用程序看到的逼真三維場景從程序的角度看來,實(shí)際就是由Java 3D定義的一系列的對象,這些對象不是雜亂無序的,對象之間也不是毫無關(guān)系的。如果想讓三維圖像正常顯示,必須在這兩點(diǎn)上遵循Java 3D場景圖的規(guī)定。圖1就是Java 3D場景圖的樹結(jié)構(gòu),它由許多對象組成:

        在圖中出現(xiàn)的這些對象都實(shí)現(xiàn)了Java 3D中有重要的意義的類,從邏輯上我們將它們分為三類:

        根節(jié)點(diǎn)(Root):V irtual U niverse Object

        節(jié)點(diǎn)(N ode):Local Object、B ranch Group N odes、Behavior N ode、Shape3D N ode...

        葉子節(jié)點(diǎn)(Leaf):Appearance、Geometry...

        場景圖中有許多線和線的交匯點(diǎn),交匯點(diǎn)稱為節(jié)點(diǎn)(N ode),不管什么節(jié)點(diǎn),它都是Java 3D類的實(shí)例(Instance of Class),節(jié)點(diǎn)之間的線表示實(shí)例之間的關(guān)系。

        在場景圖中,最底層(根部)的節(jié)點(diǎn)是V irtual Universe,每一個場景圖只能有一個V irtual U ni2 verse。

        在V irtual Universe上面,就是Locale節(jié)點(diǎn),每個程序可以有一個或多個Locale,但同時只能有一個Locale處于顯示狀態(tài),就好象一個三維世界非常大,有很多個景點(diǎn),但我們同時只能在一個景點(diǎn)進(jìn)行觀察。

        每一個Locale上面擁有一個到多個B ranchGroup節(jié)點(diǎn)。所有三維形體的其位置信息(Trans2 form Group節(jié)點(diǎn))都建立在B ranchGroup節(jié)點(diǎn)之上。

        Transform Group節(jié)點(diǎn)用來設(shè)定Shape3D在V irtual U niverse中的位置。

        Spape3D節(jié)點(diǎn)是三維圖形節(jié)點(diǎn),這個節(jié)點(diǎn)的實(shí)體放映在最后的顯示畫面中,就是三維世界中的每個形體。包括正方體、球體以及任何形狀和外觀的三維形體。

        位于場景圖最下層的是兩個葉子節(jié)點(diǎn):三維體的外觀(Appearance)和幾何信息(Geometry),這兩個節(jié)點(diǎn)定義了一個三維體的顯示效果。

        V iew Platform位于圖1的另一個分枝上,與前面所有描述三維體性質(zhì)的概念不同,V iew Plat2 form和V iew都是用來定義觀察者的信息。

        上面所列的概念很多,但是對于建立一個簡單的Java 3D程序,我們至少需要了解三個概念:虛擬宇宙(V irtual Universe)、場景(Locale)、坐標(biāo)系統(tǒng)。

        圖1 Java3D場景圖

        2.構(gòu)建虛擬室內(nèi)裝飾場景

        創(chuàng)建一個Java3D程序大致有如下幾步:

        (1)創(chuàng)建一個Canvas3D對象。

        (2)創(chuàng)建一個V irtualU niverse對象。

        (3)創(chuàng)建一個Locale對象,將Locale對象關(guān)聯(lián)到V irtualU niverse對象。

        (4)創(chuàng)建V iew子圖。

        ·創(chuàng)建一個V iew Platform對象

        ·創(chuàng)建一個PhysicalBody對象

        ·創(chuàng)建一個PhysicalEnvironment對象

        ·創(chuàng)建一個V iew對象,將V iew Platform,PhysicalBody,PhysicalEnvironm ent和 Canvas3D對象關(guān)聯(lián)到V iew對象上

        (5)構(gòu)造內(nèi)容子圖。

        (6)編譯子圖。

        (7)將子圖插入到Locale節(jié)點(diǎn)。

        Java3D提供了一個Simp leUniverse類,該類實(shí)現(xiàn)了(2)-(4)步,可以大大的簡化代碼有利于使開發(fā)者將工作集中在創(chuàng)建場景內(nèi)容上。場景的內(nèi)容一般包括幾何形體、外觀、光照、聲音、行為等對象,它們按Java3D場景圖的規(guī)則組成內(nèi)容子圖。

        當(dāng)然,在實(shí)際的編程中還要對背景、材質(zhì)、燈光、行為等進(jìn)行設(shè)置。所有內(nèi)容都放在一個B ranch2 Group對象里面。Transform Group對象用來定義可以移動、旋轉(zhuǎn)、放大縮小的局部坐標(biāo)系。而且可以將多個形體放置在同一個Transform Group里面。文中實(shí)現(xiàn)的虛擬場景的重要部分程序代碼為:

        //建立環(huán)境光

        Am bientLight aLgt=new Am bientLight(alColor);

        aLgt.setInfluencingBounds(bounds);

        B rachGroup Root.addChild(aLgt);

        //建立基本模型

        Transform 3D t=new Transform3D();

        t.setTranslation(new Vector3f(0.0f,-5f,0.0f));

        Transform Group tg2=new Transform Group(t);

        tg2.addChild(new Box(10f,0.2f,10f,Box.GEN ERA TE_TEXTURE_COORDS|

        Box.GEN ERA TE_NORM ALS,app1));//地

        //顯示物體

        transform group.addChild(tg2);

        3.虛擬場景中交互功能的實(shí)現(xiàn)

        上面我們構(gòu)造出的形體大都是靜止的,是一幅幅靜態(tài)的3D場景。要想使程序更吸引人、更有趣,這就需要引入交互。在Java 3D中,交互是指程序的輸出根據(jù)用戶行為而產(chǎn)生預(yù)期的變化。Java 3D中,交互是通過Behavior類來實(shí)現(xiàn)的。

        Behavior的中文意思就是“行為”。而它在Java 3D中所描述的就是3D場景在程序運(yùn)行時的行為。Behavior類是一個抽象類,它定義了所有Behavior對象的公共同性。Java 3D中有一些預(yù)定義的Behavior類的子類,這些子類為實(shí)現(xiàn)交互編程提供了極大的方便。

        Behavior類是基于這樣的機(jī)制運(yùn)行的:程序剛運(yùn)行的時候,向場景中安裝特定的Behavior對象,該對象只接收特定的激勵(比如:鍵盤按鍵、鼠標(biāo)移動、一個定時器消息等等),然后對這一激勵作出響應(yīng)(比如改變觀察者的視角及物體的位置、顏色等等)。

        (1)鍵盤交互的方法。

        在Java 3D附帶的工具類中提供了支持該項(xiàng)功能的類——KeyNavigatorBehavior。該類通過響應(yīng)用戶的鍵盤輸入來控制觀察者的移動。用戶可以用左右鍵控制旋轉(zhuǎn),用上下鍵控制前進(jìn)和后退,用翻頁鍵控制視角的俯仰變化。

        (2)鼠標(biāo)交互的方法。

        在Java 3D的工具類中還提供了通過對鼠標(biāo)的輸入進(jìn)行交互的類,這些類可以根據(jù)不同的鼠標(biāo)輸入來平移、旋轉(zhuǎn)和縮放物體。其中M ouseRotate是用來原地旋轉(zhuǎn)物體的,用戶可以使用鼠標(biāo)左鍵來實(shí)現(xiàn),M ouseTranslate是用來在與屏幕平行的平面中移動物體,用戶可以使用鼠標(biāo)右鍵來實(shí)現(xiàn),M ouseW heelZoom是用來在與屏幕垂直的平面中移動物體,用戶可以使用鼠標(biāo)滾軸來實(shí)現(xiàn)。

        (3)利用鼠標(biāo)實(shí)現(xiàn)點(diǎn)取物體。

        以上所實(shí)現(xiàn)的交互都是對整體場景進(jìn)行的,在Java 3D中還有一種類是用來實(shí)現(xiàn)單個物體交互的,這就是利用鼠標(biāo)實(shí)現(xiàn)點(diǎn)取物體的功能。這個類就在com.sun.j3d.utils.behaviors.picking包中,導(dǎo)入了這個包就可以實(shí)現(xiàn)鼠標(biāo)點(diǎn)取對象的功能了。PickRotateBehavior允許用戶點(diǎn)取并且旋轉(zhuǎn)可視對象,用戶使用鼠標(biāo)左鍵點(diǎn)取,Pick ZoomBehavior允許用戶點(diǎn)取并縮放可視對象,用戶使用鼠標(biāo)中鍵來點(diǎn)取并縮放,Pick TranslateBehavior允許用戶點(diǎn)取并且平移可視對象,用戶使用鼠標(biāo)右鍵點(diǎn)取。然后將鼠標(biāo)點(diǎn)取功能添加到相應(yīng)物體上。

        本實(shí)例中運(yùn)用了鍵盤控制的方法實(shí)現(xiàn)了交互。具體代碼如下:

        //建立鍵盤控制

        KeyNavigatorBehavior keyNavBeh=new KeyNavigatorBehavior(transform group);

        keyNavBeh.setSchedulingBounds(new BoundingSphere(new Point3d(1.0,1.0,1.0),100.0));

        B rachGroup Root.addChild(keyNavBeh);

        通過以上代碼,構(gòu)建了一個虛擬的室內(nèi)裝飾場景。場景及場景中的物體通過材質(zhì)貼圖的設(shè)置,表現(xiàn)力更強(qiáng),觀賞性更強(qiáng),同時可以用鼠標(biāo)隨意點(diǎn)取物體,實(shí)現(xiàn)放大、縮小、旋轉(zhuǎn)、移動的功能,場景也可以由鍵盤控制,實(shí)現(xiàn)漫游效果。如圖2、圖3所示:

        圖2 場景中漫游效果

        圖3 鼠標(biāo)點(diǎn)取物體效果

        二、利用Java3D和3ds max構(gòu)建更逼真的虛擬場景

        以上的虛擬場景中的物體,都是通過Java3D中的最基本的形體,如:柱體、球體、長方體等規(guī)則體實(shí)現(xiàn)的,因而在構(gòu)建復(fù)雜物體時有一定的缺陷,也就是物體的逼真度稍差。我們?yōu)榱私鉀Q這一問題,利用了Java3D的Loader功能來導(dǎo)入其他三維軟件中生成的復(fù)雜三維圖形文件,Java3D支持的三維圖形的格式有:.obj、.3ds、.vrm l、.WRL等,通過Loader功能可以使虛擬場景更加逼真。

        下面就以導(dǎo)入.WRL文件為例,展示這一效果。我們在3ds max中制作了一個室內(nèi)效果,然后將它存為.WRL文件,然后我們進(jìn)行代碼的編寫,在實(shí)現(xiàn)導(dǎo)入效果圖的同時,實(shí)現(xiàn)用鼠標(biāo)控制,進(jìn)行漫游的功能。代碼基本與用Ja2 va3D創(chuàng)建場景相同,這里只介紹關(guān)鍵代碼部分。

        B ranchGroup b1=new v rm lLoad(“/Ford_M ustang/7.WRL”);

        objTrans.addChild(b1);//導(dǎo)入.WRL文件

        在編寫以上代碼的同時還要編寫一個Load.java的文件,才能實(shí)現(xiàn).WRL文件的成功導(dǎo)入。最終效果如圖4所示:

        通過這樣的方法,我們可以利用專業(yè)的建模軟件制作場景模型,然后再導(dǎo)入Java3D中進(jìn)行漫游、交互的設(shè)置,使場景效果更逼真,達(dá)到使參觀者身臨其境的目的。

        [1]張杰.Java3D交互式三維圖形編程[M].北京:人民郵電出版社,1999.

        [2]都志輝.Java3D編程實(shí)踐—網(wǎng)絡(luò)上的三維動畫[M].北京:清華大學(xué)出版社,2002.

        [3]何江龍,方源敏,羅志清.Java3D技術(shù)與虛擬現(xiàn)實(shí)[J].地礦測繪,2006,22(02).

        [4]黃瑩瑩,彭敏俊,許岷.基于虛擬現(xiàn)實(shí)的數(shù)字校園漫游系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].應(yīng)用科技,2005,32(05).

        [5]高新瑞.Java、Java3D與計算機(jī)幾何設(shè)計[M].北京:電子工業(yè)出版社,2007.

        A bs tra c t:The current modeling method is mainly p rogrammed by using Open GL and VRML languages,w hich is,however,hard to handle and not easy to p romote.By comparison,Java3D,as a new app lication p rogramm ing interface,p rovides efficient development p roperty.This paper introduces the author’s research on how to use Java3D to build virtual environment,to enrich 3D performance re2 sults and to realize the environment-user interaction.It also shows themeans of realizing roam ing in Ja2 va3D virtual scene.

        Ke y w o rd s:Java3D;virtual reality;virtual scene

        Research on Java 3D Virtual Interio r Deco rative Effect D isp lay

        L I Rui

        (Xinhua Staf f and Workers University,Tianjin 300040 China)

        TP319

        A

        1673-582X(2011)02-0082-05

        2010-10-15

        李蕊(1981-),女,天津市人,天津市和平區(qū)新華職工大學(xué),講師,工學(xué)碩士,主要研究虛擬現(xiàn)實(shí)技術(shù)、多媒體技術(shù)應(yīng)用、數(shù)字視頻編輯等。

        猜你喜歡
        效果用戶
        按摩效果確有理論依據(jù)
        迅速制造慢門虛化效果
        抓住“瞬間性”效果
        中華詩詞(2018年11期)2018-03-26 06:41:34
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        模擬百種唇妝效果
        Coco薇(2016年8期)2016-10-09 02:11:50
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        3D—DSA與3D—CTA成像在顱內(nèi)動脈瘤早期診斷中的應(yīng)用效果比較
        Camera360:拍出5億用戶
        100萬用戶
        国产精品亚洲一区二区三区久久| 久久免费看少妇高潮v片特黄| 521色香蕉网站在线观看| av日本一区不卡亚洲午夜| 国产在线av一区二区| 亚洲高清乱码午夜电影网| 无套内谢的新婚少妇国语播放 | 久久中文字幕亚洲精品最新 | 粉嫩被粗大进进出出视频| 91久久精品国产91久久| 亚洲精品一品二品av| 开心五月激情五月五月天| 国产69精品久久久久久久| 在线免费黄网| 亚洲av粉嫩性色av| 日本av一区二区三区在线| 国产精品 人妻互换| 国产成人AV无码精品无毒| 黄色国产一区在线观看| 亚洲综合精品亚洲国产成人| 人人妻人人妻人人片av| 麻豆婷婷狠狠色18禁久久| 97影院在线午夜| 无码91 亚洲| 精华国产一区二区三区| 国产成人亚洲精品无码av大片| 日本欧美小视频| 一区二区日本影院在线观看| 好大好爽我要高潮在线观看| 欧洲freexxxx性少妇播放| 国产精品久久久久…| 隔壁人妻欲求不满中文字幕| 国自产拍偷拍精品啪啪一区二区| 超薄肉色丝袜一区二区| 美腿丝袜一区二区三区| 日韩中文字幕在线观看一区| 99久久婷婷国产综合精品电影| 波霸影院一区二区| 亚洲啪啪色婷婷一区二区| 亚洲av一二三四区四色婷婷| 欧美日韩另类视频|