狠狠撸

狠狠撸Share a Scribd company logo
Vuforia AR
同時追踨多張辨識圖
Revised on April 14, 2021
? Unity AR專案設定
? 建立Vuforia AR Camera
? 滙入Vuforia特徵資料庫
? 加入AR辨識圖
? 設定AR物件
? 同時追踨多張辨識圖
? 解析DefaultTrackableEventHandler程
式框架
? 新增3D專案,AR multitargets
? 選單命令File> Build Settings
? 使用筆電或PC搭配Web Cam,可先選擇「PC, Mac & Linux Standalone」
方便測試;要使用手機實機測試,則選擇對應的手機平台
設定Unity AR專案 1/3
2
? 點擊Build Settings對話視窗左下角「Player Settings…」按鈕
? 勾選XR Settings項目中的Vuforia Augmented Reality Support,
安裝Vuforia Engine AR套件
如有警告訊息(大多是相容性問題),參照訊息內容修正設定即可
設定Unity AR專案 2/3
3
? Android平台設定
? 確認修正Player Settings設定中的Other Settings>
Identification> Package Name
? 設定Player Settings設定中的Other Settings> Identification>
Minimum API Level
? Vuforia Engine 8.X只支援Android 4.4之後版本;Vuforia Engine 9.X
只支援Android 7之後版本
? 取消勾選Player設定中的Other Settings> Configuration>
Android TV Compatibility
設定Unity AR專案 3/3
4
? 刪除場景中的Main Camera
? 選單命令GameObject> Vuforia Engine> AR Camera,在場景加入
AR Camera
? 點擊Open Vuforia Engine configuration按鈕
建立Vuforia AR Camera 1/3
5
? 將Vuforia License Key貼入Global項目的App License Key欄
建立Vuforia AR Camera 2/3
6
? 確定Play Mode項目中的Camera Device欄是目前使用的攝影機
建立Vuforia AR Camera 3/3
7
? 選單命令Assets> Import Package> Custom Package…滙入從
Vuforia封裝下載的特徵資料庫package
滙入Vuforia特徵資料庫 1/2
8
? 檢視ARCamera之Vuforia Engine Cofiguration設定,在
Databases項目中應看到您剛才滙入的辨識特徵資料庫名稱
滙入Vuforia特徵資料庫 2/2
9
? 在場景加入AR辨識圖片
? 選單命令GameObject> Vuforia Engine> Image Target
? Type = Predefined
? Database = unityAR (剛才滙入的特徵資料庫名稱)
? Image Target = baymax_ii (由特徵資料庫中選取辨識圖)
加入AR辨識圖片
10
? 滙入AR動作3D模型baymax.unitypackage
設定AR動作模型 1/5
11
? 檢視baymax模型中的Baymax_AmatureAction動畫,目前並未設定循
環動畫
? 點擊Edit…按鈕,勾選Loop Time
? 點擊Apply按鈕
設定AR動作模型 2/5
12
? 拖曳AR動作模型(baymax)成為ImageTarget的子物件
? 調整AR動作模型到欲顯現的相對位置和大小
設定AR動作模型 3/5
13
? 選單命令Assets> Create> Animator Controller
? 更名為baymaxController
? 雙擊baymaxController開啟Animator編輯視窗,拖曳baymax模型中
的Baymax_AmatureAction動畫到Animator編輯視窗
設定AR動作模型 4/5
14
? 將baymaxController拖曳到baymax的Animator元件之Controller
欄
? 執行測試
設定AR動作模型 5/5
15
? 選單命令GameObject> Vuforia Engine> Image Target,在場景
新增?張AR辨識圖
? Type = Predefined
? Database = unityAR (剛才滙入的特徵資料庫名稱)
? Image Target = iron_man (由特徵資料庫中選取辨識圖)
辨識圖預設位置為(0,0,0),所以兩張辨識圖會重疊在?起,實際上辨識圖
位置並不影響AR功能,因為AR Camera是以辦識圖為座標中心,但為了方便
設計階段檢視,可將辨識圖平移錯開位置
加入第二張AR辨識圖
16
? 滙入AR動作3D模型ironmax.unitypackage
設定第二張辨識圖AR動作模型 1/5
17
? 拖曳AR動作模型(ironman)成為ImageTarget的子物件
? 調整AR動作模型到欲顯現的相對位置和大小
設定第二張辨識圖AR動作模型 2/5
18
? 選單命令Assets> Create> Animator Controller
? 更名為ironmanController
? 雙擊ironmanController開啟Animator編輯視窗,拖曳Animations
中Run動畫到Animator編輯視窗
設定第二張辨識圖AR動作模型 3/5
19
? 將ironmanController拖曳到ironman的Animator元件之
Controller欄
? 取消勾選Apply Root Motion (使模型原地跑步)
設定第二張辨識圖AR動作模型 4/5
20
? 執行測試
? 辨識圖同時出現時,只有其中?張會觸發AR動作模型
設定第二張辨識圖AR動作模型 5/5
21
? 選取AR Camera
? 點擊Open Vuforia Engine configuration按鈕
? 將Global項目中的Max Simultaneous Tracked Images值調整為2
註:同時追踨過多辨識圖,會影響辨識運算效能,建議不要超過5
設定使用多重辨識物 1/2
22
? 執行測試
? 辨識圖同時出現時,兩張都會觸發AR動作模型
設定使用多重辨識物 2/2
23
? ImageTargetBehaviour程式腳本負責運行時追蹤圖像目標作業
? 而ImageTargetBehaviour繼承自TrackableBehaviour,要獲得追
蹤行為的狀態,就要先取得所追蹤目標的TrackableBehaviour
? 要處理追蹤行為狀態改變事件,必須實作ITrackableEventHandle介
面的OnTrackableStateChanged方法,並將實作
ITrackableEventHandle介面的物件註冊到所追蹤目標的
TrackableBehaviour中
解析DefaultTrackableEventHandler 1/7
24
using UnityEngine;
using Vuforia;
public class DefaultTrackableEventHandler:MonoBehaviour, ITrackableEventHandler
{
#region PROTECTED_MEMBER_VARIABLES protected TrackableBehaviour mTrackableBehaviour;
protected TrackableBehaviour.Status m_PreviousStatus;
protected TrackableBehaviour.Status m_NewStatus;
#endregion // PROTECTED_MEMBER_VARIABLES
#region UNITY_MONOBEHAVIOUR_METHODS
protected virtual void Start() {
mTrackableBehaviour = GetComponent<TrackableBehaviour>();
if (mTrackableBehaviour)
mTrackableBehaviour.RegisterTrackableEventHandler(this);
}
protected virtual void OnDestroy() {
if (mTrackableBehaviour)
mTrackableBehaviour.UnregisterTrackableEventHandler(this);
}
#endregion // UNITY_MONOBEHAVIOUR_METHODS
解析DefaultTrackableEventHandler 2/7
25
實作ITrackableEventHandle介面
#region PUBLIC_METHODS
/*Implementation of the ITrackableEventHandler function called when the
tracking state changes. */
public void OnTrackableStateChanged(
TrackableBehaviour.Status previousStatus,
TrackableBehaviour.Status newStatus) {
m_PreviousStatus = previousStatus;
m_NewStatus = newStatus;
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName +
" " + mTrackableBehaviour.CurrentStatus +
" -- " + mTrackableBehaviour.CurrentStatusInfo);
if (newStatus == TrackableBehaviour.Status.DETECTED ||
newStatus == TrackableBehaviour.Status.TRACKED ||
newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED) {
OnTrackingFound();
}
else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
newStatus == TrackableBehaviour.Status.NO_POSE) {
OnTrackingLost();
}
解析DefaultTrackableEventHandler 3/7
26
else {
// For combo of previousStatus=UNKNOWN + newStatus=UNKNOWN|NOT_FOUND
// Vuforia is starting, but tracking has not been lost or found yet
// Call OnTrackingLost() to hide the augmentations
OnTrackingLost();
}
}
#endregion // PUBLIC_METHODS
解析DefaultTrackableEventHandler 4/7
27
#region PROTECTED_METHODS
protected virtual void OnTrackingFound() {
Debug.Log("OnTrackingFound");
if (mTrackableBehaviour) {
var rendererComponents =
mTrackableBehaviour.GetComponentsInChildren<Renderer>(true);
var colliderComponents =
mTrackableBehaviour.GetComponentsInChildren<Collider>(true);
var canvasComponents =
mTrackableBehaviour.GetComponentsInChildren<Canvas>(true);
foreach (var component in rendererComponents) // Enable rendering:
component.enabled = true;
foreach (var component in colliderComponents) // Enable colliders:
component.enabled = true;
foreach (var component in canvasComponents) // Enable canvas':
component.enabled = true;
}
}
解析DefaultTrackableEventHandler 5/7
28
protected virtual void OnTrackingLost() {
Debug.Log(" OnTrackingLost ");
if (mTrackableBehaviour) {
var rendererComponents =
mTrackableBehaviour.GetComponentsInChildren<Renderer>(true);
var colliderComponents =
mTrackableBehaviour.GetComponentsInChildren<Collider>(true);
var canvasComponents =
mTrackableBehaviour.GetComponentsInChildren<Canvas>(true);
foreach (var component in rendererComponents) // Disable rendering:
component.enabled = false;
foreach (var component in colliderComponents) // Disable colliders:
component.enabled = false;
foreach (var component in canvasComponents) // Disable canvas':
component.enabled = false;
}
}
#endregion // PROTECTED_METHODS
}
解析DefaultTrackableEventHandler 6/7
29
解析DefaultTrackableEventHandler 7/7
30
Ad

