說明
本系列文章是對<3D Apple Games by Tutorials>一書的學習記錄和體會
MagicaVoxel 是個很棒的3D內容建立工具,因為它是免費的! 你可以從這裡下載ephtracy.github.io
注意: 1. MagicaVoxel for Mac 啟動後可能是黑屏,啥都沒有,什麼都點不了?把軟體MagicaVoxel.app先拖出資料夾,再放回去應該就好了
- 如果出現"App can't be opened" ,開啟終端,嘗試以下命令:
chmod +x [directory]/MagicaVoxel-mac.app/Contents/MacOS/MagicaVoxel
![WX20170820-133653@2x.png](https://i.iter01.com/images/31e885a0f73f33b613f4418e7593cd51e8abd66d6c988edd32f89fde66c4dfad.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來清空整個模型:
![WX20170820-143032@2x.png](https://i.iter01.com/images/a51460607de96aac899787e94dd5a73c800fad4097f6da31666412b30c6bded6.png)
在編輯區頂部命名這個模型為MrPig,並按回車.當提示儲存時選擇save:
![WX20170820-143044@2x.png](https://i.iter01.com/images/8e8d6e50169e8f10017d2e835a3d67f2fc0cc584146145f9c4e2b74bb65dcf33.png)
建立基礎層
我們將從建立小豬身體的基礎層開始. 從左側的顏色皮膚中選擇合適的顏色. 按B來設定筆刷為Box Mode,然後按T來選擇Attach. 移動位置到(x: 1, y: 7, z: -1).左鍵單擊並按住,拖拽到(x: 7, y: 7, z: -1).到位後釋放,就得到了一個一體素高的基礎層:
![WX20170820-143059@2x.png](https://i.iter01.com/images/ff3f4326e29c50763e7987107badf70af1bf595603c8bc777ab4a7ad31a64c8d.png)
拉伸基礎層
更改筆刷型別,按F來切換到Face Mode,同時確認Attach仍然是被選中的. 左鍵單擊基礎層的頂部平面並向上拉伸一個體素高.重複操作直到基礎層有6體素高:
![WX20170820-143111@2x.png](https://i.iter01.com/images/d99b0f0aadc64d3ab1930312282a3496164789e8fb3ee4cf2fd4b09e3e368ae1.png)
建立頭部
現在建立頭部. 更改筆刷模式,按B回到Box Mode,同時確保Attach仍是被選中的. 從(x: 2, y: 6, z: 5)位置開始.單擊並拖動到(x: 6, y: 4, z: 5):
![WX20170820-143127@2x.png](https://i.iter01.com/images/41b897d9833aade90cbef4bac2be213d02d04015e28bad2e87095375e9f62e55.png)
建立鼻子
從左側皮膚中選擇深粉紅色. 使用和上一步一樣的筆刷設定,從(x: 2, y: 1,z:3)到 (x:6,y:1,z:1)建立一個盒子:
![WX20170820-143140@2x.png](https://i.iter01.com/images/4396eac6bef53827f853b99ed7cbe4d7a4ff3770eff0762f8b22e71dfa5fe396.png)
雕刻鼻孔和眼睛
更改筆刷模式,按V切換到Voxel Mode,然後按R選擇Erase. 擦除鼻子上的兩個鼻孔,參考下面的圖片:
![WX20170820-143154@2x.png](https://i.iter01.com/images/4d00bdf72a96b0ac55bc19d53adb9e240a27c83807c54871e74f049b19ab068b.png)
![WX20170820-143213@2x.png](https://i.iter01.com/images/3cfe0a38ba2d911dd81d957bbbf27885264497db61f762ef53151afb9769de0b.png)
建立尾巴
選中和前面鼻子一致的深粉紅色. 將小豬沿y軸旋轉180度,讓後面顯示出來. 仍然是Voxel Mode,按T來選擇Attach模式,從(x: 4, y: 7, z: 2)開始建立一條螺旋狀的尾巴,如下圖:
![WX20170820-143227@2x.png](https://i.iter01.com/images/7736092219954e1f520ae96b0dad4861ef83e0477b750be45ec58f41e3568f09.png)
新增耳朵
選中和前面一致的深粉紅色. 按1來開啟x軸對稱.你會注意到映象X按鈕處於開啟狀態.現在你在一邊所做的所有的操作會自動映象到另一邊. 開始一個體素一個體素建立耳朵,會看到另一隻耳朵也在同時建立.參考下面的圖片:
![WX20170820-143239@2x.png](https://i.iter01.com/images/a142065a82f68ff106e0be651c82fd7fdcca75286cf7233d6ad62e50e73f8949.png)
![WX20170820-143250@2x.png](https://i.iter01.com/images/f314a063daeddb6cbf4ced38175ea71e8cc6367c197688f58f3c5c1f4905d4ae.png)
新增腿
目前,小豬是處於邊界的底部,所以你需要將他向上移動來騰出空間給他的腿. 你可以進入Move Mode並向上拖拽模型,或按住Command鍵並向上拖拽也可以. 向上旋轉小豬,露出他的腹部. 用同樣顏色和筆刷設定,並確保沿x軸映象模式仍然是開啟狀態. 開始建立他的後腿,然後是前腿.參考下面的圖片:
![WX20170820-143302@2x.png](https://i.iter01.com/images/79510b22a22db92f2a8043ac5da343fbc8ec51e1adee874051975d5dcc99e869.png)
![WX20170820-143314@2x.png](https://i.iter01.com/images/89e444fddd56aecc65221cc1b74ed71f17e774da4864c64df80b0091b964c983.png)
最後著色
只剩下著色了. 按G進入Paint Mode. 從左側顏色皮膚中選擇白色,在眼睛位置單擊著色.完成後,再選擇黑色給瞳孔著色:
![WX20170820-143327@2x.png](https://i.iter01.com/images/46d3c3bcb20f7bec3af0acc5560a7dd400e588de8f1fd08c31d784133da09e4f.png)
![WX20170820-143348@2x.png](https://i.iter01.com/images/708b22369245032ba390a1197cef38d1ea98632fedcbac1354f32f5ca5d26411.png)
匯出體素模型
模型已建立完成,但SceneKit並不支援MagicaVoxel的原生格式 .vox.幸運的是還可以將模型輸出為常見的 .obj格式. .obj格式是Wavefront Technologies開發的開放標準幾何體定義,並被很多3D創作工具支援. 從MagicaVoxel中輸出體素模型易如反掌.
以.obj格式輸出體素模型
小豬還需要一個敵人-小狼.
![WX20170820-144903@2x.png](https://i.iter01.com/images/0046e45a403470e971e79dbcacb98e1ab8af499db356593d265dd216e85cca44.png)
在resources資料夾下,你會找到MrWolf.vox檔案.複製到Applications/MagicaVoxel/vox,然後在MagicaVoxel中開啟.
載入完成後,可以以特定格式輸出了. 要輸出為 .obj格式,只需單擊Export區域的obj就可以了.
![WX20170820-144916@2x.png](https://i.iter01.com/images/0948b428b151de6b568484de2b1b23f6d67d8bfa4ec749503897b79d5c6b0975.png)
輸入檔名,選擇輸出路徑,其餘保持預設,點選 save.
![WX20170820-144927@2x.png](https://i.iter01.com/images/6e0a2a58105617f7f5eb41d6eb2c003b6f45e594684ffc357181ce1ae77b8f43.png)
![WX20170820-144939@2x.png](https://i.iter01.com/images/8b900cb047213aa6c6cbadce770b6326efa8180fa99f59dba128a6e3cffa67da.png)
- MrWolf.mtl: 這是一個材料庫檔案,包含了顏色定義,紋理和反射貼圖.
- MrWolf.obj:這是Wavefront的 .obj檔案,包含體素模型的幾何體資訊.
- MrWolf.png:這是你體素模型的漫反射紋理貼圖,它包含了你在模型中用到的所有顏色.
匯入體素模型
現在已經輸出了模型,可以匯入到Xcode中了,然後轉換為合適的SceneKit場景檔案.
匯入.obj到Xcode
![WX20170820-145750@2x.png](https://i.iter01.com/images/eb3c8ea8cd9928f6211517810ed27b6c93e209ee9188a8cdc8f0cd8263124e19.png)
將.obj轉換為.scn
選中MrPig.scnassets資料夾下的MrWolf.obj檔案.模型是全黑色的,不要緊,我們馬上修復它. 在選單設定裡找到Editor,然後選擇Convert to SceneKit file format (.scn):
![WX20170820-145805@2x.png](https://i.iter01.com/images/a0275f0925934f8e569f46592e5293c5e13566ba86a5ec1c0a852147b9cf0571.png)
這裡提示,你可以選擇建立一個原始 .obj檔案的複本,或者用轉換後的 .scn 版本替換原來的檔案.選擇Convert繼續:
![WX20170820-145821@2x.png](https://i.iter01.com/images/b87ee1d571b4155108b4f7c21f0712e6c6e0c3febc03b0390d5bf864c4c31723.png)
MrWolf.obj檔案已經轉換為合適的 MrWolf.scn檔案了.
選中場景中的小狼節點,開啟材料檢查器.更改Lighting model光照模型為Lambert並更改Diffuse確保它使用了MrWolf.png 作為紋理:
![WX20170820-145835@2x.png](https://i.iter01.com/images/bebea13935b0cda6dce7d533426a9e4bedc841043d038ee987c2cf3eb1082568.png)
配置體素模型
在節點檢查器中,更改Identity為MrWolf.並更改縮放為(x: 0.08, y: 0.08, z: 0.08).這樣的縮放讓他和小豬有了相同的尺寸:
![WX20170820-150055@2x.png](https://i.iter01.com/images/9fe8d74c9a31e90020d55cc8566cad6d797a711f206c6fd4ac34d30034f98c15.png)
![WX20170820-150113@2x.png](https://i.iter01.com/images/dd05cc6ea726d4fa3ba47411645fde70c44650e229908263536ae3bf72efa82f.png)
![WX20170820-150137@2x.png](https://i.iter01.com/images/372ac1c23e7093146c91b47706bdef625ffb9fa7e0551b446e999eb0de4f2bc5.png)
你可以在projects/final/ Mr.Pig/ 下面找到完成版.
挑戰
再來點小挑戰吧! 將小狼新增到遊戲中,並讓他繞著樹林追尾巴.準備好了麼?別擔心,這裡有些小提示可以幫你. 選中MrWolf.scn並做點改變:
- 給MrWolf建立一個父節點並命名為RunningWolf.
- 將MrWolf沿x軸偏移4個單位.然後新增一個Rotate Action到父節點,旋轉-90度並無限迴圈. 當你點選play按鈕時,小狼將會跑一個大圈.
- 最後,新增一個MrWolf.scn的引用到GameScene.scn.將他放置在(x: 0, y: 0, z: -17)位置上.
執行遊戲,就能看到小狼繞著樹林追尾巴了.