在使用vuforia或者其他AR SDK做AR項目的時候,經常會遇到模型抖動的問題。當然,在你不是因為手抖而出現這個問題得前提下,根據我的理解簡單說一下如何解決這個問題。
對于AR項目來說最主要的就是對美術的優化,這也是我最常用的解決辦法,有問題全交給美工來解決
。模型面數的控制。對于手機一個角色約300–1500面。貼圖盡量控制使用一張圖片,比如在制作模型時,建議將模型以一棟建筑為模型進行塌陷,接著對模型進行UV拆解,這樣可以將一個模型使用的一張貼圖來完成。進行項目優化之后,模型的抖動和識別錯誤問題會有改善。這是一個最初級的解決方案
首先在unity3d中的優化主要包括
第一,你得優化美術,減少模型面數。
第二,你可以采用剔除遮罩技術,也就是傳說中的Occlusion Culling 技術。
第三,你可以在unity中烘焙場景,優化燈光。
第四,你可以自己人工的去寫lod腳本,相機離角色多大距離內就加載成模型遠了就成貼圖。
第五,你可以采用腳本分房間或者分區域加載,走到a房間就加載a房間的對象,否則全部active=false,加載的瞬間會卡,你可以寫異步加載。
其次,抖動一直是AR實現探討的問題,主要和兩方面有關:識別算法和識別圖質量。底層算法的識別定位有關,但是用了人家的sdk,這個是沒法改變的只有跟著走,另一個有很大關系的就是識別圖的質量,就是特征點的數量,這點是我們可以改變的,但是有些狀況也很難避免識別出來的模型抖動問題,比如現場實時識別,采集的現場識別圖質量在高,在現場由于光線和角度的差別,模型會在不停的抖動,由于項目需要,不得不解決這個問題,當前面兩點(算法,識別圖)都不能改變的情況下,那就要通過人的視覺,怎么讓人看上去達到接受的效果,在計算機圖形學基本原則里面,有這么一條:看上去是真的那就是真的。以此提出了相應的解決方案: 解決思路大致是這樣:讓其緩動吻合而不是抖動,這里主要用到world center mode 參數和捕獲ImageTarget實時位置,注意由于是要增強物吻合ImageTarget,所以不能像高通案例那樣把需要識別出來的對象作為ImageTarget的子物體,獲取ImageTarget的時時位置,把它賦值給虛擬物體,如果工程里面有多個imagetarget你就要想辦法判斷是哪個imagetarget被識別出來,賦值給對應的虛擬物體.新聞熱點
疑難解答