Recommended

Union FileSystem - A Building Blocks Of a Container
Union FileSystem - A Building Blocks Of a Container
Knoldus Inc.
?
Jsf 110530152515-phpapp01
Eric Bourdet
?
Firebase
Firebase
TriState Technology
?
Introduction to Firebase
Introduction to Firebase
Mustafa ?enel
?
Firebase
Firebase
Naveen Kumar Neelam
?
Android Basic Components
Android Basic Components
Jussi Pohjolainen
?
Visual studio code
Visual studio code
fizmhd
?
Location-Based Services on Android
Location-Based Services on Android
Jomar Tigcal
?
Android-Tp3: fragments et menus
Lilia Sfaxi
?
Google Firebase Presentation
Google Firebase Presentation
Aeni Patel
?
Mobile Application Testing
Mobile Application Testing
SWAAM Tech
?
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
ENSET, Université Hassan II Casablanca
?
Android Location and Maps
Android Location and Maps
Jussi Pohjolainen
?
Infrastructure as Code with Terraform.pptx
Infrastructure as Code with Terraform.pptx
Samuel862293
?
Google Firebase presentation - English
Google Firebase presentation - English
Alexandros Tsichouridis
?
Building infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps Krakow
Anton Babenko
?
Docker storage drivers by Jér?me Petazzoni
Docker storage drivers by Jér?me Petazzoni
Docker, Inc.
?
Applications Android - cours 10 : Vues à adaptateur
Ahmed-Chawki Chaouche
?
Terraforming your Infrastructure on GCP
Terraforming your Infrastructure on GCP
Samuel Chow
?
Terraform
Terraform
Marcelo Serpa
?
Android async task
Android async task
Madhu Venkat
?
MediaPlayer Playing Flow
MediaPlayer Playing Flow
Javid Hsu
?
Terraform Basics
Terraform Basics
Mohammed Fazuluddin
?
React with Redux
React with Redux
Stanimir Todorov
?
Broadcast Receiver
Broadcast Receiver
nationalmobileapps
?
Observer Pattern
Observer Pattern
Anshuman Biswal
?
Vagrant y Docker - Guía práctica de uso
Sergio Zambrano Delfa
?
Accessing Hardware on Android
Accessing Hardware on Android
Gary Bisson
?
Vuforia AR影片程式設計
Vuforia AR影片程式設計
吳錫修 (ShyiShiou Wu)
?
Vuforia AR影片程式設計
Vuforia AR影片程式設計
吳錫修 (ShyiShiou Wu)
?

