1. 程式人生 > >[Android-ARCore開發]ARCore從入門到放棄2-Demo介紹和擴充套件

[Android-ARCore開發]ARCore從入門到放棄2-Demo介紹和擴充套件

昨天只是簡單運行了官方的Demo,今天抽時間看了下文件和程式碼,大概瞭解一下原理。

Demo功能很簡單,開啟之後自動檢測平面,手指觸控平面會在觸控位置放置一個機器人。

檢測平面成功後如下面截圖所示,可以看到很多藍色小點和平面的菱形網狀圖。

藍色點稱為錨點,結合手機感測器用於追蹤手機移動。詳細原理介紹參考官網介紹

網格、小點和機器人都是使用OpenGL在SurfaceView上繪製的,看程式碼發現,當手指點選時會去檢測觸控點與平面的碰撞,如果有碰撞則會在平面處放置一個機器人。理解一個不熟悉的東西,就先試著修改一番。

修改後實現的效果是,如果手指點選時沒有碰撞到平面,則在手機當前所在的空間位置放置一個機器人,所做的主要邏輯修改程式碼如下,也很簡單。

原來的邏輯是拿到MotionEvent後,去做碰撞檢測,如果有碰撞結果,並且碰撞結果屬於平面碰撞型別,即與SDK檢測到的平面有碰撞,則把一個標識要顯示機器人的PlaneAttachment放到佇列。

所做的修改是,新增了一種碰撞型別叫FrameAttachment,不是上面的平面碰撞型別則作為這個型別放到佇列。

修改後的效果如圖,點選平面則在平面放置機器人,沒有平面則在當前空間手機的位置放置一個機器人。


以上只是個人理解的大概介紹,沒有嚴格的術語考證,之後再完善。

程式碼放到了Github上,做了一點修改,測試過是支援Neuxs 6的。