国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      將3D模型導(dǎo)入3dsMAX的方法和裝置與流程

      文檔序號:11063378閱讀:856來源:國知局
      將3D模型導(dǎo)入3dsMAX的方法和裝置與制造工藝

      本發(fā)明涉及3D模型處理領(lǐng)域,尤其涉及一種將3D模型導(dǎo)入3ds MAX的方法和裝置。



      背景技術(shù):

      3D Studio Max,通常簡稱為3d Max或3ds MAX,是Discreet公司開發(fā)的基于計(jì)算機(jī)操作系統(tǒng)的三維動畫渲染和制作軟件。3ds MAX已廣泛應(yīng)用于室內(nèi)設(shè)計(jì)、建筑設(shè)計(jì)、展覽展示設(shè)計(jì)、游戲動畫制作、廣告創(chuàng)意設(shè)計(jì)、多媒體制作、虛擬現(xiàn)實(shí)、輔助教學(xué)以及可視化表現(xiàn)等多個領(lǐng)域。

      現(xiàn)有技術(shù)中,當(dāng)設(shè)計(jì)人員需要將現(xiàn)有的3D模型導(dǎo)入3ds MAX應(yīng)用程序時,操作步驟包括:打開3ds MAX應(yīng)用程序,新建場景;點(diǎn)擊“文件”菜單;再點(diǎn)擊“文件”菜單下的“合并”按鈕;最后從本地路徑下查找所需的MAX文件;選定一個MAX文件,從上述過程可以看出,直接在3ds MAX應(yīng)用程序中導(dǎo)入現(xiàn)有的3D模型操作步驟復(fù)雜,用戶體驗(yàn)差。

      現(xiàn)有技術(shù)中存在的上述技術(shù)問題,目前尚未提出有效的解決方案。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明的目的是提供一種將3D模型導(dǎo)入3ds MAX的方法和裝置,以減少將3D模型導(dǎo)入3ds MAX時的用戶操作步驟,提升用戶體驗(yàn)。

      為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種將3D模型導(dǎo)入3ds MAX的方法。

      該方法包括:顯示3D模型對應(yīng)的實(shí)體控件;響應(yīng)于用戶對實(shí)體控件所執(zhí)行的導(dǎo)入操作,解析實(shí)體控件;若未解析到3D模型的本地存儲路徑,則根據(jù)解析到的信息獲取本地存儲路徑,并在獲取到本地存儲路徑后,調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息;若解析到本地存儲路徑,則調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息;其中,WM_DROPFILES消息中攜帶有本地存儲路徑,本地存儲路徑用于使3ds MAX應(yīng)用程序獲取到3D模型的MAX文件。

      進(jìn)一步地,顯示3D模型對應(yīng)的實(shí)體控件的步驟包括:訪問第一數(shù)據(jù)庫,將第一數(shù)據(jù)庫存儲的每個3D模型的模型描述參數(shù)轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示,其中,第一數(shù)據(jù)庫存儲有多個3D模型的模型描述參數(shù);或者訪問第二數(shù)據(jù)庫,將第二數(shù)據(jù)庫存儲的每個3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示,其中,第二數(shù)據(jù)庫存儲有多個3D模型的模型描述參數(shù)和本地存儲路徑;或者訪問第二數(shù)據(jù)庫和第一數(shù)據(jù)庫,將第二數(shù)據(jù)庫和第一數(shù)據(jù)庫進(jìn)行比對,將第二數(shù)據(jù)庫存儲的每個3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示,將第一數(shù)據(jù)庫存儲的且在第二數(shù)據(jù)庫中不存在的每個3D模型的模型描述參數(shù)轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示。

      進(jìn)一步地,根據(jù)解析到的信息獲取本地存儲路徑的步驟包括:根據(jù)解析到的信息下載3D模型的文件壓縮包;調(diào)用解壓縮工具對文件壓縮包進(jìn)行解壓以得到3D模型的文件包;存儲3D模型的文件包至預(yù)定資源庫,其中,3D模型的文件包中包括3D模型的MAX文件;以及獲取3D模型的MAX文件的路徑以得到本地存儲路徑。

      進(jìn)一步地,在獲取本地存儲路徑的步驟之后,該方法還包括:解析3D模型的MAX文件以得到3D模型的模型描述參數(shù);采用獲取到的本地存儲路徑和解析得到的3D模型的模型描述參數(shù)更新3D模型對應(yīng)的實(shí)體控件;以及將獲取到的本地存儲路徑和解析得到的3D模型的模型描述參數(shù)存儲至第二數(shù)據(jù)庫。

      進(jìn)一步地,3D模型的文件包存儲在預(yù)定資源庫中,本地存儲路徑為3D模型的MAX文件相對預(yù)定資源庫的存儲路徑。

      進(jìn)一步地,顯示3D模型對應(yīng)的實(shí)體控件的步驟包括:接收3Ds MAX應(yīng)用程序發(fā)送的3D模型的MAX文件的本地存儲路徑;按照接收到的本地存儲路徑獲取3D模型的MAX文件;解析3D模型的MAX文件以得到3D模型的模型描述參數(shù);將模型描述參數(shù)和本地存儲路徑轉(zhuǎn)換為實(shí)體控件并顯示,在顯示3D模型對應(yīng)的實(shí)體控件的步驟之后,方法還包括:存儲模型描述參數(shù)和本地存儲路徑至第二數(shù)據(jù)庫。

      進(jìn)一步地,顯示3D模型對應(yīng)的實(shí)體控件的步驟包括:響應(yīng)于用戶對本地3D模型執(zhí)行的添加操作,獲取本地3D模型的MAX文件和本地存儲路徑;解析本地3D模型的MAX文件以得到本地3D模型的模型描述參數(shù);將本地3D模型的模型描述參數(shù)和本地3D模型的本地存儲路徑轉(zhuǎn)換為實(shí)體控件并顯示,在顯示3D模型對應(yīng)的實(shí)體控件的步驟之后,方法還包括:存儲模型描述參數(shù)和本地存儲路徑至第二數(shù)據(jù)庫。

      進(jìn)一步地,導(dǎo)入操作為拖拽實(shí)體控件至3ds MAX應(yīng)用程序的顯示窗口的拖拽操作,通過DoDragDrop方法實(shí)現(xiàn)拖拽操作,調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息的步驟具體為:響應(yīng)于拖拽操作完成,調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      進(jìn)一步地,調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息的步驟包括:響應(yīng)于用戶對實(shí)體控件所執(zhí)行的導(dǎo)入操作,查找并顯示操作系統(tǒng)開啟的3ds MAX應(yīng)用程序;以及響應(yīng)于用戶對3ds MAX應(yīng)用程序的選擇操作,調(diào)用操作系統(tǒng)的API接口向用戶選擇的3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      進(jìn)一步地,向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息的步驟具體為:將本地存儲路徑在當(dāng)前進(jìn)程中初始化為一個預(yù)先定義好的結(jié)構(gòu)體;計(jì)算初始化后的結(jié)構(gòu)體所占用的內(nèi)存大?。辉?ds MAX應(yīng)用程序的進(jìn)程中分配一塊與計(jì)算得到的內(nèi)存大小同樣大的空間;將結(jié)構(gòu)體寫入分配好的空間;以及將寫入結(jié)構(gòu)體的空間作為WM_DROPFILES消息發(fā)送至3ds MAX應(yīng)用程序。

      進(jìn)一步地,在解析到本地存儲路徑或獲取到本地存儲路徑之后,調(diào)用操作系統(tǒng)的API接口之前,方法還包括:查詢本地存儲路徑下的文件;判斷本地存儲路徑下的文件是否為3D模型的MAX文件;在方法中,僅當(dāng)本地存儲路徑下的文件為3D模型的MAX文件時,才會執(zhí)行調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息的步驟。

      進(jìn)一步地,向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息包括:使用PostMessage方法向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息;或者使用SendMessage方法向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種將3D模型導(dǎo)入3ds MAX的裝置。

      該裝置包括:顯示模塊,用于顯示3D模型對應(yīng)的實(shí)體控件;解析模塊,用于響應(yīng)于用戶對實(shí)體控件所執(zhí)行的導(dǎo)入操作,解析實(shí)體控件;獲取模塊,用于在解析模塊未解析到3D模型的本地存儲路徑時,獲取本地存儲路徑;以及發(fā)送模塊,用于在解析模塊解析到本地存儲路徑時,或者在獲取模塊獲取到本地存儲路徑時,調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息,其中,WM_DROPFILES消息中攜帶有本地存儲路徑,本地存儲路徑用于使3ds MAX應(yīng)用程序獲取到3D模型的MAX文件。

      本發(fā)明通過一種將3D模型導(dǎo)入3ds MAX的方法,首先顯示3D模型對應(yīng)的實(shí)體控件給用戶,然后響應(yīng)于用戶對實(shí)體控件所執(zhí)行的導(dǎo)入操作解析實(shí)體控件,解析得到的信息中包括有該3D模型的本地存儲路徑,或者解析得到的信息中不包括有該3D模型的本地存儲路徑,但可通過間接獲取到3D模型的本地存儲路徑,無論通過哪種方式得到本地存儲路徑后,均會調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息,通過該WM_DROPFILES消息攜帶本地存儲路徑至3ds MAX應(yīng)用程序,以使3ds MAX應(yīng)用程序按照本地存儲路徑獲取3D模型的MAX文件,實(shí)現(xiàn)3D模型導(dǎo)入3ds MAX應(yīng)用程序的目的,從上述過程可以看出,在導(dǎo)入過程中,只需用戶對要導(dǎo)入的3D模型對應(yīng)的實(shí)體控件執(zhí)行導(dǎo)入操作,即可完成導(dǎo)入,無需用戶從本地路徑下查找所需的MAX文件,與現(xiàn)有技術(shù)相比,減少了用戶操作步驟,提升用戶體驗(yàn)。

      附圖說明

      圖1為本申請?zhí)峁┑牡谝粚?shí)施例的將3D模型導(dǎo)入3ds MAX的方法的流程圖;

      圖2為本申請?zhí)峁┑牡诙?shí)施例的將3D模型導(dǎo)入3ds MAX的方法的流程圖;

      圖3為本申請?zhí)峁┑牡谌龑?shí)施例的將3D模型導(dǎo)入3ds MAX的方法的流程圖;

      圖4為本申請?zhí)峁┑牡谒膶?shí)施例的將3D模型導(dǎo)入3ds MAX的方法的流程圖;

      圖5為本申請?zhí)峁┑牡谖鍖?shí)施例的將3D模型導(dǎo)入3ds MAX的方法的流程圖;

      圖6為本申請?zhí)峁┑牡诹鶎?shí)施例的將3D模型導(dǎo)入3ds MAX的方法的流程圖;

      圖7為本申請?zhí)峁┑牡谄邔?shí)施例的將3D模型導(dǎo)入3ds MAX的方法的流程圖;

      圖8為本申請?zhí)峁┑牡诎藢?shí)施例的將3D模型導(dǎo)入3ds MAX的方法的流程圖;

      圖9為本申請?zhí)峁┑牡诰艑?shí)施例的將3D模型導(dǎo)入3ds MAX的裝置的框圖。

      具體實(shí)施方式

      為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,在下面的具體實(shí)施方式中,將對本發(fā)明作進(jìn)一步詳細(xì)的說明。

      第一實(shí)施例

      該實(shí)施例提供了一種將3D模型導(dǎo)入3ds MAX的方法,該方法的執(zhí)行主體為應(yīng)用于3ds MAX應(yīng)用程序的插件,與3ds MAX應(yīng)用程序安裝于同一操作系統(tǒng),通過該插件與3ds MAX應(yīng)用程序的交互,實(shí)現(xiàn)3D模型導(dǎo)入3ds MAX應(yīng)用程序。參見圖1所示,該方法具體包括如下的步驟S102至步驟S108。

      步驟S102:顯示3D模型對應(yīng)的實(shí)體控件。

      該實(shí)體控件由3D模型的模型描述參數(shù)轉(zhuǎn)化而成,或者由3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化而成,對于前一種情況,插件可根據(jù)3D模型的模型描述參數(shù)獲取到3D模型的本地存儲路徑。

      一種實(shí)施例中,在遠(yuǎn)端(例如遠(yuǎn)程服務(wù)器一端)設(shè)置第一數(shù)據(jù)庫,該第一數(shù)據(jù)庫也即線上數(shù)據(jù)庫,該線上數(shù)據(jù)庫中存儲有多個3D模型的模型描述參數(shù)。在該步驟中,訪問該線上數(shù)據(jù)庫獲取到各個3D模型的模型描述參數(shù),然后將每個3D模型的模型描述參數(shù)轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示。

      另一種實(shí)施例中,在本地設(shè)置第二數(shù)據(jù)庫,該第二數(shù)據(jù)庫也即本地?cái)?shù)據(jù)庫,該本地?cái)?shù)據(jù)庫中存儲有多個3D模型的模型描述參數(shù)和本地存儲路徑,當(dāng)插件下載遠(yuǎn)程服務(wù)器上存儲的在線3D模型至本地后,或者插件接收本地3ds MAX應(yīng)用程序生成的3D模型后,或者插件接收到用戶從外接存儲設(shè)備中添加至本地的3D模型后,均會將3D模型的模型描述參數(shù)和本地存儲路徑存儲至本地?cái)?shù)據(jù)庫。在該步驟中,訪問該本地?cái)?shù)據(jù)庫獲取到各個3D模型的模型描述參數(shù)和本地存儲路徑,然后將每個3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示。

      優(yōu)選地,該本地?cái)?shù)據(jù)庫采用SQLite數(shù)據(jù)庫,占用資源低,內(nèi)存小,并且方便用戶對數(shù)據(jù)庫進(jìn)行管理。

      第三種實(shí)施例中,同時在遠(yuǎn)端設(shè)置上述第一數(shù)據(jù)庫,在本地設(shè)置上述第二數(shù)據(jù)庫,在該步驟中,同時訪問所述第二數(shù)據(jù)庫和所述第一數(shù)據(jù)庫,將兩數(shù)據(jù)庫進(jìn)行比對,在顯示實(shí)體控件時,將第二數(shù)據(jù)庫存儲的每個3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示,將第一數(shù)據(jù)庫存儲的且在第二數(shù)據(jù)庫中不存在的每個3D模型的模型描述參數(shù)轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示。

      在上述三種實(shí)施例的任一實(shí)施例中,進(jìn)一步地,用戶通過3Ds MAX應(yīng)用程序生成新的3D模型后,可發(fā)送至插件進(jìn)行統(tǒng)一管理,此時,該步驟S102還可包括如下的步驟:接收3Ds MAX應(yīng)用程序發(fā)送的3D模型的MAX文件的本地存儲路徑,然后按照接收到的本地存儲路徑獲取3D模型的MAX文件,解析3D模型的MAX文件以得到3D模型的模型描述參數(shù),將模型描述參數(shù)和本地存儲路徑轉(zhuǎn)換為實(shí)體控件并顯示。

      進(jìn)一步地,用戶將外接存儲設(shè)備或者遠(yuǎn)程存儲設(shè)備(例如云盤)等位置的3D模型獲取到本地后,可添加至插件進(jìn)行統(tǒng)一管理,此時,該步驟S102還可包括如下的步驟:響應(yīng)于用戶對本地3D模型執(zhí)行的添加操作,獲取本地3D模型的MAX文件和本地存儲路徑,解析本地3D模型的MAX文件以得到本地3D模型的模型描述參數(shù),將本地3D模型的模型描述參數(shù)和本地3D模型的本地存儲路徑轉(zhuǎn)換為實(shí)體控件并顯示。

      3D模型的模型描述參數(shù)可包括3D模型的標(biāo)識信息,例如3D模型ID、名稱等,優(yōu)選地,還可包括3D模型的屬性信息,例如縮略圖地址、版本信息、點(diǎn)面數(shù)信息、貼圖信息、關(guān)鍵字描述和/或壓縮包大小等。轉(zhuǎn)化后的實(shí)體控件上顯示有3D模型的標(biāo)識信息,從而用戶能夠從3D模型的實(shí)體控件上區(qū)分和識別出一個具體的實(shí)體控件對應(yīng)的是哪個3D模型。

      優(yōu)選地,通過縮略圖地址獲取到3D模型的縮略圖,使得轉(zhuǎn)化后的實(shí)體控件上顯示有縮略圖,從而用戶能夠直觀的識別出3D模型,在導(dǎo)入3D模型之前,用戶通過插件的顯示窗口內(nèi)即可對3D模型進(jìn)行預(yù)覽,與現(xiàn)有技術(shù)中在本地路徑下逐層查找MAX文件進(jìn)行預(yù)覽相比,極大地提升了用戶體驗(yàn)。

      優(yōu)選地,轉(zhuǎn)化后的實(shí)體控件上還顯示有3D模型的版本信息,從而用戶能夠選擇適合已安裝的3ds MAX應(yīng)用程序的3D模型。

      步驟S104:響應(yīng)于用戶對實(shí)體控件所執(zhí)行的導(dǎo)入操作,解析實(shí)體控件。

      通過上述步驟S102,插件一般顯示有多個實(shí)體控件,用戶選擇要導(dǎo)入3ds MAX的3D模型對應(yīng)的實(shí)體控件,并對其執(zhí)行導(dǎo)入操作后,插件解析被用戶操作的實(shí)體控件。對于由模型描述參數(shù)轉(zhuǎn)化而成的實(shí)體控件,通過解析實(shí)體控件,即可獲得該實(shí)體控件對應(yīng)的3D模型的模型描述參數(shù);對于由模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化而成的實(shí)體控件,通過解析實(shí)體控件,即可獲得該實(shí)體控件對應(yīng)的3D模型的模型描述參數(shù)和本地存儲路徑。

      導(dǎo)入操作為預(yù)定的操作,例如用鼠標(biāo)雙擊實(shí)體控件的操作,或者選中實(shí)體控件將實(shí)體控件拖入3ds MAX應(yīng)用程序窗口的操作,或者單擊實(shí)體控件,在顯示的菜單中選擇“導(dǎo)入”的操作等,本申請對此并不做限定。

      步驟S106:若未解析到3D模型的本地存儲路徑,則根據(jù)解析到的信息獲取本地存儲路徑,并在獲取到本地存儲路徑后,執(zhí)行下述步驟S108。

      若解析到本地存儲路徑,則跳過上述步驟S106,直接執(zhí)行下述步驟S108。

      對于未解析到3D模型的本地存儲路徑的情況,通過解析到的信息來獲取本地存儲路徑,例如,對于3D模型的文件包存儲于預(yù)定的運(yùn)營服務(wù)器端、還未下載到本地的情況,當(dāng)用戶對實(shí)體控件進(jìn)行導(dǎo)入時,顯示窗口詢問用戶是否要下載,當(dāng)用戶確定要下載時,先通過解析到的信息下載3D模型的文件包,然后將下載的文件包存儲至本地,即可得到該3D模型的本地存儲路徑;又如,對于3D模型的文件包存儲于遠(yuǎn)程存儲設(shè)備中時,當(dāng)用戶對實(shí)體控件進(jìn)行導(dǎo)入時,顯示窗口詢問用戶是否要登陸遠(yuǎn)程存儲設(shè)備進(jìn)行獲取,當(dāng)用戶確定要獲取時,先登陸至遠(yuǎn)程存儲設(shè)備,并在遠(yuǎn)程存儲設(shè)備中通過解析到的信息查詢并下載3D模型的文件包,然后將下載的文件包存儲至本地,即可得到該3D模型的本地存儲路徑。

      本申請并不限定于此,只要能夠根據(jù)解析到的信息獲取到本地存儲路徑即可,均在本申請的保護(hù)范圍之內(nèi)。

      步驟S108:調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      本申請中,無論解析得到本地存儲路徑,還是根據(jù)解析得到的信息獲取到本地存儲路徑,總之在得到本地存儲路經(jīng)之后,均通過WM_DROPFILES消息將本地存儲路徑發(fā)送至3ds MAX應(yīng)用程序。3ds MAX應(yīng)用程序從WM_DROPFILES消息中獲取到本地存儲路徑后,能夠根據(jù)該本地存儲路徑進(jìn)一步獲取到3D模型的MAX文件,其中,MAX文件為后綴為.max的模型文件,或者為MaxScript腳本文件,3ds MAX應(yīng)用程序獲取到MAX文件后也即完成對max文件的調(diào)用。

      具體地,在發(fā)送WM_DROPFILES消息時,可以使用PostMessage方法向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息,PostMessage負(fù)責(zé)將消息放到消息隊(duì)列中并立即返回?;蛘撸部梢允褂肧endMessage方法向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息,SendMessage在完成消息發(fā)送后,等到消息處理完成后返回。

      采用該實(shí)施例提供的將3D模型導(dǎo)入3ds MAX的方法,從用戶操作步驟上來講,只需用戶對要導(dǎo)入的3D模型對應(yīng)的實(shí)體控件執(zhí)行預(yù)定的導(dǎo)入操作,3ds MAX應(yīng)用程序的插件自動與3ds MAX應(yīng)用程序交互,將3D模型的MAX文件的本地存儲路徑發(fā)送給3ds MAX應(yīng)用程序,即可完成3D模型的導(dǎo)入,與現(xiàn)有技術(shù)相比,無需用戶從本地路徑下逐層查找所需的MAX文件,減少用戶操作步驟,提升用戶體驗(yàn)。

      在一種優(yōu)選實(shí)施例中,存入本地的3D模型的文件包,包括從遠(yuǎn)程服務(wù)器獲取的3D模型的文件包、由3ds MAX應(yīng)用程序生成的3D模型的文件包、從外接存儲設(shè)備中導(dǎo)入的3D模型的文件包,均將文件包存入本地的預(yù)定資源庫中,3D模型的本地存儲路徑設(shè)置為3D模型的MAX文件相對該預(yù)定資源庫的存儲路徑,例如,預(yù)定資源庫的物理路徑為“D/3ds MAX/資源庫”,3D模型的MAX文件的物理存儲路徑為“D/3ds MAX/資源庫/交通工具類/汽車/002.max”,則設(shè)置本地存儲路徑為“交通工具類/汽車/002.max”。

      采用該種相對路徑的方式,一種情況下,可將插件獲取本地存儲路徑后,將本地存儲路徑和預(yù)定資源庫的物理路徑組合,得到3D模型的MAX文件的實(shí)際物理存儲路徑,將該物理存儲路徑,攜帶在WM_DROPFILES消息中發(fā)送至3ds MAX應(yīng)用程序;另一種情況下,也可直接將本地存儲路徑攜帶在WM_DROPFILES消息中發(fā)送至3ds MAX應(yīng)用程序,由3ds MAX應(yīng)用程序?qū)M_DROPFILES消息中的本地存儲路徑和預(yù)定資源庫的物理路徑組合獲取3D模型的MAX文件。

      采用該優(yōu)選實(shí)施例,當(dāng)預(yù)定資源庫整體遷移時,例如從C盤移動到D盤,或不同電腦間的轉(zhuǎn)移,無需改動實(shí)體控件,只需在插件或3ds MAX應(yīng)用程序中重新設(shè)置預(yù)定資源庫的物理路徑即可。

      第二實(shí)施例

      該實(shí)施例為在上述第一實(shí)施例基礎(chǔ)上提供的一種將3D模型導(dǎo)入3ds MAX的方法的優(yōu)選實(shí)施例,該優(yōu)選實(shí)施例中方法的執(zhí)行主體與上述第一實(shí)施例方法的執(zhí)行主體相同。在該優(yōu)選實(shí)施例中,用戶先從遠(yuǎn)程服務(wù)器下載3D模型,然后再導(dǎo)入3ds MAX應(yīng)用程序,具體參見圖2所示,該方法包括如下的步驟S202至步驟S218。

      步驟S202:響應(yīng)于用戶對某個分類執(zhí)行的顯示操作,訪問位于服務(wù)器的線上數(shù)據(jù)庫。

      服務(wù)器在滿足預(yù)定條件時,主動向安裝插件的客戶端下發(fā)類別信息;也可以為客戶端響應(yīng)于用戶的操作,向服務(wù)器請求3D模型的類別信息后,服務(wù)器響應(yīng)請求而下發(fā)類別信息,在一種實(shí)施例中,在插件安裝于客戶端后首次打開,并且當(dāng)前處于連網(wǎng)狀態(tài)時,插件自動發(fā)送模型分類請求至服務(wù)器,服務(wù)器接收到模型分類請求后,下發(fā)3D模型的多個分類的類別信息,例如,設(shè)置兩級分類,一級分類為動物、植物、人物、戶外建筑、交通工具等分類,二級分類是在一級分類下進(jìn)一步的分類,如動物分類下又分為爬行類、水生類、飛行類、其它等分類。插件接收到上述類別信息后,將一級分類顯示在第一級窗體,二級分類顯示在第二級窗體。

      插件在接收到類別信息后顯示多個分類,用戶可對任意一個分類執(zhí)行顯示操作。當(dāng)用戶對某一個分類執(zhí)行顯示操作后,插件響應(yīng)該操作訪問線上數(shù)據(jù)庫,獲取信息實(shí)現(xiàn)顯示。

      設(shè)置線上數(shù)據(jù)庫存儲有所有類別的3D模型的模型描述參數(shù),在訪問該線上數(shù)據(jù)庫時,獲取用戶執(zhí)行顯示操作的分類下的全部3D模型的模型描述參數(shù)。

      模型描述參數(shù)包括3D模型ID、名稱、縮略圖地址、版本信息、點(diǎn)面數(shù)信息、貼圖信息、關(guān)鍵字描述和壓縮包大小等。

      優(yōu)選地,每個3D模型的模型描述參數(shù)均被封裝為JSON數(shù)據(jù),例如一個鴕鳥3d模型的模型描述參數(shù)如下:

      步驟S204:將從線上數(shù)據(jù)庫獲取的3D模型的模型描述參數(shù)轉(zhuǎn)換為實(shí)體控件并顯示。

      插件將接收到的各個3D模型的模型描述參數(shù)均轉(zhuǎn)換為一一對應(yīng)的實(shí)體控件并顯示給用戶。

      步驟S206:響應(yīng)于用戶對實(shí)體控件所執(zhí)行的下載操作,下載3D模型的文件壓縮包。

      具體地,用戶從顯示的實(shí)體控件中找到要獲取的3D模型后,點(diǎn)擊該實(shí)體控件。點(diǎn)擊后顯示可針對該實(shí)體控件所進(jìn)行的操作,例如顯示一個下拉菜單,菜單中包括“獲取”選項(xiàng),用戶點(diǎn)擊該“獲取”選項(xiàng)時,也即對該實(shí)體控件執(zhí)行了下載操作;或者,在實(shí)體控件上設(shè)置“下載”按鈕,用戶點(diǎn)擊“下載按鈕”時,也即對該實(shí)體控件執(zhí)行了下載操作。此時,插件響應(yīng)于該操作,解析實(shí)體控件,得到3D模型的模型描述參數(shù),然后將解析得到的模型描述參數(shù)攜帶在向服務(wù)器發(fā)送的下載3D模型的請求中,例如3D模型名稱,3D模型ID號等,服務(wù)器解析該請求獲取到模型描述參數(shù),然后將對應(yīng)于模型描述參數(shù)的3D模型的下載地址下發(fā)至插件,插件請求該下載地址,可獲得3D模型的文件壓縮包。

      步驟S208:調(diào)用解壓縮工具對文件壓縮包進(jìn)行解壓以得到3D模型的文件包。

      插件在獲得3D模型的文件包后,自動調(diào)用解壓縮工具對文件壓縮包解壓縮,解壓縮后得到3D模型的文件包。例如,調(diào)用ICSharpCode.SharpZipLib實(shí)現(xiàn)對文件壓縮包進(jìn)行解壓縮。

      步驟S210:存儲3D模型的文件包至預(yù)定資源庫。

      在插件中設(shè)置好預(yù)定資源庫的物理存儲路徑,將解壓縮后得到的3D模型的文件包存儲至預(yù)定資源庫,其中,3D模型的文件包中包括3D模型的MAX文件。

      步驟S212:解析3D模型的MAX文件以得到3D模型的模型描述參數(shù),獲取3D模型的MAX文件的路徑以得到本地存儲路徑。

      步驟S214:采用解析得到的模型描述參數(shù)和獲取到的本地存儲路徑更新3D模型對應(yīng)的實(shí)體控件。

      優(yōu)選地,在更新3D模型對應(yīng)的實(shí)體控件后,插件解析該實(shí)體控件時可得到3D模型的模型描述參數(shù)和本地存儲路徑。同時,還可修改實(shí)體控件的顯示方式,例如,對于實(shí)體控件上顯示有縮略圖的情況,可以將縮略圖的顏色由灰色修改為綠色,從而用戶能夠從實(shí)體控件的顯示方式上判斷出該實(shí)體控件對應(yīng)的3D模型是否已經(jīng)被下載到本地。

      步驟S216:響應(yīng)于用戶對實(shí)體控件所執(zhí)行的導(dǎo)入操作,解析實(shí)體控件。

      具體地,用戶從顯示的實(shí)體控件中找到要導(dǎo)入的3D模型后,點(diǎn)擊該實(shí)體控件。點(diǎn)擊后顯示可針對該實(shí)體控件所進(jìn)行的操作,例如顯示一個下拉菜單,菜單中包括“導(dǎo)入”選項(xiàng),用戶點(diǎn)擊該“導(dǎo)入”選項(xiàng)時,也即對該實(shí)體控件執(zhí)行了導(dǎo)入操作,此時,插件響應(yīng)于該操作,解析實(shí)體控件獲得3D模型的模型描述參數(shù)和本地存儲路徑。下述步驟S218參照上述第一實(shí)施例,此處不再贅述。

      步驟S218:調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      采用該實(shí)施例提供的將3D模型導(dǎo)入3ds MAX的方法,能夠?qū)⒃诰€3D模型導(dǎo)入3ds MAX應(yīng)用程序,同時,基于對在線3D模型資源進(jìn)行的集中整合,用戶獲取一個在線3D模型時,只需在插件中找到該在線3D模型所屬的分類,然后插件會自動顯示該分類下的3D模型的實(shí)體控件,用戶選定要下載的3D模型后,即可完成下載和解壓縮,與現(xiàn)有技術(shù)中在大量的在線信息中搜索在線3D模型相比,節(jié)省用戶時間,進(jìn)一步提升用戶體驗(yàn)。

      第三實(shí)施例

      該實(shí)施例為在上述第一實(shí)施例基礎(chǔ)上提供的一種將3D模型導(dǎo)入3ds MAX的方法的優(yōu)選實(shí)施例,該優(yōu)選實(shí)施例中方法的執(zhí)行主體與上述第一實(shí)施例方法的執(zhí)行主體相同,在該優(yōu)選實(shí)施例中,用戶將3Ds MAX應(yīng)用程序生成的3D模型發(fā)送至插件,再由插件導(dǎo)入3Ds MAX應(yīng)用程序,該實(shí)施例的應(yīng)用場景包括用戶在第一時間操作3Ds MAX應(yīng)用程序生成的3D模型后先發(fā)送至插件,然后在第二時間再由插件導(dǎo)入3Ds MAX應(yīng)用程序進(jìn)行進(jìn)一步操作。還包括用戶在操作第一3Ds MAX應(yīng)用程序生成的3D模型后先發(fā)送至插件,然后再由插件導(dǎo)入第二3Ds MAX應(yīng)用程序進(jìn)行進(jìn)一步操作。具體參見圖3所示,該方法包括如下的步驟S302至步驟S314。

      步驟S302:接收3Ds MAX應(yīng)用程序發(fā)送的3D模型的MAX文件的本地存儲路徑。

      用戶可以將正在制作或打開的3D模型通過“另存為”等操作,將3D模型的文件包存入預(yù)定資源庫,同時,3Ds MAX應(yīng)用程序響應(yīng)該操作將3D模型的MAX文件的本地存儲路徑發(fā)送至插件,實(shí)現(xiàn)將3Ds MAX應(yīng)用程序生成的3D模型添加到本插件。

      步驟S304:按照接收到的本地存儲路徑獲取3D模型的MAX文件。

      插件接收到3Ds MAX應(yīng)用程序發(fā)送的本地存儲路徑后,按照該路徑可獲取到3D模型的MAX文件,如上述實(shí)施例一指出的,該本地存儲路徑為3D模型的MAX文件相對本地預(yù)定資源庫的存儲路徑,插件在接收到本地存儲路徑后,再組合本地預(yù)定資源庫的物理路徑,進(jìn)而可獲得3D模型的MAX文件。

      步驟S306:解析3D模型的MAX文件以得到3D模型的模型描述參數(shù)。

      步驟S308:將3D模型的模型描述參數(shù)轉(zhuǎn)換為實(shí)體控件并顯示。

      步驟S310:將3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)換為實(shí)體控件并顯示。

      通過上述的各個步驟,完成將3Ds MAX應(yīng)用程序生成的3D模型添加到本插件的過程,下述步驟S312和步驟S314,實(shí)現(xiàn)將3Ds MAX應(yīng)用程序生成的3D模型的反向?qū)胫?Ds MAX應(yīng)用程序,該導(dǎo)入過程與上述第二實(shí)施例的步驟S216和步驟S218相同,此處不再贅述。例如,將用戶的項(xiàng)目文件拆分成獨(dú)立的模型文件,作為一個3D模型添加到本插件后,后續(xù)可通過下述步驟S312和步驟S314再次調(diào)用,方便用戶對3D模型的使用和管理。

      步驟S312:響應(yīng)于用戶對實(shí)體控件所執(zhí)行的導(dǎo)入操作,解析實(shí)體控件。

      步驟S314:調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      第四實(shí)施例

      該實(shí)施例為在上述第一實(shí)施例基礎(chǔ)上提供的一種將3D模型導(dǎo)入3ds MAX的方法的優(yōu)選實(shí)施例,該優(yōu)選實(shí)施例中方法的執(zhí)行主體與上述第一實(shí)施例方法的執(zhí)行主體相同,在該優(yōu)選實(shí)施例中,用戶對實(shí)體控件進(jìn)行拖拽操作,即可完成3D模型的導(dǎo)入,具體參見圖4所示,該方法包括如下的步驟S402至步驟S408。

      步驟S402:顯示3D模型對應(yīng)的實(shí)體控件。

      其中,實(shí)體控件由3D模型的模型描述參數(shù)或者由3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化而成,具體顯示過程參照本申請各個實(shí)施例的相關(guān)部分,該處不再贅述。

      步驟S404:響應(yīng)于用戶拖拽實(shí)體控件至3ds MAX應(yīng)用程序的顯示窗口的拖拽操作,解析實(shí)體控件。

      用戶從顯示的實(shí)體控件中找到要導(dǎo)入的3D模型后,選中該實(shí)體控件,實(shí)施拖拽操作,優(yōu)選地,通過DoDragDrop方法實(shí)現(xiàn)拖拽操作,當(dāng)用戶完成拖放操作時,觸發(fā)插件執(zhí)行該步驟S404。

      解析實(shí)體控件后的導(dǎo)入過程參見各個實(shí)施例的相關(guān)部分,此處不再贅述。

      步驟S406:若未解析到3D模型的本地存儲路徑,則根據(jù)解析到的模型描述參數(shù)獲取本地存儲路徑,并在獲取到本地存儲路徑后,執(zhí)行下述步驟S408。

      若解析到本地存儲路徑,則跳過該步驟S406,直接執(zhí)行下述步驟S408。

      步驟S408:響應(yīng)于拖拽操作完成,調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      第五實(shí)施例

      該實(shí)施例為在上述第一實(shí)施例基礎(chǔ)上提供的一種將3D模型導(dǎo)入3ds MAX的方法的優(yōu)選實(shí)施例,該優(yōu)選實(shí)施例中方法的執(zhí)行主體與上述第一實(shí)施例方法的執(zhí)行主體相同,在該優(yōu)選實(shí)施例中,插件自動查找已經(jīng)開啟的3ds MAX應(yīng)用程序,并將3D模型導(dǎo)入,具體參見圖5所示,該方法包括如下的步驟S502至步驟S510。

      步驟S502:顯示3D模型對應(yīng)的實(shí)體控件。

      其中,實(shí)體控件由3D模型的模型描述參數(shù)或者由3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化而成,具體顯示過程參照本申請各個實(shí)施例的相關(guān)部分,該處不再贅述。

      步驟S504:響應(yīng)于用戶對實(shí)體控件所執(zhí)行的導(dǎo)入操作,解析實(shí)體控件,。

      用戶從顯示的實(shí)體控件中找到要導(dǎo)入的3D模型后,點(diǎn)擊該實(shí)體控件,從顯示的菜單中選擇“發(fā)送至MAX”選項(xiàng)時,觸發(fā)插件執(zhí)行該步驟。

      解析實(shí)體控件后的導(dǎo)入過程參見各個實(shí)施例的相關(guān)部分,此處不再贅述。

      步驟S506:若未解析到3D模型的本地存儲路徑,則根據(jù)解析到的模型描述參數(shù)獲取本地存儲路徑,并在獲取到本地存儲路徑后,執(zhí)行下述步驟S508。

      若解析到本地存儲路徑,則跳過該步驟S506,直接執(zhí)行下述步驟S508。

      步驟S508:查找和顯示操作系統(tǒng)開啟的3ds MAX應(yīng)用程序。

      插件通過查找當(dāng)前系統(tǒng)所開啟的3ds MAX程序,并將相應(yīng)標(biāo)題展示給用戶選擇。當(dāng)用戶單擊某一標(biāo)題時,插件響應(yīng)該選擇操作,執(zhí)行下述步驟S510,實(shí)現(xiàn)插件與3ds MAX應(yīng)用程序之間的交互操作,將3D模型發(fā)送至3ds MAX應(yīng)用程序,完成導(dǎo)入。

      步驟S510:響應(yīng)于用戶對3ds MAX應(yīng)用程序的選擇操作,調(diào)用操作系統(tǒng)的API接口向用戶選擇的3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      第六實(shí)施例

      該實(shí)施例為在上述第一實(shí)施例基礎(chǔ)上提供的一種將3D模型導(dǎo)入3ds MAX的方法的優(yōu)選實(shí)施例,該優(yōu)選實(shí)施例中方法的執(zhí)行主體與上述第一實(shí)施例方法的執(zhí)行主體相同,在該優(yōu)選實(shí)施例中,插件通過結(jié)構(gòu)體的方式實(shí)現(xiàn)與3ds MAX應(yīng)用程序的交互,具體參見圖6所示,該方法包括如下的步驟S602至步驟S622。

      步驟S602:顯示3D模型對應(yīng)的實(shí)體控件。

      其中,實(shí)體控件由3D模型的模型描述參數(shù)或者由3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化而成,具體顯示過程參照本申請各個實(shí)施例的相關(guān)部分,該處不再贅述。

      步驟S604:響應(yīng)于用戶對實(shí)體控件所執(zhí)行的導(dǎo)入操作,解析實(shí)體控件。

      該導(dǎo)入操作可以為上述第四實(shí)施例或者上述第五實(shí)施例中描述的操作,此處不再贅述。

      步驟S606:若未解析到3D模型的本地存儲路徑,則根據(jù)解析到的模型描述參數(shù)獲取本地存儲路徑,并在獲取到本地存儲路徑后,執(zhí)行下述步驟S608。

      若解析到本地存儲路徑,則跳過該步驟S606,直接執(zhí)行下述步驟S608。

      步驟S608:查詢本地存儲路徑下的文件。

      步驟S610:判斷本地存儲路徑下的文件是否為3D模型的MAX文件。

      步驟S612:當(dāng)本地存儲路徑下的文件為3D模型的MAX文件時,將本地存儲路徑在當(dāng)前進(jìn)程中初始化為一個預(yù)先定義好的結(jié)構(gòu)體。

      步驟S614:當(dāng)本地存儲路徑下的文件不為3D模型的MAX文件時,返回MAX文件不存在的提示信息,流程結(jié)束。

      通過上述步驟S608至步驟S614,在3D模型導(dǎo)入3ds MAX應(yīng)用程序之前,會對本地存儲路徑下的文件進(jìn)行篩查,以確保3D模型存在并真實(shí)可用,減少后續(xù)不必要的步驟。

      步驟S616:計(jì)算初始化后的結(jié)構(gòu)體所占用的內(nèi)存大小。

      步驟S618:在3ds MAX應(yīng)用程序的進(jìn)程中分配一塊與計(jì)算得到的內(nèi)存大小同樣大的空間。

      步驟S620:將結(jié)構(gòu)體寫入分配好的空間。

      步驟S622:調(diào)用操作系統(tǒng)的API接口,將寫入結(jié)構(gòu)體的空間作為WM_DROPFILES消息發(fā)送至3ds MAX應(yīng)用程序。

      第七實(shí)施例

      該實(shí)施例為在上述第一實(shí)施例基礎(chǔ)上提供的一種將3D模型導(dǎo)入3ds MAX的方法的優(yōu)選實(shí)施例,該優(yōu)選實(shí)施例中方法的執(zhí)行主體與上述第一實(shí)施例方法的執(zhí)行主體相同,在該優(yōu)選實(shí)施例中,用戶將位于本地的3D模型添加至插件,再由插件導(dǎo)入3Ds MAX應(yīng)用程序,該實(shí)施例的應(yīng)用場景包括用戶將外接存儲設(shè)備中的3D模型拷貝至本地后,將其添加至插件,再由插件導(dǎo)入3Ds MAX應(yīng)用程序,具體參見圖7所示,該方法包括如下的步驟S702至步驟S710。

      步驟S702:響應(yīng)于用戶對本地3D模型執(zhí)行的添加操作,獲取本地3D模型的MAX文件和本地存儲路徑。

      用戶可以將位于本地的3D模型通過“從插件查找”或“將3D模型的文件包直接拖拽至插件”等執(zhí)行添加操作,插件響應(yīng)該操作獲取該本地3D模型的MAX文件和MAX文件的本地存儲路徑。

      步驟S704:解析本地3D模型的MAX文件以得到本地3D模型的模型描述參數(shù);

      步驟S706:將本地3D模型的模型描述參數(shù)和本地3D模型的本地存儲路徑轉(zhuǎn)換為實(shí)體控件并顯示。

      在插件中顯示實(shí)體控件后,用戶通過操作該實(shí)體控件可實(shí)現(xiàn)3D模型至3Ds MAX應(yīng)用程序的導(dǎo)入,見下述步驟S708至步驟S710。該導(dǎo)入過程與上述第二實(shí)施例和第三實(shí)施例的相關(guān)步驟相同,此處不再贅述。

      步驟S708:響應(yīng)于用戶對實(shí)體控件所執(zhí)行的導(dǎo)入操作,解析實(shí)體控件。

      步驟S710:調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      第八實(shí)施例

      該實(shí)施例為在上述第一實(shí)施例基礎(chǔ)上提供的一種將3D模型導(dǎo)入3ds MAX的方法的優(yōu)選實(shí)施例,該優(yōu)選實(shí)施例中方法的執(zhí)行主體與上述第一實(shí)施例方法的執(zhí)行主體相同,在該優(yōu)選實(shí)施例中,顯示實(shí)體控件時同時訪問在線數(shù)據(jù)庫和本地?cái)?shù)據(jù)庫,具體參見圖8所示,該方法包括如下的步驟S802至步驟S812。

      步驟S802:響應(yīng)于用戶對某個分類執(zhí)行的顯示操作,訪問位于服務(wù)器的線上數(shù)據(jù)庫和位于本地的本地?cái)?shù)據(jù)庫。

      其中,線上數(shù)據(jù)庫與本地?cái)?shù)據(jù)庫的相關(guān)描述見上述第一實(shí)施例。其中,在本地?cái)?shù)據(jù)庫中存儲的3D模型的模型描述參數(shù)和本地存儲路徑,可以是經(jīng)上述第二實(shí)施例中步驟S206至步驟S212后,將得到的模型描述參數(shù)和本地存儲路徑存儲至本地?cái)?shù)據(jù)庫中;也可以是經(jīng)上述第三實(shí)施例中步驟S302至步驟S306后,將得到的模型描述參數(shù)和本地存儲路徑存儲至本地?cái)?shù)據(jù)庫中;也可以為是經(jīng)上述第七實(shí)施例中步驟S702至步驟S704后,將得到的模型描述參數(shù)和本地存儲路徑存儲至本地?cái)?shù)據(jù)庫中。

      步驟S804:將線上數(shù)據(jù)庫和本地?cái)?shù)據(jù)庫進(jìn)行比對。

      步驟S806:將本地?cái)?shù)據(jù)庫存儲的每個3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示,將線上數(shù)據(jù)庫存儲的且在本地?cái)?shù)據(jù)庫中不存在的每個3D模型的模型描述參數(shù)轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示。

      步驟S808:響應(yīng)于用戶對所述實(shí)體控件所執(zhí)行的導(dǎo)入操作,解析所述實(shí)體控件。

      其中,執(zhí)行的導(dǎo)入操作可以為上述第四實(shí)施例中描述的導(dǎo)入操作,也可以是上述第五實(shí)施例中描述的導(dǎo)入操作。

      步驟S810:若未解析到3D模型的本地存儲路徑,則根據(jù)解析到的信息獲取本地存儲路徑,并在獲取到本地存儲路徑后,執(zhí)行下述步驟S812。

      當(dāng)用戶執(zhí)行導(dǎo)入操作的實(shí)體控件是由3D模型的模型描述參數(shù)轉(zhuǎn)化而成的,也即,是由線上數(shù)據(jù)庫中存儲的模型描述參數(shù)轉(zhuǎn)化而成的,解析實(shí)體控件后僅得到模型描述參數(shù),在該步驟中,獲取本地存儲路徑時,先根據(jù)模型描述參數(shù)從服務(wù)器下載3D模型的文件壓縮包,并在下載后解壓存儲至本地,以獲得本地存儲路徑,相關(guān)過程可參照上述第二實(shí)施例中步驟S206至步驟S212。

      優(yōu)選地,在獲得本地存儲路徑后,可采用解析得到的模型描述參數(shù)和獲取到的本地存儲路徑更新3D模型對應(yīng)的實(shí)體控件,保證再次導(dǎo)入時直接通過解析實(shí)體控件獲得本地存儲路徑。

      進(jìn)一步優(yōu)選地,將獲取到的本地存儲路徑和解析得到的3D模型的模型描述參數(shù)存儲至本地?cái)?shù)據(jù)庫,以保證下次執(zhí)行步驟S802至步驟S806時,顯示的實(shí)體控件由本地存儲路徑和模型描述參數(shù)轉(zhuǎn)化而成。

      當(dāng)用戶執(zhí)行導(dǎo)入操作的實(shí)體控件是由3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化而成的,也即,是由本地?cái)?shù)據(jù)庫中存儲的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化而成的,解析實(shí)體控件后可得到本地存儲路徑,此時跳過上述步驟S810,直接執(zhí)行下述步驟S812。

      步驟S812:查詢和判斷本地存儲路徑下的文件的情況,在本地存儲路徑下的文件為3D模型的MAX文件時,調(diào)用操作系統(tǒng)的API接口向用戶選擇的3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      其中,該步驟具體可參見上述第六實(shí)施例中的步驟S608至步驟S622,此處不再贅述。

      以上為本申請?zhí)峁┑膶?D模型導(dǎo)入3ds MAX的方法的實(shí)施例,本申請還提供了將3D模型導(dǎo)入3ds MAX的裝置,該將3D模型導(dǎo)入3ds MAX的裝置用于執(zhí)行上述任意一種將3D模型導(dǎo)入3ds MAX的方法。

      第九實(shí)施例

      該實(shí)施例提供了一種將3D模型導(dǎo)入3ds MAX的裝置,該裝置為應(yīng)用于3ds MAX應(yīng)用程序的插件,與3ds MAX應(yīng)用程序安裝于同一操作系統(tǒng),通過該插件與3ds MAX應(yīng)用程序的交互,實(shí)現(xiàn)3D模型導(dǎo)入3ds MAX應(yīng)用程序。參見圖9所示,該裝置具體包括顯示模塊90、解析模塊92、獲取模塊94和發(fā)送模塊96。

      其中,顯示模塊90用于顯示3D模型對應(yīng)的實(shí)體控件。

      解析模塊92用于響應(yīng)于用戶對實(shí)體控件所執(zhí)行的導(dǎo)入操作,解析實(shí)體控件。

      獲取模塊94用于在解析模塊92未解析到3D模型的本地存儲路徑時,獲取本地存儲路徑。

      發(fā)送模塊96用于在解析模塊92解析到本地存儲路徑時,或者在獲取模塊94獲取到本地存儲路徑時,調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      其中,WM_DROPFILES消息中攜帶有本地存儲路徑,該本地存儲路徑用于使3ds MAX應(yīng)用程序獲取3D模型的MAX文件。

      優(yōu)選地,顯示模塊90在顯示3D模型對應(yīng)的實(shí)體控件時,可具體執(zhí)行以下步驟:

      訪問第一數(shù)據(jù)庫,將第一數(shù)據(jù)庫存儲的每個3D模型的模型描述參數(shù)轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示,其中,第一數(shù)據(jù)庫存儲有多個3D模型的模型描述參數(shù);或者

      訪問第二數(shù)據(jù)庫,將第二數(shù)據(jù)庫存儲的每個3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示,其中,第二數(shù)據(jù)庫存儲有多個3D模型的模型描述參數(shù)和本地存儲路徑;或者

      訪問第二數(shù)據(jù)庫和第一數(shù)據(jù)庫,將第二數(shù)據(jù)庫和第一數(shù)據(jù)庫進(jìn)行比對,將第二數(shù)據(jù)庫存儲的每個3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示,將第一數(shù)據(jù)庫存儲的且在第二數(shù)據(jù)庫中不存在的每個3D模型的模型描述參數(shù)轉(zhuǎn)化為實(shí)體控件進(jìn)行顯示。

      優(yōu)選地,獲取模塊94包括:壓縮包下載模塊,用于下載3D模型的文件壓縮包;解壓工具調(diào)用模塊,用于調(diào)用解壓縮工具對文件壓縮包進(jìn)行解壓以得到3D模型的文件包;第一存儲模塊,用于存儲3D模型的文件包至預(yù)定資源庫,其中,3D模型的文件包中包括3D模型的MAX文件;路徑獲取模塊,用于獲取3D模型的MAX文件的路徑以得到本地存儲路徑。

      優(yōu)選地,該裝置還包括,第一參數(shù)解析模塊,用于解析3D模型的MAX文件以得到3D模型的模型描述參數(shù);第一控件轉(zhuǎn)換顯示模塊,用于采用獲取到的本地存儲路徑和解析得到的3D模型的模型描述參數(shù)更新3D模型對應(yīng)的實(shí)體控件。該裝置還包括第二存儲模塊,用于將獲取到的本地存儲路徑和解析得到的3D模型的模型描述參數(shù)存儲至第二數(shù)據(jù)庫。

      優(yōu)選地,顯示模塊包括:服務(wù)器接收模塊,用于接收服務(wù)器發(fā)送的3D模型的模型描述參數(shù);以及實(shí)體控件轉(zhuǎn)換模塊,用于將3D模型的模型描述參數(shù)轉(zhuǎn)換為實(shí)體控件并顯示。

      優(yōu)選地,3D模型的文件包存儲在預(yù)定資源庫中,本地存儲路徑為3D模型的MAX文件相對預(yù)定資源庫的存儲路徑。

      優(yōu)選地,顯示模塊包括:應(yīng)用程序接收模塊,用于接收3Ds MAX應(yīng)用程序發(fā)送的3D模型的MAX文件的本地存儲路徑;MAX文件獲取模塊,用于按照接收到的本地存儲路徑獲取3D模型的MAX文件;第二參數(shù)解析模塊,用于解析3D模型的MAX文件以得到3D模型的模型描述參數(shù);第二控件轉(zhuǎn)換顯示模塊,用于將3D模型的模型描述參數(shù)和本地存儲路徑轉(zhuǎn)換為實(shí)體控件并顯示。該裝置還包括第三存儲模塊,用于在第二控件轉(zhuǎn)換顯示模塊顯示3D模型對應(yīng)的實(shí)體控件之后,存儲模型描述參數(shù)和MAX文件的本地存儲路徑至第二數(shù)據(jù)庫。

      優(yōu)選地,顯示模塊包括:本地添加模塊,用于響應(yīng)于用戶對本地3D模型執(zhí)行的添加操作,獲取本地3D模型的MAX文件和本地存儲路徑;第三參數(shù)解析模塊,用于解析本地3D模型的MAX文件以得到本地3D模型的模型描述參數(shù);第三控件轉(zhuǎn)換顯示模塊,用于將本地3D模型的模型描述參數(shù)和本地3D模型的本地存儲路徑轉(zhuǎn)換為實(shí)體控件并顯示。該裝置還包括第四存儲模塊,用于在第二控件轉(zhuǎn)換顯示模塊顯示3D模型對應(yīng)的實(shí)體控件之后,存儲模型描述參數(shù)和MAX文件的本地存儲路徑至第二數(shù)據(jù)庫。

      在顯示3D模型對應(yīng)的實(shí)體控件的步驟之后,方法還包括:存儲模型描述參數(shù)和本地存儲路徑至第二數(shù)據(jù)庫。

      優(yōu)選地,導(dǎo)入操作為拖拽實(shí)體控件至3ds MAX應(yīng)用程序的顯示窗口的拖拽操作,通過DoDragDrop方法實(shí)現(xiàn)拖拽操作,發(fā)送模塊執(zhí)行的步驟具體為響應(yīng)于拖拽操作完成,調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      優(yōu)選地,發(fā)送模塊包括:程序查找顯示模塊,用于響應(yīng)于用戶對實(shí)體控件所執(zhí)行的導(dǎo)入操作,查找并顯示操作系統(tǒng)開啟的3ds MAX應(yīng)用程序;接口調(diào)用模塊,用于響應(yīng)于用戶對3ds MAX應(yīng)用程序的選擇操作,調(diào)用操作系統(tǒng)的API接口向用戶選擇的3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      優(yōu)選地,發(fā)送模塊包括:結(jié)構(gòu)體初始化模塊,用于將本地存儲路徑在當(dāng)前進(jìn)程中初始化為一個預(yù)先定義好的結(jié)構(gòu)體;內(nèi)存計(jì)算模塊,用于計(jì)算初始化后的結(jié)構(gòu)體所占用的內(nèi)存大?。豢臻g分配模塊,用于在3ds MAX應(yīng)用程序的進(jìn)程中分配一塊與計(jì)算得到的內(nèi)存大小同樣大的空間;空間寫入模塊,用于將結(jié)構(gòu)體寫入分配好的空間;以及調(diào)用操作系統(tǒng)的API接口將寫入結(jié)構(gòu)體的空間作為WM_DROPFILES消息發(fā)送至3ds MAX應(yīng)用程序。

      優(yōu)選地,該裝置還包括:查詢模塊,用于在解析模塊解析到本地存儲路徑或獲取模塊獲取到本地存儲路徑之后,調(diào)用操作系統(tǒng)的API接口之前,查詢本地存儲路徑下的文件;判斷模塊,用于判斷本地存儲路徑下的文件是否為3D模型的MAX文件;其中,僅當(dāng)本地存儲路徑下的文件為3D模型的MAX文件時,發(fā)送模塊才會調(diào)用操作系統(tǒng)的API接口向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      優(yōu)選地,發(fā)送模塊在向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息時,使用PostMessage方法向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息;或者使用SendMessage方法向3ds MAX應(yīng)用程序發(fā)送WM_DROPFILES消息。

      優(yōu)選地,數(shù)據(jù)庫為SQLite數(shù)據(jù)庫。

      對于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域的技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因?yàn)楦鶕?jù)本發(fā)明,某些步驟可以采用其他順去或同時執(zhí)行;其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,上述方法實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。

      對于前述的各裝置實(shí)施例,為了簡單描述,故將其都表述為一系列的模塊組合,但是本領(lǐng)域的技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的模塊組合的限制,因?yàn)楦鶕?jù)本發(fā)明,某些模塊可以采用其他模塊執(zhí)行;其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,上述裝置實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的模塊并不一定是本發(fā)明所必須的。

      本說明書中的各個實(shí)施例均采用遞進(jìn)的方式描述,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個實(shí)施例之間相同相似的部分互相參見即可。對于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。

      以上對本發(fā)明所提供的一種將3D模型導(dǎo)入3ds MAX的方法和裝置進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1