TWaver - 專注UI技術(shù)

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

          TWaver 3D發(fā)布也有很長(zhǎng)一段時(shí)間了,相關(guān)的應(yīng)用和項(xiàng)目也做了不少,特別是3D機(jī)房,可是有些用戶反饋說(shuō)3D機(jī)房開(kāi)發(fā)起來(lái)有些費(fèi)勁,耗時(shí),3D并不像2D,雖然有時(shí)更加的直觀,但是需要考慮的問(wèn)題還挺多的,模型、材質(zhì)、效率,交互,以及視角等等。

          比如:一個(gè)機(jī)柜有可能有許許多多個(gè)3D對(duì)象組成,因此要對(duì)其進(jìn)行操作,例如:打開(kāi)機(jī)柜門(mén),添加或刪除設(shè)備,查看某個(gè)設(shè)備時(shí)讓其他的設(shè)備都虛化掉等類似功能,對(duì)于很多人來(lái)說(shuō)實(shí)現(xiàn)起來(lái)十分復(fù)雜。今天我們給大家介紹一些新的功能,我們對(duì)相關(guān)功能進(jìn)行了進(jìn)一步的封裝,并且提供了一些內(nèi)置模型,而這塊的功能我們還在進(jìn)一步的改進(jìn)中,在這里先給大家展示展示,如果各位有什么好的想法和建議,歡迎提出來(lái)。


          先來(lái)張整體的圖,全部都是通過(guò)一個(gè)json導(dǎo)入的:



          json的格式如下:

          var json = {
            
          "categories" : [
              {
                
          "id" : "building",
              },
              {
               
          "id" : "room",
              },
              {
               
          "id" : "rack",
              }
             ],
            
          "dataTypes":[
                 {
                  
          "id" : "floor_type_01",
                  
          "model":"area",
                  
          "modelParameters": {"height":5,"data":[-1559,-555,1559,-555,1559,555,-1559,555,-1559,-555],type:"area"},
                  
          "childrenSize":{"x":42,"z" : 4,"xPadding":[100,0],"zPadding": [100,0]}
                 },
                 {
                  
          "id" : "floor_type_02",
                  
          "model":"area",
                  
          "modelParameters": {"height":5,"data":[-1550,-555,1559,-555,1559,555,-1550,555,-1550,-555],type:"area"},
                      
          "childrenSize":{"x":42,"z" : 4,"xPadding":[100,0],"zPadding": [100,0]}
                  },
            
          "datas":[
                {
                  
          "id" : "b01",
                  
          "dataTypeId" : "bt01",
                  
          "position" : [-3000,0,0],
                },
                {
                  
          "id":"floor",
                  
          "parentId":"b01",
                  
          "dataTypeId" : "floor_type_01",
                  
          "position" : [1600,0,900],
                }
             ]
          }

          當(dāng)然也可以在代碼中直接往DataManager中添加,在添加之前先來(lái)簡(jiǎn)單的說(shuō)明一下數(shù)據(jù)結(jié)構(gòu)。


          數(shù)據(jù)

          目前我們這里有3種數(shù)據(jù)類型,分別是it.Category(類別,如:機(jī)柜,機(jī)房,設(shè)備…)、it.DataType(類型,如:A型號(hào)機(jī)柜,B型號(hào)機(jī)柜、A設(shè)備…,其引用的Category)、以及it.Data(資產(chǎn)數(shù)據(jù),如:機(jī)柜001,機(jī)柜002是DataType的實(shí)例):


          var dataManager = new it.DataManager();
          var category 
          = new it.Category({
                      id : 
          "rack",
                      description : 
          "機(jī)柜類別"
          });
          dataManager.addCategory(category);
           
          var dataType 
          = new it.DataType("rack_type_01");
          dataType.setStopAlarmPropagationable(
          true);
          dataType.setModel(
          'rack');
          dataType.setCategoryId(category.getId()); 
          // 給該dataType設(shè)置類別
          dataType.setModelParameters({"width":56,"height":47,"depth":110,type:"rack"});
          dataType.setSize(
          new it.Size({x : 1,z : 1}));
          dataType.setChildrenSize(
          new it.Size({y:47,yPadding : [5.545,5.545],zPadding:[0,-1.5],xPadding : [5,5]}));
          dataManager.addDataType(dataType);
           
          var data 
          = new it.Data(id);
          data.setLocation({x : z,y:
          "neg_neg",z : x});
          data.setParentId(
          null);
          data.setDataTypeId(dataType.getId());
          data.u({
          "userId""用戶ID","制造商":'A廠'});
          dataManager.addData(data);

          添加好后,DataManager會(huì)管理這些數(shù)據(jù),還可以使用快速查詢的功能進(jìn)行搜索,更重要的是它可以幫助創(chuàng)建3D對(duì)象哦,不管你的機(jī)柜多么復(fù)雜,它都可以幫你搞定。想想自己來(lái)處理3D模型和業(yè)務(wù)數(shù)據(jù)的綁定時(shí),如果3D模型比較復(fù)雜的話,那該怎么綁定,以及查找時(shí)該怎么處理等也要費(fèi)些功夫。


          顯示


          將添加的data顯示出來(lái),new一個(gè)it.SceneManager即可:

          var sceneManager = new it.SceneManager(dataManager);
          sceneManager.loadScene();
          document.body.appendChild(sceneManager.getSceneView());


          默認(rèn)功能

          其實(shí)通過(guò)這兩步就可以搞定一個(gè)簡(jiǎn)單的3D機(jī)房了,并且默認(rèn)實(shí)現(xiàn)很多功能(當(dāng)然這些默認(rèn)的功能你也可以完全去掉,“默認(rèn)”可是60年代發(fā)明的最最重要的一項(xiàng)技術(shù),應(yīng)該拿大獎(jiǎng)的,呵呵,不知到稱作“技術(shù)”是不是合適,可是現(xiàn)在沒(méi)有它很多東西都沒(méi)法運(yùn)行),如下是雙擊某個(gè)機(jī)柜和某個(gè)設(shè)備后虛化其他所有的3D對(duì)象。






          擴(kuò)展

          還有一些擴(kuò)展功能,以下簡(jiǎn)單的列出幾個(gè):


          ToolTip:
          添加幾行代碼,告訴程序你要讓哪些data有tooltip,以及該顯示出哪些信息,添加規(guī)則代碼如下:


          var tooltipRule = new it.TooltipRule({
                       categoryId : 
          "rack",
                       propertiesDesc : 
          "機(jī)柜編號(hào):id@@機(jī)柜名稱:description",
                       extInfo : {
          "test" : "test"}
          });
          var tooltipRule2 
          = new it.TooltipRule({
                       dataTypeId : 
          "room_type_01",
                       propertiesDesc : 
          "樓層編號(hào):id@@樓層名稱:description",
                       extInfo : {
          "test" : "test2"}
           });
           sceneManager.viewManager3d.tooltipManager.addTooltipRule(tooltipRule);
           sceneManager.viewManager3d.tooltipManager.addTooltipRule(tooltipRule2);



          屬性框:

          需要顯示哪些內(nèi)容也可以根據(jù)自己的需要來(lái)配置,代碼和上面的思想差不多。





          資產(chǎn)搜索:

          資產(chǎn)搜索和空間搜索都用到了上文提到的快速查詢,圖上的輸入框什么的都可以自己去實(shí)現(xiàn)。



          空間搜索:






          最后再來(lái)展示一下Billboard:



          有些功能我們還會(huì)繼續(xù)完善,今后再給大家展示,同時(shí)也歡迎大家提提意見(jiàn)!我們的郵箱:tw-service@servasoft.com

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 海盐县| 连州市| 修水县| 青神县| 古丈县| 绥芬河市| 铁力市| 西贡区| 香港| 岱山县| 石棉县| 皋兰县| 麻栗坡县| 浪卡子县| 宁蒗| 苏尼特左旗| 永嘉县| 婺源县| 江源县| 洛浦县| 惠东县| 海兴县| 志丹县| 双牌县| 托里县| 宜城市| 兴和县| 沙坪坝区| 灵石县| 德保县| 昌宁县| 抚松县| 枣阳市| 高州市| 锦屏县| 吉木乃县| 江华| 怀仁县| 秦皇岛市| 博爱县| 东明县|