TWaver - 專注UI技術

          http://twaver.servasoft.com/
          posts - 171, comments - 191, trackbacks - 0, articles - 2
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          TWaver提供了一套3D場景的開發包,用來幫助用戶快速搭建3D場景,實現3D的監控系統。這個開發包目前商推的只有Flex框架下的版本,被稱為TWaver3D for Flex。開發包提供簡單的API,用戶向TWaver的數據對象(例如Node)中設定相關的3D style,就可以構建出一套3D場景。(詳細的使用方式請參考產品包中的
          為了簡化用戶使用代碼搭建3D場景的復雜度,TWaver還提供了一個可視化的編輯工具,用于幫助用戶編輯3D場景,然后將場景轉換為可讀的xml文件。需要再現場景的時候,用戶只需要將這份圖紙載入系統,實現所見即所得的目的。用戶加載完圖紙后,就可以根據設計圖紙的時候設定的數據綁定關系,實現實時系統監控信息的綁定。

          現在就讓我給大家詳細的介紹一下如何使用Editor工具設計3D場景,如何綁定實時數據。
          第一步當然是打開Editor,加載預定義的3D模型,初始化設計環境。

          ps:Editor這個工具采用了Flex的module機制,允許用戶將預定義的3D模型資源打包成module,然后通過Editor進行動態加載到編輯環境中(擴展動態模塊的話題我們下章細聊)。

          點擊上圖的“確定”按鈕后,Editor就會在同根目錄下尋找相關module。根據Flex的設計,這些module都被打包成為swf文件,如果用戶使用HTTP服務器發布起Editor的話,需要把這些module的swf文件放在Editor.swf 的同根目錄下。
          加載成功后,在模塊中預定義的模型就會呈現在Eidtor左側的資源欄中。

          預定義的模型加載進來之后,我們就可以著手設計我們的3D場景了。Editor目前采用的是2D方式編輯,3D場景展現的方式。例如我們現在建立一個小房間,房間內設置一個機柜。

          在編輯的時候,需要強調的一點是這個里面的BID屬性,在Editor工具中,對于可以將來用于監控的對象設定了一個Business ID屬性,就是用來與客戶自己系統模型中具體設備的ID相關聯用的,這個屬性被存在了TWaver的ClientProperty里(本文后面會介紹此處的用法)。
          我們從視圖上如果看到場景設計達到目標了,就可以將場景存為xml文件,以備監控程序加載使用。

          我們將其另存成名為common.xml的圖紙。
          圖紙片段如下

          <data type='twaver.Element' ref='7' id='EF576749-1DD2-39D0-7FFD-0B7B913ABCF8'>
              
          <s n='physical.size.t3d' x='60' y='120' z='60'/>
              
          <s n='mapping.common.path.t3d'>XZRack3D1</s>
              
          <s n='mapping.type.t3d'>map6</s>
              
          <s n='scene.location.t3d' x='-148.5' y='60' z='117.5'/>
              
          <s n='both.sides.visible.t3d'>true</s>
              
          <c n='itemid'>XZ1</c>
              
          <c n='bid'>custom1</c>
          </data>
          有了這份圖紙我們就可以在監控系統載入的時候,將圖紙載入系統,直接呈現3D場景了。

           

                     

          [Embed(source="images/XZRack3D1.png")]
          public static const XZRack3D1:Class;

          private function init():void{
          twaver.threed.util.Util3D.registVector3D();
          twaver.Utils.registerImageByClass("XZRack3D1",XZRack3D1);
          var network:Network3D = new Network3D();
          network.applyHoverCamera(-180,10,5,1000);
          this.addElement(network);
          var box:ElementBox = network.elementBox;
          network.tiltAngleLowLimit = 0;
          network.tiltAngleUpLimit = 15;
          var xs:XMLSerializer3D=new XMLSerializer3D(box);
          xs.deserialize(scene);
          }

          ps:由于我們的模型中,用來渲染機柜的圖片定義成了XZRack3D1,所以我們在上面的代碼里需要把資源注冊進來。
          載入圖紙之后,我們就可以看到一個在Editor中設計完成的場景了。

          話題引申開,畢竟僅僅加載一個3D場景還不是我們的目的,我們還會希望能夠把我們的監控信息追加到3D場景上,實現我們監控系統的3D化。那么這個時候,我們前面提到的Business ID就起到作用了。

          //注冊數據類型,用來解讀bid屬性 
          twaver.SerializationSettings.registerGlobalClient("bid","String");
          ......
          var finder:QuickFinder = new QuickFinder(box,"bid","client");
          var els:Array = finder.find("custom1");
          var alarm:Alarm = new Alarm(null,els[0].id,AlarmSeverity.CRITICAL);
          box.alarmBox.add(alarm);

          那么我們就可以直接讀取映射在圖紙中的業務id屬性,用來滿足用戶動態綁定數據

          這樣我們就完成了應用程序加載預設計的圖紙,并實現數據綁定的功能了。ok,動動手指就可以把你的2D變3D,趕緊來試一下吧。

          后續文章
          如何自定義模型module;
          圖紙的二次編輯。


          評論

          # re: TWaver 3D 編輯器的使用(一)----設計3D場景以及數據綁定  回復  更多評論   

          2012-05-02 16:48 by skywalker
          通過簡化操作,倒是也不復雜太多

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 临夏市| 巴林左旗| 泗洪县| 滨州市| 卢氏县| 菏泽市| 牡丹江市| 桦川县| 全州县| 长岛县| 工布江达县| 图木舒克市| 隆回县| 玉龙| 邯郸县| 玉林市| 雷山县| 汽车| 桦南县| 通许县| 宁乡县| 大渡口区| 定边县| 仙游县| 尚志市| 宜兰市| 拉孜县| 景洪市| 沈丘县| 龙游县| 中卫市| 河源市| 丹阳市| 西藏| 商河县| 应用必备| 云梦县| 景宁| 武义县| 新蔡县| 长武县|