七天帶你初探AR世界-Day 7


Day 7

今天要帶大家如何呈現不同的3D模組,基本上AR的部分已經都結束囉~那做法其實都一樣,只需結合 switch 及判斷式即可,那麼接下就開始吧!

首先,我們已經從第二天中知道如何加入模組,是從檔案名稱去決定要植入哪個模組,那麼我們何不做個 switch ,去判斷案的是哪個按鈕,並給予正確的檔名。如下:

func addModel(x: Float = 0, y: Float = -0.3, z: Float = -0.5, file: String) {
        guard let modelScene = SCNScene(named: "art.scnassets/models/\(file).obj") else { return }
        ...
        }

這邊我在 addModel 中多加了 file: String 以便之後呼叫時好帶入字串,並在植入模組的檔案位置上改為 \(file).obj

那在按鈕的部分,因為做的事都大同小異,所以我選擇用 switch 去判斷按鈕的名字,然後個別呼叫同個 func addModel() 並帶入不同的字串,如下:

    @IBAction func selectRoleButtonPressed(_ sender: UIButton) {
        switch sender {
            case addCatBt:
                addModel(file: "cat")
            case addDeerBt:
                addModel(file: "deer")
            case addWolfBt:
                addModel(file: "wolf")
            default:
            break
        }
    }

當然,按鈕都要先拉好並命名完,如此一來只要你點擊到所想要的按鈕,便會帶入想要的檔名給 func addModel() ,並呼叫出對應的模組!

最後是教大家怎麼清除節點上的模組,只需一個步驟,如下:

    @IBAction func clearAction(_ sender: Any) {
    object!.enumerateChildNodes { (node, stop) in
            node.removeFromParentNode()
        }
    }

大功告成!!!!如此一來你就能隨意新增、刪除、拖曳、縮放、旋轉模組囉~~

加入貓貓:


加入小鹿:


加入大野狼:

謝謝大家的觀看,當然我也不是什麼AR大師,有哪裡做錯或有問題的也都歡迎大家指點~互相學習互相進步!!!!

#ARKit #3Dmodel #Day7







你可能感興趣的文章

jQuery 與 Ajax

jQuery 與 Ajax

Leetcode 刷題 pattern - Two Pointer

Leetcode 刷題 pattern - Two Pointer

什麼是 Pure Function?在 React 當中的重要性是什麼?

什麼是 Pure Function?在 React 當中的重要性是什麼?






留言討論