2008年4月8日 星期二

啥?Web—【X3D入門】

VRML/X3D的相關連結

  這篇文章是為了方便研究X3D而有的入門,希望各組員或有興趣的同學研究了什麼樣的心得,儘量po在xml板,畢竟po文也有算分數的,就算只是單純的心得,應該也是有分。

什麼是X3D?X3D有以下相關連結,在這邊就不多加敘述了:

  基本上這篇教學會以EasyVR論壇裡的有一位會員"雪碧+可樂"發表的12篇"X3D實戰基礎講座"文章為輔,因此我在這邊放上連結(http://www.easyvr.org/archiver/?fid-4-page-5.html),從裡面的文章列表就可以看到,不過內文的自訂語法已經失效,所以看圖會非常麻煩,所以我就私自修改他那12篇文章,並把他用成繁體,放在這邊以供下載(如原作者看到,不妥請告知)。不過蠻遺憾的是,在他那幾篇教學,最後面好幾章的圖片是沒有被貼上的……

哪裡可以看見X3D?

 首先,第一個最重要的問題,就是解決,要在哪看到X3D……因為,X3D還不是很普及,不像flash的嵌入已經是隨處可見,因此他也要像下載flash外掛一樣,去下載一個可以看X3D或VRML的瀏覽器。在上面的X3D plugin連結中有介紹很多,在這邊也不介紹了。本人是用Xj3D單獨觀看,Flux player當作firefox或ie的plugin(此處下載),讓我的瀏覽器可以看到X3D或VRML,當你灌好了Flux player後,以後開啟X3D或VRML檔案,就會像以下的圖示:



  當然你也可以在你的瀏覽器看到,只要你想辦法像flash那樣嵌入就可以了(可到此處觀看是否可以在你的瀏覽器看到VRML/X3D)。

  至於我為何還灌了Xj3D呢……這個東西既然不是瀏覽器的外掛,也沒有什麼特別的功能,那為何還要灌?主要是因為我在X3D-Edit看到的3D影像都無法即時更新我修改好的X3D程式,而Flux player也沒有看到重整的按鈕,因為XJ3D有Reload的按鈕,所以我在寫程式看結果時,比較喜歡用這個,以下是XJ3D瀏覽器所看到的圖示:



  而X3D實戰基礎講座之一裡用的是另一種瀏覽器,或許也可以參考參考該篇文章(注意,該文提供的X3D-Edit連結已經失效)。

X3D-Edit

  X3D-Edit是X3D的編輯器,這裡是X3D3.2的下載處(https://savage.nps.edu/X3D-Edit/)(下載點),要注意的是這個軟體是綠色軟體,解壓縮後點選runX3dEditWin.bat即可(這個檔案不在資料夾內)。

 以下為X3D_Edit3.2的圖示:




程式碼入門

  其實X3D的架構很單純,就是要有x3d的宣告、head element所需要的宣告、再來才是最重要的內容 Scene這個element,只要你用了X3D-Edit,new一個物件,他就會幫你產生一個以上所提到的X3D所需基本element(可參考X3D實戰基礎講座之二)。

  而所有的3D物件,都是被放在Scene這個Element下的,而不只是3D物件,可能你要敘述瀏覽者的觀賞方式(可參考X3D實戰基礎講座之六)(NavigationInfo Element),或著顯示3D物件的背景顏色(Background Element),或著顯示文字(可參考X3D實戰基礎講座之二),顯示點線面(可參考X3D實戰講座之三),顯示方塊、球或著圓錐(可參考X3D實戰講座之四),改變物件位置、旋轉角度(可參考X3D實戰講座之五),顯示燈光來源(可參考X3D實戰講座之七),顯示基本的Texture(可參考X3D實戰講座之八),顯示多媒體相關:如顯示影片、音樂……等(可參考X3D實戰講座之九),動畫事件、時間事件(可參考X3D實戰講座之十),使用者互動事件(可參考X3D實戰講座之十一)。而X3D實戰講座的最後一章本來應該有個很不錯腳本嵌入範例,可惜他的圖檔都沒有了,所以那個網頁應該幫助不大。

 由於X3D實戰講座都只是貼貼圖,沒有直接貼上xml程式碼,所以我這邊講解一下那個樹狀結構是怎麼看的,假若是長這樣的樹狀結構:



  而這個x3d程式就是代表,有一個大小為2*2*2的方塊(Box),其外表(Appearance)顏色為紅色(RGB為1,0,0)(他以半形空白區格,不是逗號區格),被放在<0,2,0>的位置(Transform)。而他的樣貌如以下圖示:






  那他的程式碼如下(P.s上上面的圖隱藏了head底下的資訊):


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.1//EN" "http://www.web3d.org/specifications/x3d-3.1.dtd">

<X3D

profile='Immersive' version='3.1'

xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance'

xsd:noNamespaceSchemaLocation='http://www.web3d.org/specifications/x3d-3.1.xsd'>

  <head>

    <meta content='*enter FileNameWithNoAbbreviations.x3d here*' name='title'/>


    <meta content='*enter description here, short-sentence summaries preferred*' name='description'/>

    <meta content='*enter name of original author here*' name='creator'/>

    <meta content='*if manually translating VRML-to-X3D, enter name of person translating here*' name='translator'/>

    <meta content='*enter date of initial version here*' name='created'/>

    <meta content='*enter date of translation here*' name='translated'/>

    <meta content='*enter date of latest revision here*' name='modified'/>


    <meta content='*enter version here, if any*' name='version'/>

    <meta content='*enter reference citation or relative/online url here*' name='reference'/>

    <meta content='*enter additional url/bibliographic reference information here*' name='reference'/>

   

<meta content='*enter reference resource here if required to support

function, delivery, or coherence of content*' name='requires'/>

    <meta content='*enter copyright information here* Example: Copyright (c) Web3D Consortium Inc. 2008' name='rights'/>


    <meta content='*enter drawing filename/url here*' name='drawing'/>

    <meta content='*enter image filename/url here*' name='image'/>

    <meta content='*enter movie filename/url here*' name='MovingImage'/>

    <meta content='*enter photo filename/url here*' name='photo'/>

    <meta content='*enter subject keywords here*' name='subject'/>

    <meta content='*enter permission statements or url here*' name='accessRights'/>


    <meta content='*insert any known warnings, bugs or errors here*' name='warning'/>

   

<meta content='*enter online Uniform Resource Identifier (URI) or

Uniform Resource Locator (URL) address for this file here*'

name='identifier'/>

    <meta content='X3D-Edit, https://savage.nps.edu/X3D-Edit' name='generator'/>

    <meta content='../../license.html' name='license'/>

   


<!-- Additional authoring resources for meta-tags:

http://www.dublincore.org/documents/dcmi-terms

http://www.dublincore.org/documents/dces

http://www.w3.org/TR/html4/struct/global.html#h-7.4.4

http://vancouver-webpages.com/META

http://vancouver-webpages.com/META/about-mk-metas2.html Additional

authoring resources for language codes:

ftp://ftp.isi.edu/in-notes/bcp/bcp47.txt


http://www.loc.gov/standards/iso639-2/langhome.html

http://www.iana.org/numbers.html#L -->

  </head>

  <Scene>

     <Transform translation="0 2 0">

      <Shape>


         <Appearance>

             <Material diffuseColor="1.0 0.0 0.0"/>

            

<!--Add ImageTexture, MovieTexture, PixelTexture, TextureTransform,

FillProperties, and/or LineProperties nodes here-->

         </Appearance>

          <Box size="2 2 2"/>


      </Shape><!-- Scene graph nodes are added here -->

      </Transform>

  </Scene>

</X3D>

如何讓3D美工軟體變成X3D

  使用maya的朋友可以使用這個外掛(http://rawkee.sourceforge.net/)

  而使用3ds max的朋友,我目前找到的Octaga似乎只能把它轉成wrl檔,而wrl檔並不是xml
base的檔案,他是VRML時代的檔案,因此不是我們要的,而且最重要的是,3ds max9就可以自己轉成wrl檔了。雖然我上網看都說wrl檔算是X3D檔案格式,但打開來後明明就不是xml base。而我後來是利用了在這邊(http://www.pinecoast.com/download.htm)下載的SwirlX3D讀進我3ds max9轉成的wrl檔,再將其另存為X3D,才可行的,不然我網路上找了好久,都沒有wrl直接變成x3D檔或著直接將3ds max做好的3D轉成x3D(找到的都無法如願達成)。

  沒記錯的話,去年的學弟就是利用了maya做好的模型,將其佈置好房間後觀看的(好像有影片、網址連結……等)。