More Related Content

What's hot (20)

Android-Tp3: fragments et menus
Lilia Sfaxi
?
Google Firebase Presentation
Google Firebase Presentation
Aeni Patel
?
Mobile Application Testing
Mobile Application Testing
SWAAM Tech
?
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
ENSET, Université Hassan II Casablanca
?
Android Location and Maps
Android Location and Maps
Jussi Pohjolainen
?
Infrastructure as Code with Terraform.pptx
Infrastructure as Code with Terraform.pptx
Samuel862293
?
Google Firebase presentation - English
Google Firebase presentation - English
Alexandros Tsichouridis
?
Building infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps Krakow
Anton Babenko
?
Docker storage drivers by Jér?me Petazzoni
Docker storage drivers by Jér?me Petazzoni
Docker, Inc.
?
Applications Android - cours 10 : Vues à adaptateur
Ahmed-Chawki Chaouche
?
Terraforming your Infrastructure on GCP
Terraforming your Infrastructure on GCP
Samuel Chow
?
Terraform
Terraform
Marcelo Serpa
?
Android async task
Android async task
Madhu Venkat
?
MediaPlayer Playing Flow
MediaPlayer Playing Flow
Javid Hsu
?
Terraform Basics
Terraform Basics
Mohammed Fazuluddin
?
React with Redux
React with Redux
Stanimir Todorov
?
Broadcast Receiver
Broadcast Receiver
nationalmobileapps
?
Observer Pattern
Observer Pattern
Anshuman Biswal
?
Vagrant y Docker - Guía práctica de uso
Sergio Zambrano Delfa
?
Accessing Hardware on Android
Accessing Hardware on Android
Gary Bisson
?
Android-Tp3: fragments et menus
Lilia Sfaxi
?
Google Firebase Presentation
Google Firebase Presentation
Aeni Patel
?
Mobile Application Testing
Mobile Application Testing
SWAAM Tech
?
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
ENSET, Université Hassan II Casablanca
?
Infrastructure as Code with Terraform.pptx
Infrastructure as Code with Terraform.pptx
Samuel862293
?
Building infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps Krakow
Anton Babenko
?
Docker storage drivers by Jér?me Petazzoni
Docker storage drivers by Jér?me Petazzoni
Docker, Inc.
?
Applications Android - cours 10 : Vues à adaptateur
Ahmed-Chawki Chaouche
?
Terraforming your Infrastructure on GCP
Terraforming your Infrastructure on GCP
Samuel Chow
?
MediaPlayer Playing Flow
MediaPlayer Playing Flow
Javid Hsu
?
Vagrant y Docker - Guía práctica de uso
Sergio Zambrano Delfa
?
Accessing Hardware on Android
Accessing Hardware on Android
Gary Bisson
?

