[SceneKit專題]19-MagicaVoxel的使用,3D體素網格建模

說明

本系列文章是對<3D Apple Games by Tutorials>一書的學習記錄和體會git

此書對應的代碼地址github

SceneKit系列文章目錄app

MagicaVoxel 是個很棒的3D內容建立工具,由於它是免費的! 你能夠從這裏下載ephtracy.github.io框架

注意: 1. MagicaVoxel for Mac 啓動後多是黑屏,啥都沒有,什麼都點不了?把軟件MagicaVoxel.app先拖出文件夾,再放回去應該就行了編輯器

  1. 若是出現"App can't be opened" ,打開終端,嘗試如下命令: chmod +x [directory]/MagicaVoxel-mac.app/Contents/MacOS/MagicaVoxel

WX20170820-133653@2x.png

界面從左到右分別爲:工具

  • Color Palette調色板:能夠點擊選擇整個範圍內的顏色.還能夠從正正方選擇自定義顏色.
  • Brush筆刷:選擇筆刷模式.可選模式包括V (Voxel), F (Face), B (Box), L (Line), C (Center) and P (Pattern).還能夠用當前筆刷選擇動做模式,Attach添加, Erase擦除, Paint上色 或 Move移動.
  • View Options視圖設置:該區域在在筆刷下方.能夠設置不一樣的顯示設置,如DG (Display Ground顯示地面), SW (Display Shadow顯示陰影), BG (Display Background顯示背景), Grid (Display Grid顯示網格), Edge (Display Edges顯示邊緣) and Frame (Display Frame顯示框架-大網格)
  • Editor編輯器:體素創做區.能夠用鼠標控制導航顯示.右鍵旋轉,滾輪縮放,左鍵選擇.編輯區最上方能夠命名.編輯區右上方還能夠設置體素創做的尺寸.
  • Edit Options編輯設置:右邊第二列.Zero清空模型, Fill用相同顏色填充, Full設爲完整狀態. Rotate旋轉, Flip對稱翻轉Loop沿座標軸旋轉.
  • File Options文件設置:最右一列.你能夠Load, Save, Save As, Duplicate甚至Delete體素模型和圖案.
  • Export Options輸出設置:在文件設置的正方.展現全部可用的輸出格式.

建立體素模型

建立一個新模型

先給本身建立一個空白的工做臺. 在右側的文件設置裏選擇New來建立一個新模型.設置體素模型規格尺寸爲9 9 9 ,而後點擊編輯設置下面的Zero來清空整個模型: oop

WX20170820-143032@2x.png

在編輯區頂部命名這個模型爲MrPig,並按回車.當提示保存時選擇save: post

WX20170820-143044@2x.png

建立基礎層

咱們將從建立小豬身體的基礎層開始. 從左側的顏色面板中選擇合適的顏色. 按B來設置筆刷爲Box Mode,而後按T來選擇Attach. 移動位置到(x: 1, y: 7, z: -1).左鍵單擊並按住,拖拽到(x: 7, y: 7, z: -1).到位後釋放,就獲得了一個一體素高的基礎層: 學習

WX20170820-143059@2x.png

拉伸基礎層

更改筆刷類型,按F來切換到Face Mode,同時確認Attach仍然是被選中的. 左鍵單擊基礎層的頂部平面並向上拉伸一個體素高.重複操做直到基礎層有6體素高: 3d

WX20170820-143111@2x.png
能夠點擊視圖設置中的 Grid來幫忙看清尺寸.

建立頭部

如今建立頭部. 更改筆刷模式,按B回到Box Mode,同時確保Attach還是被選中的. 從(x: 2, y: 6, z: 5)位置開始.單擊並拖動到(x: 6, y: 4, z: 5):

WX20170820-143127@2x.png

建立鼻子

從左側面板中選擇深粉紅色. 使用和上一步同樣的筆刷設置,從(x: 2, y: 1,z:3)到 (x:6,y:1,z:1)建立一個盒子:

WX20170820-143140@2x.png

雕刻鼻孔和眼睛

更改筆刷模式,按V切換到Voxel Mode,而後按R選擇Erase. 擦除鼻子上的兩個鼻孔,參考下面的圖片:

WX20170820-143154@2x.png
分隔他的兩個眼睛:
WX20170820-143213@2x.png

建立尾巴

選中和前面鼻子一致的深粉紅色. 將小豬沿y軸旋轉180度,讓後面顯示出來. 仍然是Voxel Mode,按T來選擇Attach模式,從(x: 4, y: 7, z: 2)開始建立一條螺旋狀的尾巴,以下圖:

WX20170820-143227@2x.png
完成後,再沿y軸旋轉180度,讓前面顯示出來.

添加耳朵

選中和前面一致的深粉紅色. 按1來打開x軸對稱.你會注意到鏡像X按鈕處於打開狀態.如今你在一邊所作的全部的操做會自動鏡像到另外一邊. 開始一個體素一個體素建立耳朵,會看到另外一隻耳朵也在同時建立.參考下面的圖片:

