VPP 3D FoV 規劃
現階段 VPP 的攝影機視野只有 2D 扇形:不會被牆擋、沒有 3D、也回答不了「這台認不認得出人臉」。這份說明分三個 Phase 走到 3D,每個 Phase 的畫面、誰算幾何、以及卡在誰手上。每頁左上角標明是「現況」還是哪一個 Phase。另外也要一起確認:這個階段有沒有要順勢優化 v1.3 上線後收到的一些反饋項目。
時程:現在 → Phase 1 → Phase 2 → Phase 3
3D 視角
新增
- 側欄常駐 3D Preview,只演選中那一支
- 放大成主畫面,側欄換 MiniFloorPlan
- 牆依高度擠出、相機機身、立體視錐
規則
- thermal、外購品切 3D 時明講不支援
偵測目標取代 PPM 色階
主軸
- Detection target 七類,可多選比較
- 偵測範圍改由 IVSD 算,VPP 只呈現
順便優化
- 不支援的類別標 Not supported
- Show PPM:只顯示通過/自訂門檻
- 3D 不再疊 DORI 環帶,legend 由偵測目標清單接手
Phase 2 以 Phase 1 的牆為前提(3D 場景裡的牆體就是 Phase 1 畫的那些)。Phase 3 的時間取決於 IVSD 內參覆蓋與新版確認(見第 11 頁)。
為什麼 2D 扇形不夠
扇形不會被牆擋
客戶看到的涵蓋範圍穿牆而過,實際上隔壁房間根本看不到。拿這張圖去報價,少裝的那台要到現場才發現。
看不出高度與俯角
同一個扇形,裝 3 m 和裝 6 m 落地的位置完全不同;2D 只有一個扇形,客戶無法想像視錐落在空間的哪裡。
PPM 不是客戶的問題
PPM 色階回答「像素密度夠不夠」,客戶問的是「這台認不認得出人臉、車牌」。兩件事不是同一件,而且偵測範圍的計算不在 VPP 手上。
要達成的事
業務在報價前,把相機擺到客戶平面圖上,切到 3D 向客戶說明視錐落在哪、哪裡是死角、哪一類偵測在哪個範圍內成立。
現況:2D 扇形與 PPM legend,牆不擋、沒有 3D
實際畫面可在 dev 環境查看:portal.vpp.dev.vivotek.com › configure-layout ↗;設計稿:Figma ↗
- 側欄參數:安裝高度、mount、tilt、rotation、focal length,多鏡頭逐 channel 設定。
- 平面圖:扇形(變焦)/圓形(魚眼)/梯形,DORI 四區疊色;PPM legend 固定在左下角(Identify/Recognize/Observe/Detect/Dead zone);Show full coverage 看整區。
- 沒有牆:涵蓋範圍穿牆而過。沒有 3D。
- 機種例外:沒有焦距規格的 No-Lens 機種(14 台)放上去跳「This product does not support FoV.」;其餘一律畫扇形,thermal 也畫。
Phase 1:在 control bar 畫牆,FoV 真的被牆擋住
多兩顆工具鈕,自成一組,與樓層管理以分隔線隔開。
按下工具鈕當下就進入,提示先出現;點空白處一律是落點。
剛畫完自動 focus Height;Enter 收起、接著畫下一面。
- 兩種工具的語意:polyline 是隔間牆線;polygon 是封閉空間,輪廓是牆、內部可進入。
- 牆有高度:預設取樓層安裝高度,等於「完全擋住」;矮牆(櫃檯、隔屏)可被看過去,遠處恢復可見。
- 遮擋是真的裁切:可見範圍 = FoV 多邊形 − 每面牆的陰影,DORI 四區各減一次。前置條件是平面圖先設比例尺。
- 給 RD:牆是
type: 'wall'的 shape,與裝置、比例尺同一個 shapes 陣列,存檔與 dirty 追蹤免費繼承;高度與厚度一律公尺儲存;布林相減用polygon-clipping。
Phase 2:同一支相機,切到 3D 看視錐落在哪
- 側欄常駐 3D Preview,只演選中的這一支;上緣分隔線可拖曳調高度、可收合。
- 放大是暫時的:Esc 即回平面圖,2D 仍是主視圖(#81 追認)。
- 可以做:轉視角、縮放、按住 Space 平移、拖機身改朝向。不能做:在 3D 改高度與俯角,仍只在參數區。
- 調參數不重設視角,換相機才重設。
給 RD:three.js;放大用 Teleport 搬 DOM 不重建 WebGL context;3D 的地面多邊形與 2D 共用 fovCalculations + fovClippingService,不另做 3D CSG;視錐以裁切後的地面多邊形為底面拉出。
哪些機種沒有 3D:沒有就明講,不畫一個看起來像的
| 狀態 | 怎麼認(目錄欄位) | 2D | 3D | 提示 | 進度 |
|---|---|---|---|---|---|
| 一般機種 | category = camera,有 focalLengthMin/Max | 畫 | 畫 | — | 已實作 |
| 一般機種、IVSD 無內參目錄 247 台裡 148 台 | 同上,但型號不在 IVSD 的 129 個名字裡 | 畫 | 畫 | 面板底下標「Estimated from published specs — no lens measurement for this model」 | 已實作 |
| thermal目錄 16 台 | modelType = thermal | 畫Portal dev 可放置、照畫扇形 | 不畫 | 切 3D 時告知「不支援 3D 視角」,留在 2D | 未實作模擬器曾因目錄缺 sensorSize 把 12 台擋在 2D 門外,已對齊 Portal 修正 |
| 外購品 | 目錄沒有欄位可認,待產品端定 | 畫 | 不畫 | 同 thermal | 未實作 |
| No-Lens(無焦距規格)14 台 | focalLengthMin/Max 皆空 | 不畫,跳「This product does not support FoV.」 | 不畫 | 沿用 2D 的提示 | 已實作 |
三個來源:Phase 2 的 3D 還是前端扇形,Phase 3 才換 IVSD
4f78e0a3b 的編譯期快照。欄位:modelType、focalLength*、vca[]、isEol。由 VPP 後端維護。fovCalculations 自己算,不需要任何外部服務。- 兩個圖層並存不混用:涵蓋範圍(扇形 + DORI)每台都畫,講「看得到哪裡」;偵測範圍(Phase 3)有 IVSD 資料才畫,講「認得出什麼」,沒有就明講「尚無偵測範圍資料」,不借用別台。
- 為什麼不能拿扇形頂替偵測範圍:實測與 IVSD Human 範圍相比,比值中位數 1.04 看起來還好,但 p10 = 0.46、p90 = 2.00,落在 ±10% 內只有 20%。畫出來客戶會據以採購。
- 對接形式未定:手上的 CameraSimulator 是瀏覽器端 WASM(6.4 MB + 208 MB 校正資料),週會說新版是後端 DB 算(#153)。要先確認再設計 API 介面。
- 型號命名要共訂:VPP 寫
IB9387-EHTV-V3 (2.7-13.5 mm),IVSD 寫IB9387-EHTV-V3_2.7-13.5mm;正規化邏輯目前只活在一支腳本(#31)。
Phase 3:偵測目標取代 PPM 色階,順便優化了這些
順便優化的項目
- Detection target 改到側欄、改成多選:原本是 3D 標題列的單一下拉,現在可以同時勾幾類比較範圍。
- 不支援的類別留在清單:標 Not supported 並反灰,不藏掉。
- 新增 Facial recognition:與 Face 分開列(認得出是誰 vs 只認得出有人臉),共用同一色。
- Show PPM 三模式:Show all/Show only passing/Custom threshold。
- Custom threshold 時長出 Threshold range:等級沿用 PPM legend 同一份。
- 3D 放大時 legend 讓位:PPM legend 收起,左下角改放偵測目標清單,勾選框本身就是該類顏色。
- 3D 只畫 FOV 涵蓋:不再疊 DORI 環帶,五層半透明在 3D 疊起來看不清。
- Preview 標題列拿掉:「3D Preview」標籤移到舞台左上角,收合時才露出 2D/3D 切換鈕。
| 客戶反饋 | 現況 | Phase 3 |
|---|---|---|
| 五層色階一眼看不出「夠不夠」 | PPM legend 五色固定全畫 | Show PPM 三模式:Show all/Show only passing/Custom threshold(長出 Threshold range 多選) |
| 客戶問的是人臉、車牌,不是 PPM | legend 只有 DORI | Detection target 七類:People/Face/Facial recognition/Fall/PPE/Vehicle/License plate,可多選比較 |
| 不支援的不該消失,也不該像能選 | — | 選項留著、標 Not supported 並 disable。不藏掉:藏掉客戶會以為買別款就有 |
| 3D 疊五層色看不清 | 3D 依 DORI 上色 | 3D 只畫 FOV 涵蓋,PPM legend 在 3D 放大時收起,位置由偵測目標清單接手 |
- 顏色:每類一色,勾選框本身就是該類的顏色:People Face/Facial recognition(共色,現實上不並存)PPE(淺色底加描邊)Vehicle License plate Fall(暫定)。
- 無障礙:紅綠色盲下 License plate 與 PPE 的 ΔE 只有 3.5,落地時人相關實線、車相關虛線要一起做(規格 §7.2)。
哪台支援什麼,目錄旗標可以在算之前就決定;分三步交付
| Detection target | 對應 specifications.vca[] | 247 台裡有幾台 | 備註 |
|---|---|---|---|
| People | peopleDetection | 113 | |
| Vehicle | vehicleDetection | 113 | |
| Face | faceDetection | 77 | |
| Facial recognition | AdvAIFR | 15 | |
| License plate | AdvAILPR | 13 | 不是 attributeExtraction ∋ lpr(0 台);與官網 ANPR、VaxALPR 語意不同,要定 |
| PPE | AdvAIPPEDetection | 11 | |
| Fall | AdvAIFallDetection | 10 | 是否納入未定 |
- 上表是下界:114 台
vca與objectDetection都是空的,不知是「沒填」還是「不支援」(IB9387-LPR-V3型號就叫 LPR 卻是空的)。 - 「有能力」只是必要條件:還要 IVSD 有這台的內參才畫得出來。目前 247 台裡只有 99 台有。
- IVSD 預設只開 Human,不是全開;顏色 IVSD 也有一套,要不要沿用待定。
vca[] 真資料;前提是先確認 114 台空值的語意。等待事項:擋在誰手上、擋哪個 Phase
| 事項 | 現況數字 | 擋哪個 Phase | 等誰 |
|---|---|---|---|
| IVSD 內參覆蓋 | 目錄 247 台,有內參 99 台(40%),缺 148 台;6 款多鏡頭(MA 系列)全無;thermal 16 台全無。缺的按系列:IP 33、MD 24、FD 22、IB 17、TB 14、IT 7、SD 7、MA 6、FE 5、其他 13 | Phase 3 | IVSD |
| IVSD 新版是前端 WASM 還是後端 DB | 沒人確認過,要申請新版試用帳號(#153) | Phase 3 整個資料流與 API 介面 | 需要人去申請 |
| 能力旗標的空值語意 | 114 台 vca 與 objectDetection 都是空的(#33) | Phase 3 的 Not supported | 產品/後端 |
| 能力來源以哪份為準 | VPP 的 vca[] 與 IVSD 的 AI Support Master DB 對不上,Face 一項 52 對 4 | Phase 3 | 產品端裁決 |
| 車牌對應哪個旗標 | AdvAILPR/官網 ANPR/VaxALPR 語意各異 | Phase 3 | 產品端 |
| 外購品怎麼認 | 目錄沒有這個欄位 | Phase 2 的不支援提示 | 產品端 |
| 模擬器的放置檢查曾與 Portal 分岔 | hasRequiredOpticalSpecs 曾要求 sensorSize,thermal 12 台被擋在 2D;已拿掉這個條件對齊 Portal。殘留:Portal 原始碼未比對,CU9183-H/VC9101 是否該放行未確認 | 已解;殘留不擋 Phase | 已修正 |
| 型號命名對齊 | 正規化邏輯只活在 scripts/model-coverage.mjs,沒有共用契約(#31) | Phase 2 的註記、Phase 3 的查表 | VPP 與 IVSD 共訂 |
| 型號快照同步 | IVSD 站台幾個月補一批(2025-08 +7、2025-12 +1、2026-03 +2、2026-07 +10);上次落後 15 個月沒人發現(#154) | Phase 2 的註記正確性 | VPP RD |
| 離線邊界 | 偵測範圍走 IVSD API 後,沒網路就畫不出來;尚未有結論 | Phase 3 | 需求方 |
上下架流程:新機種、EOL、IVSD 補資料,三種情境都還沒有 owner
isEol 欄位,但沒定義:EOL 的機種還能不能放到平面圖、既有專案裡的 3D 要不要保留。| 同步做法(#154) | 好處 | 疑慮 |
|---|---|---|
| 快照超過 N 個月測試轉紅 | 最便宜,不需要外部連線 | 只提醒「該去看了」,不知道差多少;N 要定 |
CI 定期對站台重跑 model-coverage,有差就開 issue | 能報出實際差異 | 站台在 WAF 後面,CI 連不連得到要先驗;可能需要認證 |
| 接上 IVSD API 後改即時查,快照只當離線 fallback | 根治 | 取決於 #153 與新版 API 長什麼樣 |
本頁要帶走的決定
- 上架通知的 owner
- EOL 機種在平面圖與既有專案的行為
- 三個同步做法選哪個,或先做最便宜的擋著
已知缺口(不在三個 Phase 範圍):3D 沒畫相機腳下的近端盲區(#155);壁掛機身外型未實作(#67);目標物高度固定地面(#6);牆遮擋從中心線算,厚牆最多差 1 m 未實測。