精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何在 Flutter 中構建增強現實應用

開發 前端
在今天的文章中,我們將了解如何使用支持 Android 和 iOS 設備的插件在 Flutter 中構建增強現實應用程序。

AR 應用程序為我們在相機上的體驗添加數據或視覺效果。流行的示例包括 Instagram 過濾器、Snapchat 過濾器、各種地圖應用程序等。

AR 允許用戶將虛擬對象放置在現實世界中,然后與它們進行交互。AR 應用程序將(我認為)在游戲中特別流行——像 Microsoft Hololens 和 Google Glass 這樣的 AR 耳機設備提供真正的游戲體驗,購物和工業領域。

也許我們中的一個人可以構建一個應用程序,我可以使用它輕松檢查適合我的帽子類型?老實說,在購買和退回不滿意的東西之前,我真的需要它。看,AR 可以幫助我們在家中輕松嘗試。

在今天的文章中,我們將一起來學習以下內容:

  • 什么是 ARCore?
  • 什么是 ARKit?
  • 什么是 ar_flutter_plugin
  • 如何使用上述插件?

注意,學習本教程需要我們對 Flutter 有一些基本的知識。如果你是 Flutter 新手,請通過Flutter官方文檔了解一下。

1、什么是 ARCore?

ARCore 是 Google 的平臺,可讓我們的手機感知環境、了解世界并與信息交互。并提供一些可跨 Android 和 iOS 設備訪問的API ,從而實現共享的 AR 體驗。

以下是 ARCore 支持的設備要求。

  • IOS系統,需要蘋果手機的系統在iOS 11.0 或更高版本上。
  • Android 系統,需要安卓手機設備的系統在 Android 7.0 或更高版本的 Android 系統。

谷歌的 ARCore 文檔是這樣說的:“從根本上說,ARCore 做了兩件事:在移動設備移動時跟蹤它的位置,并建立它對現實世界的理解。”

如果您正在尋找一些實際使用 ARCore 的示例,請查看這些使用 ARCore 的應用程序。其中一些應用 ARCore 來查看您自己空間中的電子商務產品的尺寸,例如宜家目錄,而另一些則是基于娛樂的,例如星球大戰 AR 游戲。

2、什么是 ARKit?

ARKit 是 Apple 的一套工具,可讓您為 iOS 構建增強現實應用程序。在 iOS 11.0 或更高版本上使用 Apple A9 或更高版本(iPhone 6s/7/SE/8/X、iPad 2017/Pro)的任何人都可以使用 ARKit。對于某些功能,需要 iOS 12 或更高版本。

如果您正在尋找一些 ARKit 動作,請查看 Swift Playground。這是一款專為 iPad 和 Mac 打造的應用,讓學習 Swift 變得有趣。

ARKit 與 ARCore 有許多相似之處,它們的主要區別在于其 Apple 獨有的支持與 SceneKit 和 SpriteKit 配合得很好。我們可以從此處了解有關 ARKit 的更多信息。

3、開始入門

我們可以從此下面的地址處下載包含所有預構建 UI 的入門應用程序,https://github.com/himanshusharma89/arcore_example/tree/starter

在編輯器中打開它,然后構建并運行應用程序:

啟動項目的文件結構如下所示:

  • main.dart – 整個應用程序的入口點
  • homeView.dart - 這包含主視圖,有一個導航到 AR 視圖屏幕的按鈕
  • localAndWebObjectsView.dart - 屏幕顯示從本地和 Web 獲取 3D 對象的用法

什么是 ar_flutter_plugin?

ar_flutter_plugin(https://github.com/CariusLars/ar_flutter_plugin) 是一個用于 AR 的 Flutter 插件,支持 Android 上的 ARCore 和 iOS 設備上的 ARKit。你同時得到兩個!顯然,這是一個優勢,因為您不必為另一個選擇開發。

此外,您可以從此地址(https://github.com/CariusLars/ar_flutter_plugin#plugin-architecture)了解此插件架構內容。

設置插件

01)、添加 Flutter 依賴

在 pubspec.yaml 文件中添加 ar_flutter_plugin:

...
dependencies:
flutter:
sdk: flutter
ar_flutter_plugin: ^0.6.2
...

02)、安卓配置

