ArCore 當前研究進度
===
使用的 Library 及服務
---
1.sceneform```已集成 渲染器、場景偵測 API```
2.Firebase
- 放置 3D 模型素材檔
- Realtime 資料庫(多人連線使用)
3.GCP ArCore API (用來取得絕對定位座標)
---
基本原理
---
ArCore 根據表面特徵點進行平面判斷,引此初始時會有以下流程
- 移動攝影機進行表面確認
- 其他 Sensor 搭配進行現實單位偵測
----
###### Google 範例影片
<video src="https://developers.google.com/ar/develop/java/images/hellosceneform-demo.mp4" controls style="width: 100%;"></video>
---
APP 執行流程
----
### 第一步 - 預先載入模型
在載入完程式後,會呼叫 `updateModel` 來載入預設模型
----
### 第二步 - 檢測平面後偵測是否有放置點
在執行程式後 `initScene` function
將在螢幕正中央位置尋找是否有可以物理交集點 (HitResult)
可以放置時會自動放置
----
{%youtube A1iM-Qsx8cY%}
----
### 第三步 - 從網路讀取 3D 模型列表
會從[此連結](https://raw.githubusercontent.com/a9650615/ar_object_lists/master/fileLists.json?token=ADGCFQSLI2QFLJNUOHFWV6C5JPAIY)載入列表並且添加到選單上

----
更換模型時將利用 `updateModel` 來更換模型
{%youtube CSFaxkRDX44%}
---
### 多人連線
----
名詞講解
---
### 錨點 - Anchor
保留真實物理資訊的座標點
### 雲錨點 - Cloud Anchors
可以再多裝置共享的座標點
### GCP - Google Cloud
Google 雲端服務,這邊將使用 ArCore 的 cloud anchor 功能
----
取得 Cloud Anchor 流程
---
```sequence
Anchor -> Session: 我想取得 cloud anchor
Session->Google Cloud: 我給你 anchor 資訊
Note right of Session: 網路
Google Cloud --> Session: 我給你定位用 Token
Session --> Anchor: 給我到指定位置
Note left of Session: 轉換後的 cloud anchor
```
----
更新機制
---
```sequence
手機1 -> Firebase: 發送資料
Firebase --> 手機1 : 更新資料
Firebase --> 手機2 : 更新資料
```
----
實際效果
---
{%youtube EuN0s_z8FOk%}
----
{%youtube bmnhc5YjsMY%}
---
其他
---
3D 模型檔案格式為 GLB ( GLB = 壓縮為二進制檔的 GLTF 文件 )
託管於 Firebase storage 上

----
資源來源
---
sketchfab ( 可自動轉換 GLTF 資源進行下載 )
{"metaMigratedAt":"2023-06-14T23:10:55.273Z","metaMigratedFrom":"Content","title":"ArCore 當前研究進度","breaks":true,"contributors":"[{\"id\":\"d507b28a-10b0-4357-bb50-4da7c8f1a45d\",\"add\":1757,\"del\":114}]"}