Similar to Vuforia AR 同時追踨多張辨識圖 (20)

Vuforia AR影片程式設計
Vuforia AR影片程式設計
吳錫修 (ShyiShiou Wu)
?
Vuforia AR影片程式設計
Vuforia AR影片程式設計
吳錫修 (ShyiShiou Wu)
?
Cloud monitoring功能簡介
Cloud monitoring功能簡介
Yi jhen Hong
?
Android Wear SDK: Level 101
Android Wear SDK: Level 101
Jollen Chen
?
CloudStack Installation on Ubuntu
CloudStack Installation on Ubuntu
康志強 大人
?
Manual instruction apc3.0
Manual instruction apc3.0
ahnlabchina
?
Flex 4.5 action custom component development
Flex 4.5 action custom component development
jexchan
?
附錄--Anaconda installation
附錄--Anaconda installation
艾鍗科技
?
manual
manual
angelsainy
?
Mini2440 manual 2010060901
Mini2440 manual 2010060901
hudikm
?
Micro2440 manual 20100609
Micro2440 manual 20100609
jrogulj
?
Wxpython In Action
Wxpython In Action
智锋 范
?
Hyperic hq安装配置演示
Hyperic hq安装配置演示
bmg521
?
深入研究 Windows 系統服務 效能調校與故障排除
深入研究 Windows 系統服務 效能調校與故障排除
5045033
?
互联网精准广告定向技术-产测牛国柱
互联网精准广告定向技术-产测牛国柱
中文互联网数据研究资讯中心--199颈迟
?
前端各阶段工作
前端各阶段工作
Chi-wen Sun
?
Deployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cn
ahnlabchina
?
soyo manual 8100 Vt6103 Ok
soyo manual 8100 Vt6103 Ok
guest69f195
?
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
建興 王
?
全新 Veeam Availability Suite v9包括 Veeam Backup & Replication 和 Veeam ONE 備份解決方...
全新 Veeam Availability Suite v9包括 Veeam Backup & Replication 和 Veeam ONE 備份解決方...
Cheer Chain Enterprise Co., Ltd.
?
Cloud monitoring功能簡介
Cloud monitoring功能簡介
Yi jhen Hong
?
Android Wear SDK: Level 101
Android Wear SDK: Level 101
Jollen Chen
?
CloudStack Installation on Ubuntu
CloudStack Installation on Ubuntu
康志強 大人
?
Manual instruction apc3.0
Manual instruction apc3.0
ahnlabchina
?
Flex 4.5 action custom component development
Flex 4.5 action custom component development
jexchan
?
附錄--Anaconda installation
附錄--Anaconda installation
艾鍗科技
?
Mini2440 manual 2010060901
Mini2440 manual 2010060901
hudikm
?
Micro2440 manual 20100609
Micro2440 manual 20100609
jrogulj
?
Wxpython In Action
Wxpython In Action
智锋 范
?
Hyperic hq安装配置演示
Hyperic hq安装配置演示
bmg521
?
深入研究 Windows 系統服務 效能調校與故障排除
深入研究 Windows 系統服務 效能調校與故障排除
5045033
?
前端各阶段工作
前端各阶段工作
Chi-wen Sun
?
Deployment instruction tg1100 ig-cn
Deployment instruction tg1100 ig-cn
ahnlabchina
?
soyo manual 8100 Vt6103 Ok
soyo manual 8100 Vt6103 Ok
guest69f195
?
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
建興 王
?
全新 Veeam Availability Suite v9包括 Veeam Backup & Replication 和 Veeam ONE 備份解決方...
全新 Veeam Availability Suite v9包括 Veeam Backup & Replication 和 Veeam ONE 備份解決方...
Cheer Chain Enterprise Co., Ltd.
?
Ad