更新應用級 build.gradle 文件中的 minSdkVersion:

android {
defaultConfig {
...
minSdkVersion 24
}
}

或者在 Android 目錄下的 local.properties 文件中添加 minSdkVersion:

flutter.minSdkVersion=24

并更新應用級 build.gradle 文件:

android {
defaultConfig {
...
minSdkVersion localProperties.getProperty('flutter.minSdkVersion')
}
}

03)、iOS 配置

如果您在 iOS 中遇到權限問題,請在您的 iOS 目錄中添加以下 Podfile:

post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
# Additional configuration options could already be set here
# BEGINNING OF WHAT YOU SHOULD ADD
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
## dart: PermissionGroup.camera
'PERMISSION_CAMERA=1',
## dart: PermissionGroup.photos
'PERMISSION_PHOTOS=1',
## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
'PERMISSION_LOCATION=1',
## dart: PermissionGroup.sensors
'PERMISSION_SENSORS=1',
## dart: PermissionGroup.bluetooth
'PERMISSION_BLUETOOTH=1',
# add additional permission groups if required
]
# END OF WHAT YOU SHOULD ADD
end
end
end

用法

在繼續之前,您需要了解以下 API:

  • ARView:使用 PlatformARView 創建與平臺相關的相機視圖
  • ARSessionManager:管理 ARView 的會話配置、參數和事件
  • ARObjectManager:管理一個 ARView 的所有節點相關的動作
  • ARAnchorManager:管理錨功能,如下載處理程序和上傳處理程序
  • ARLocationManager:提供獲取和更新設備當前位置的能力
  • ARNode:節點對象的模型類

您可以從以下地址處了解更多 API。https://pub.dev/documentation/ar_flutter_plugin/latest/

使用本地或遠程對象

最基本的用途之一是將 3D 對象從資產或網絡放置到屏幕上。

為此,您需要在 pubspec 文件中提供 .gltf 或 .glb 文件,如下所示:

什么是 glTF 或 GLB 文件?

glTF 是 3D 模型和場景的圖形語言傳輸格式。它有兩個擴展:

  • .gltf:以 JSON/ASCII 格式存儲場景描述,包括節點層次結構、相機和材質
  • .glb:以二進制格式存儲模型描述