WX20170820-143239@2x.png
WX20170820-143250@2x.png

添加腿

目前,小豬是處於邊界的底部,因此你須要將他向上移動來騰出空間給他的腿. 你能夠進入Move Mode並向上拖拽模型,或按住Command鍵並向上拖拽也能夠. 向上旋轉小豬,露出他的腹部. 用一樣顏色和筆刷設置,並確保沿x軸鏡像模式仍然是打開狀態. 開始建立他的後腿,而後是前腿.參考下面的圖片:

WX20170820-143302@2x.png
WX20170820-143314@2x.png

最後着色

只剩下着色了. 按G進入Paint Mode. 從左側顏色面板中選擇白色,在眼睛位置單擊着色.完成後,再選擇黑色給瞳孔着色:

WX20170820-143327@2x.png
接着,轉動小豬,讓他正面對着你. 將他的耳朵和鼻孔塗成黑色,以下:
WX20170820-143348@2x.png

導出體素模型

模型已建立完成,但SceneKit並不支持MagicaVoxel的原生格式 .vox.幸運的是還能夠將模型輸出爲常見的 .obj格式. .obj格式是Wavefront Technologies開發的開放標準幾何體定義,並被不少3D創做工具支持. 從MagicaVoxel中輸出體素模型易如反掌.

以.obj格式輸出體素模型

小豬還須要一個敵人-小狼.

WX20170820-144903@2x.png

resources文件夾下,你會找到MrWolf.vox文件.複製到Applications/MagicaVoxel/vox,而後在MagicaVoxel中打開.

加載完成後,能夠以特定格式輸出了. 要輸出爲 .obj格式,只需單擊Export區域的obj就能夠了.

WX20170820-144916@2x.png

輸入文件名,選擇輸出路徑,其他保持默認,點擊 save.

WX20170820-144927@2x.png
能夠在 Applications/MagicaVoxel/export/ 下找到輸出的文件了.同時在你項目的 resources文件夾下也會有一個複本.
WX20170820-144939@2x.png
共輸出了三個不一樣的文件:

  • MrWolf.mtl: 這是一個材料庫文件,包含了顏色定義,紋理和反射貼圖.
  • MrWolf.obj:這是Wavefront的 .obj文件,包含體素模型的幾何體信息.
  • MrWolf.png:這是你體素模型的漫反射紋理貼圖,它包含了你在模型中用到的全部顏色.

導入體素模型

如今已經輸出了模型,能夠導入到Xcode中了,而後轉換爲合適的SceneKit場景文件.

導入.obj到Xcode

WX20170820-145750@2x.png
選中 MrWolf.objMrWolf.png,並拖拽到Xcode項目的 MrPig.scnassets文件夾下.

將.obj轉換爲.scn

選中MrPig.scnassets文件夾下的MrWolf.obj文件.模型是全黑色的,沒關係,咱們立刻修復它. 在菜單設置裏找到Editor,而後選擇Convert to SceneKit file format (.scn):

WX20170820-145805@2x.png

這裏提示,你能夠選擇建立一個原始 .obj文件的複本,或者用轉換後的 .scn 版本替換原來的文件.選擇Convert繼續:

WX20170820-145821@2x.png

MrWolf.obj文件已經轉換爲合適的 MrWolf.scn文件了.

選中場景中的小狼節點,打開材料檢查器.更改Lighting model光照模型Lambert並更改Diffuse確保它使用了MrWolf.png 做爲紋理:

WX20170820-145835@2x.png

配置體素模型

在節點檢查器中,更改IdentityMrWolf.並更改縮放爲(x: 0.08, y: 0.08, z: 0.08).這樣的縮放讓他和小豬有了相同的尺寸:

WX20170820-150055@2x.png
切換到物理檢查器,更改物理形體的 TypeKinematic:
WX20170820-150113@2x.png
設置 Category mask爲2, Collision mask爲-1.更改 Physics Shape的Type 爲 Bounding Box並設置Scale爲 0.05,這樣碰撞幾何體更貼緊小狼的形體了.
WX20170820-150137@2x.png

你能夠在projects/final/ Mr.Pig/ 下面找到完成版.

挑戰

再來點小挑戰吧! 將小狼添加到遊戲中,並讓他繞着樹林追尾巴.準備好了麼?別擔憂,這裏有些小提示能夠幫你. 選中MrWolf.scn並作點改變:

  • 給MrWolf建立一個父節點並命名爲RunningWolf.
    WX20170820-150335@2x.png
  • MrWolf沿x軸偏移4個單位.而後添加一個Rotate Action到父節點,旋轉-90度並沒有限循環. 當你點擊play按鈕時,小狼將會跑一個大圈.
    WX20170820-150351@2x.png
  • 最後,添加一個MrWolf.scn的引用到GameScene.scn.將他放置在(x: 0, y: 0, z: -17)位置上.
    WX20170820-150407@2x.png
    運行遊戲,就能看到小狼繞着樹林追尾巴了.
相關文章
相關標籤/搜索