More from 吳錫修 (ShyiShiou Wu) (20)

尘颈肠谤辞:产颈迟亮度感测应用
尘颈肠谤辞:产颈迟亮度感测应用
吳錫修 (ShyiShiou Wu)
?
尘颈肠谤辞:产颈迟开关控制应用
尘颈肠谤辞:产颈迟开关控制应用
吳錫修 (ShyiShiou Wu)
?
Vuforia AR 應用程式設計入門
Vuforia AR 應用程式設計入門
吳錫修 (ShyiShiou Wu)
?
Vuforia AR 應用程式準備作業
Vuforia AR 應用程式準備作業
吳錫修 (ShyiShiou Wu)
?
micro:bit LED顯示控制
micro:bit LED顯示控制
吳錫修 (ShyiShiou Wu)
?
IDE for micro:bit
IDE for micro:bit
吳錫修 (ShyiShiou Wu)
?
Microbit 1 introduction
Microbit 1 introduction
吳錫修 (ShyiShiou Wu)
?
Arduino overview
Arduino overview
吳錫修 (ShyiShiou Wu)
?
使用Makeblock App學習mBot程式設計
使用Makeblock App學習mBot程式設計
吳錫修 (ShyiShiou Wu)
?
使用惭部落础辫辫学习尘叠辞迟程式设计
使用惭部落础辫辫学习尘叠辞迟程式设计
吳錫修 (ShyiShiou Wu)
?
nodeMCU IOT教學03 - NodeMCU導論
nodeMCU IOT教學03 - NodeMCU導論
吳錫修 (ShyiShiou Wu)
?
nodeMCU IOT教學02 - Lua語言
nodeMCU IOT教學02 - Lua語言
吳錫修 (ShyiShiou Wu)
?
Unity遊戲程式設計 - 2D Platformer遊戲
Unity遊戲程式設計 - 2D Platformer遊戲
吳錫修 (ShyiShiou Wu)
?
Unity遊戲程式設計 - 2D移動與碰撞處理II
Unity遊戲程式設計 - 2D移動與碰撞處理II
吳錫修 (ShyiShiou Wu)
?
Unity遊戲程式設計 - 2D運動與碰撞處理I
Unity遊戲程式設計 - 2D運動與碰撞處理I
吳錫修 (ShyiShiou Wu)
?
笔测迟丑辞苍与础谤诲颈苍颈辞整合应用
笔测迟丑辞苍与础谤诲颈苍颈辞整合应用
吳錫修 (ShyiShiou Wu)
?
尘叠濒辞肠办积木式设计程式
尘叠濒辞肠办积木式设计程式
吳錫修 (ShyiShiou Wu)
?
础谤诲耻颈苍辞程式除错
础谤诲耻颈苍辞程式除错
吳錫修 (ShyiShiou Wu)
?
Unity遊戲設計- 2D動畫製作及應用
Unity遊戲設計- 2D動畫製作及應用
吳錫修 (ShyiShiou Wu)
?
Unity遊戲設計- 應用Sprite物件
Unity遊戲設計- 應用Sprite物件
吳錫修 (ShyiShiou Wu)
?
使用惭部落础辫辫学习尘叠辞迟程式设计
使用惭部落础辫辫学习尘叠辞迟程式设计
吳錫修 (ShyiShiou Wu)
?
Unity遊戲程式設計 - 2D Platformer遊戲
Unity遊戲程式設計 - 2D Platformer遊戲
吳錫修 (ShyiShiou Wu)
?
Unity遊戲程式設計 - 2D移動與碰撞處理II
Unity遊戲程式設計 - 2D移動與碰撞處理II
吳錫修 (ShyiShiou Wu)
?
Unity遊戲程式設計 - 2D運動與碰撞處理I
Unity遊戲程式設計 - 2D運動與碰撞處理I
吳錫修 (ShyiShiou Wu)
?
笔测迟丑辞苍与础谤诲颈苍颈辞整合应用
笔测迟丑辞苍与础谤诲颈苍颈辞整合应用
吳錫修 (ShyiShiou Wu)
?
Ad

Vuforia AR 同時追踨多張辨識圖