前面我們使用Qt 3D框架創建了一個最基本的3D程序,藍色的背景,里面什么也沒有。
現在,我們要在此基礎上把3D模型放進去。3D建模的工具有很多,Auto CAD, 3DS Max,Rhino, Blender等等,有收費,有免費,不一而足,總有一款你會喜歡。 在學校不同的專業學的軟件可能不同,筆者是電子專業的,十幾年前在學校只學過工程制圖,使用的是AutoCAD。但沒關系,我們要做的是編寫3D程序,建模有時間再學吧。
Qt 3D內置了obj的模型解析器,能夠導入的是obj格式的3D模型,其它格式就需要轉換一下了。如果手頭沒有現成的模型,我們就直接使用Qt自帶的幾個模型做為例子。Qt的示例程序里面帶了幾個模型,存放在下面這個目錄,我們把它拷出來,放到自己的工作目錄即可。
Examples\Qt-5.11.1\qt3d\exampleresources\assets\obj
接下來,把toyplane.obj添加到我們的工程里面,先在qml.qrc下添加一個prefix,/assets/obj,然后把toyplane.obj添加到此路徑下。
編輯main.qml文件,添加以下內容:
1 Entity { 2 id: topplane 3
4 PhongMaterial { 5 id: material 6 } 7
8 Mesh { 9 id: toyplaneMesh 10 source: "qrc:/assets/obj/toyplane.obj"
11 } 12
13 components: [toyplaneMesh, material] 14 }
我們添加一個新的Entity來表示我們飛機模型實體,id為toyplane。然后這個實體中包含了一個Mesh對象。其中這個Mesh由"qrc:/assets/obj/toyplane.obj"這個路徑載入。還定義了一個PhongMaterial材質,Qt 3D沒有默認的材質,如果不定義材質的話,模型就顯示不出來。最后創建components為[ toyplaneMesh, material ],表示讓Entity擁有的組件是名為toyplaneMesh,材質為material的Mesh component。
點擊運行,效果如下:
因為我們在第(一)篇里定義了Camera和InputSettings{},那么我們可以使用鼠標將camera的參數進行相應的改變,從而可以從不同的角度來觀察模型。程序可以通過鼠標進行交互:左鍵可以平移,右鍵可以旋轉,中鍵可以放大縮小等。