您可以從此地址(https://en.wikipedia.org/wiki/GlTF)處了解有關 glTF 的更多信息。

現在,轉到 localAndWebObjectsView.dart 文件并創建以下變量:

late ARSessionManager arSessionManager;
late ARObjectManager arObjectManager;
//String localObjectReference;
ARNode? localObjectNode;
//String webObjectReference;
ARNode? webObjectNode;

接下來,使用 ARView 小部件更新空容器,如下所示:

ARView(
onARViewCreated: onARViewCreated,
)

在這里,您將 onARViewCreated 方法用于小部件的 onARViewCreated 屬性:

void onARViewCreated(
ARSessionManager arSessionManager,
ARObjectManager arObjectManager,
ARAnchorManager arAnchorManager,
ARLocationManager arLocationManager) {
// 1
this.arSessionManager = arSessionManager;
this.arObjectManager = arObjectManager;
// 2
this.arSessionManager.onInitialize(
showFeaturePoints: false,
showPlanes: true,
customPlaneTexturePath: "triangle.png",
showWorldOrigin: true,
handleTaps: false,
);
// 3
this.arObjectManager.onInitialize();
}

在上面的代碼中,您正在執行以下操作:

  • 定義 arSessionManager 和 arObjectManager 變量
  • 使用 ARSessionManager 的 onInitialize 方法設置會話屬性
  • 這些設置用于可視化特征點、平面、世界坐標系等。在這里,您使用 customPlaneTexturePath 來引用您的 pubspec 中定義的資產。

另外,使用 ARObjectManager 的 onInitialize 來設置管理器。

創建和刪除本地對象

現在,我們需要使用“添加/刪除本地對象”按鈕使用 onLocalObjectButtonPressed 回調創建或刪除 localObjectNode,如下所示:

Future<void> onLocalObjectButtonPressed() async {
// 1
if (localObjectNode != null) {
arObjectManager.removeNode(localObjectNode!);
localObjectNode = null;
} else {
// 2
var newNode = ARNode(
type: NodeType.localGLTF2,
uri: "assets/Chicken_01/Chicken_01.gltf",
scale: Vector3(0.2, 0.2, 0.2),
position: Vector3(0.0, 0.0, 0.0),
rotation: Vector4(1.0, 0.0, 0.0, 0.0));
// 3
bool? didAddLocalNode = await arObjectManager.addNode(newNode);
localObjectNode = (didAddLocalNode!) ? newNode : null;
}
}

在這里,我們完成了以下操作:

檢查localObjectNode是否為null,如果不為null則刪除本地對象。

通過提供本地 glTF 文件路徑和類型以及包含節點的位置、旋轉和其他變換的坐標系來創建一個新的 ARNode 對象。

將 newNode 添加到 ARView 的頂層(如 Stack)并將其分配給 localObjectNode。

NodeType 是一個枚舉,用于設置插件支持的節點類型,包括 localGLTF2、webGLB、fileSystemAppFolderGLB 和 fileSystemAppFolderGLTF2。

添加遠程對象

接下來,您需要使用帶有 onWebObjectAtButtonPressed 回調的 Add / Remove Web Object 按鈕,如下所示:

Future<void> onWebObjectAtButtonPressed() async {
if (webObjectNode != null) {
arObjectManager.removeNode(webObjectNode!);
webObjectNode = null;
} else {
var newNode = ARNode(
type: NodeType.webGLB,
uri:
"https://github.com/KhronosGroup/glTF-Sample-Models/raw/master/2.0/Duck/glTF-Binary/Duck.glb",
scale: Vector3(0.2, 0.2, 0.2));
bool? didAddWebNode = await arObjectManager.addNode(newNode);
webObjectNode = (didAddWebNode!) ? newNode : null;
}
}

上述方法與 onLocalObjectButtonPressed 方法類似,只是 URL 有所不同。在這里,URL 以來自網絡的 GLB 文件為目標。

如果要跟蹤 3D 對象的位置或姿勢變化,則需要為此定義錨點。錨點描述或檢測現實世界中的特征點和平面,并簡單地讓您在世界中放置 3D 對象。

注意,特征點是圖像中的獨特位置。例如,角落、路口等。

即使環境隨時間發生變化并影響應用程序的用戶體驗,這也可確保對象保持在其放置的位置。

最后,使用 dispose 方法對管理人員進行處置,以釋放資源。

結論

最終的項目地址:https://github.com/himanshusharma89/arcore_example

在今天的文章中,我們了解了如何使用 Flutter 構建增強現實應用程序。對于下一步,您可以嘗試使用手勢旋轉或轉換對象,或者使用 Google Cloud Anchor API 或外部數據庫獲取 3D 對象。

我希望今天的內容對你有用,如果你喜歡今天的內容,記得點贊我,關注我,并分享給你身邊做開發的朋友,也許能夠幫助到他。

最后感謝你的閱讀,祝編程快樂!

責任編輯:龐桂玉 來源: web前端開發
相關推薦

2011-09-15 09:20:02

iPhone應用ARSoccer足球游戲

2021-11-25 11:57:14

人工智能增強現實遠程辦公

2017-03-20 15:54:31

AR增強金融行業應用

2012-05-09 09:34:33

諾基亞增強現實City Lens

2023-05-04 11:38:20

AR教育領域

2023-05-12 14:58:50

Java神經網絡深度學習

2018-05-25 12:18:02

webhtml5javascript

2022-05-09 10:50:02

增強現實AR

2022-06-09 14:32:25

虛擬現實VR智慧城市

2020-06-23 10:27:18

增強現實ARCOVID-19

2017-04-07 10:11:42

AR教育經驗

2021-07-02 20:37:19

Python代碼SRP

2009-06-02 10:02:50

eclipse jboeclipse jbojboss for e

2021-08-31 09:00:00

開發Azure DevOp集成

2024-03-15 11:02:19

數據中心B2BCXAR驅動

2021-07-20 09:33:46

數據應用程序開發

2017-04-21 10:54:44

AR廣告現實

2012-07-25 13:51:06

2014-03-06 09:46:04

增強現實可穿戴設備

2020-03-31 21:50:41

JavaScript前端技術
點贊
收藏

51CTO技術棧公眾號

av自拍一区| www红色一片_亚洲成a人片在线观看_| 亚洲一区二区三区高清不卡| 亚洲天堂免费在线| 男生操女生视频在线观看| 国产一区久久精品| 972aa.com艺术欧美| 国产精品十八以下禁看| 精品深夜av无码一区二区老年| 亚洲精品白浆高清| 欧美一区二区人人喊爽| 男人天堂999| av免费在线免费| 国产色一区二区| 国产精品国产一区二区| 亚洲一区二区人妻| 久久av最新网址| 欧美巨大黑人极品精男| 国产精品国产三级国产专业不| 99热这里只有精品首页 | 亚洲国产精品字幕| 亚洲一区日韩精品| 欧美91看片特黄aaaa| 亚洲综合一区在线| 亚洲巨乳在线观看| 蝌蚪视频在线播放| www.在线欧美| 超碰97在线资源| ,一级淫片a看免费| 日韩高清在线观看| 热99精品只有里视频精品| 久久免费精彩视频| 女人天堂亚洲aⅴ在线观看| 色悠悠久久久久| 色呦呦一区二区| 成人爽a毛片| 日韩欧美在线影院| 国产毛片久久久久久| 91精品影视| 一本色道a无线码一区v| 成人精品视频在线播放| 成人在线视频亚洲| 亚洲欧美激情在线| 日本福利视频导航| 含羞草www国产在线视频| 国产精品系列在线| 亚洲欧美99| 国产精品一二三区视频| 国产日韩一级二级三级| 欧美精品123| 欧美一级特黄aaaaaa| 美美哒免费高清在线观看视频一区二区| 欧洲一区二区视频| 国产精品久久久久久久久久精爆| 国产精品入口66mio| 97在线视频精品| 特级毛片www| 久久国产成人| 国产精品第8页| 在线免费看av的网站| 久久激情中文| 国产成人aa精品一区在线播放| 无码人妻av一区二区三区波多野| 日韩精品乱码免费| 国产精品美女av| 国产又粗又长又大视频| 国内精品在线播放| 99一区二区三区| 婷婷久久久久久| 久久伊99综合婷婷久久伊| 欧美色欧美亚洲另类七区| 韩国中文字幕2020精品| 欧美极品aⅴ影院| 亚洲国产精品影视| 92久久精品| 精品久久久久久久久久久| 任你操这里只有精品| 黄色精品视频网站| 欧美一区二区三区不卡| 荫蒂被男人添免费视频| 欧美美乳视频| 日韩一区二区福利| 国产一级二级三级| 久久久久久色| 91精品在线观| 婷婷丁香一区二区三区| 国产精品视频一二三区| 成年人视频大全| 色尼玛亚洲综合影院| 91精选在线观看| 中文字幕精品久久久| 精品理论电影在线| 欧美大片在线免费观看| 国产精品视频一区在线观看| 久久狠狠亚洲综合| 精品国产福利| 男人天堂手机在线| 精品欧美国产一区二区三区| 91高清国产视频| 青青久久av| 久久伊人精品一区二区三区| 啦啦啦免费高清视频在线观看| 九九国产精品视频| 免费看污久久久| 中文字幕在线观看网站| 日韩欧美国产骚| 久久久久亚洲AV成人网人人小说| 精品国产一区一区二区三亚瑟 | 麻豆91在线看| 裸模一区二区三区免费| a级毛片免费观看在线| 色婷婷亚洲精品| 精品一区二区三区四区五区六区| 日本一二区不卡| 欧美在线视频免费| 亚洲精品一区二区三区蜜桃| 国产精品久久久久精k8 | 无遮挡爽大片在线观看视频| 欧美一区二区视频在线观看2022 | 26uuu国产精品视频| 91成品人影院| 2020国产精品| 亚洲 欧美 综合 另类 中字| 精品福利在线| 国产一区二区三区三区在线观看 | 黄色av免费在线| 欧美色图天堂网| www在线观看免费视频| 一区在线免费| 操人视频欧美| 手机av免费在线| 欧美一区二区三区在线观看视频| 黄色国产在线播放| 日韩主播视频在线| 欧美精品一区二区三区在线四季 | 亚洲美女视频| 国产精品爽爽爽爽爽爽在线观看| 牛牛影视精品影视| 欧美日韩中文在线观看| www国产视频| 极品少妇一区二区三区| 99在线热播| 女人黄色免费在线观看| 欧美成人精品高清在线播放| 黄页网站免费观看| 国产精品主播直播| 日本福利视频在线观看| 国产亚洲久久| 欧美大秀在线观看| 亚洲成人中文字幕在线| 亚洲五码中文字幕| 国产精品手机在线观看| 最新国产乱人伦偷精品免费网站| 亚洲一区二区在线| 欧美性爽视频| 亚洲国产精品人久久电影| 国产乡下妇女做爰视频| 成人av电影在线| 欧美三级一级片| 精品视频国产| 国产一区二区丝袜高跟鞋图片| 欧美性天天影视| 欧美一区二区日韩| 好吊操这里只有精品| 26uuu色噜噜精品一区| 欧美 日韩 国产 激情| 日本不卡电影| 成人激情综合网| 欧美黑人xx片| 日韩毛片在线看| 中文字幕观看在线| 亚洲欧美日韩国产综合| 国产精品二区视频| 在线日本高清免费不卡| 免费看成人片| 激情视频亚洲| 97色在线播放视频| 9色在线视频| 日韩免费看网站| 天堂а√在线中文在线新版 | 在线播放豆国产99亚洲| 6080成人| 国产精品第二页| 黄色的视频在线观看| 亚洲色图第一页| 国产三级自拍视频| 都市激情亚洲色图| 亚洲一二三四五六区| 国产成a人亚洲精| 十八禁视频网站在线观看| 亚洲精品国产偷自在线观看| 精品视频一区在线| gogo大尺度成人免费视频| 98视频在线噜噜噜国产| 淫片在线观看| 日韩精品在线视频| 国产丝袜视频在线观看| 色综合夜色一区| 欧美人妻一区二区| 中文字幕精品在线不卡| 国产一级伦理片| 国产美女主播视频一区| 97av视频在线观看| 欧美人成在线| 一区二区在线不卡| 日本成人7777| 超碰97国产在线| 香蕉久久一区| 日本午夜人人精品| √8天堂资源地址中文在线| xxxxx91麻豆| 九九在线视频| 日韩精品视频在线观看免费| 99久久精品国产一区二区成人| 91成人免费网站| 青青草成人av| 亚洲国产日韩在线一区模特| 日韩在线视频免费看| 久久精品人人做人人综合| 国产a级黄色片| 国产精品资源站在线| 国产永久免费网站| 97超碰人人草| 久久伊人中文字幕| 人妻 日韩 欧美 综合 制服| 国产综合久久久久久鬼色| 亚洲狼人综合干| 久久久久欧美精品| 老太脱裤子让老头玩xxxxx| 亚洲一区二区| 日本不卡一区二区三区四区| 日本不卡免费一区| 日韩欧美亚洲精品| 你微笑时很美电视剧整集高清不卡 | 精品国产不卡一区二区三区| 国产免费黄色网址| 欧美日韩高清影院| 一二三区在线播放| 欧日韩精品视频| 中文在线字幕av| 欧美在线高清视频| 欧美另类高清videos的特点| 色婷婷国产精品| 日本免费在线观看视频| 欧美天天综合色影久久精品| 欧美又大又硬又粗bbbbb| 欧美精品videos另类| 日韩中文字幕久久| 免费在线午夜视频| 美女国内精品自产拍在线播放| 乱人伦中文视频在线| 色青青草原桃花久久综合| 黄网页在线观看| 美日韩丰满少妇在线观看| 污视频在线看网站| 久久久久中文字幕| 毛片在线网站| 国产精品aaa| 亚洲aⅴ网站| 97超碰人人看人人| 久久1电影院| 欧美日韩在线观看一区| 成人短片线上看| 一道本在线观看视频| 欧美日韩p片| 波多野结衣之无限发射| 囯产精品一品二区三区| 91国偷自产一区二区使用方法| 亚洲图片欧美日韩| 欧美精品色一区二区三区| a天堂在线观看视频| 欧美va亚洲va国产综合| 午夜影院免费视频| 亚洲色图偷窥自拍| 色网站免费在线观看| 欧美床上激情在线观看| 国产精品yjizz视频网| 国产精品极品在线| 亚洲小说春色综合另类电影| 精品国产福利| 欧美韩国日本在线观看 | eeuss中文字幕| 一区二区三区四区在线播放| 麻豆久久久久久久久久| 精品视频色一区| 亚洲国产www| 亚洲性视频网址| 污片在线免费观看| 日本久久亚洲电影| 精品国产欧美| 日本一区二区视频| 国产一区二区三区四区三区四| 日本免费黄视频| 国产呦萝稀缺另类资源| 国产人妻人伦精品1国产丝袜| 国产精品久久久久一区二区三区 | 国产成人综合网| 一级黄色片大全| 亚洲精品成人少妇| 麻豆精品久久久久久久99蜜桃| 5566中文字幕一区二区电影| 亚洲欧洲综合在线| 欧美人与物videos| 成人不卡视频| 久久精品国产美女| 欧美成人首页| 激情五月俺来也| 91美女片黄在线| 久草视频中文在线| 欧美日韩精品一区视频| 污视频在线免费观看| 欧美另类xxx| 日本中文字幕视频一区| 日本不卡免费新一二三区| 国内精品久久久久久久影视蜜臀 | 国产主播自拍av| 激情久久五月天| 91免费欧美精品| 大香伊人久久| 亚洲自拍中文字幕| 奇米影视亚洲| 国产xxxxx视频| 91美女片黄在线观看| 国产精品99re| 日韩精品专区在线影院观看| 日本免费在线视频| 国产精品免费视频xxxx| 亚洲欧洲av| 国产综合av在线| jiyouzz国产精品久久| 久久久www成人免费毛片| 在线播放91灌醉迷j高跟美女| 第三区美女视频在线| 欧美亚洲成人免费| 国产香蕉精品| 日韩精品一区在线视频| 国产成人精品在线看| 国产1区2区3区4区| 在线播放91灌醉迷j高跟美女| 婷婷五月在线视频| 国产欧美一区二区三区在线看| 国际精品欧美精品| 国产熟人av一二三区| 国产日韩欧美a| 中文字幕久久久久| 在线观看精品国产视频| 成人av色网站| 亚洲在线播放电影| 久久综合综合久久综合| 亚洲视频重口味| 7777精品伊人久久久大香线蕉超级流畅 | 国产乱淫a∨片免费视频| 超碰精品一区二区三区乱码| 国产一区一区| 国产爆乳无码一区二区麻豆| 成人性视频免费网站| 日本少妇毛茸茸高潮| 亚洲精品国产suv| 不卡一二三区| 深夜福利成人| 久久99久久久欧美国产| 丰满少妇被猛烈进入一区二区| 欧美一级理论片| 成人一级福利| 日本免费一区二区三区| 久久成人免费电影| 久久久精品视频免费观看| 亚洲精品在线电影| 伊人久久视频| 一区二区三区四区不卡| 国产成人在线视频网站| 国产成人亚洲欧洲在线| 国产亚洲美女久久| 高清一区二区| 国产资源在线视频| 国产午夜亚洲精品理论片色戒| 国产又粗又黄又爽的视频| 欧美高清性猛交| 狠狠色狠狠色综合婷婷tag| 无套内谢丰满少妇中文字幕| 欧美日韩亚洲系列| 91xxx在线观看| 国产精品v欧美精品v日韩精品| 亚洲欧美se| 久久久久久国产三级电影| 欧美综合自拍| 99九九99九九九99九他书对| 亚洲狠狠爱一区二区三区| 国产精品四虎| 国产福利久久精品| 秋霞影院一区二区| 精品在线免费观看视频| 中日韩美女免费视频网址在线观看| 亚洲伊人影院| 香港日本韩国三级网站| 精品人伦一区二区三区蜜桃网站| 秋霞午夜理伦电影在线观看| 九九99久久| 国产成人亚洲综合a∨猫咪| 精品一区二区无码|