当前位置: 首页 > backend >正文

ARFoundation 图片识别,切换图片克隆不同的追踪模型

 场景搭建:

你可以把我的代码发给AI,去理解

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
using TMPro;
using UnityEngine.Events;public class ImageARmanager : MonoBehaviour
{[Header("定义一个回调函数入口,会在外部面板显示")]public UnityEvent Youhanshul;#region// 实现识别图库中的某张图后,克隆对应模型[Header("存储AR图像识别组件")]public ARTrackedImageManager oneImageARmanager;[Header("存储AR图像库")]public XRReferenceImageLibrary oneARLibra;public GameObject[] OneAMuban;public TextMeshProUGUI onetip;private void OnEnable(){oneImageARmanager.trackedImagesChanged += OneImageARmanager_trackedImagesChanged;}void OnDisable(){ oneImageARmanager.trackedImagesChanged -= OneImageARmanager_trackedImagesChanged;}#endregionprivate void OneImageARmanager_trackedImagesChanged(ARTrackedImagesChangedEventArgs obj){GameObject Tempobj;onetip.text = "识别到图";Youhanshul.Invoke();foreach (var oneImage in obj.added){onetip.text = "开始遍历进入摄像头的图"+ obj.added[0].name+ oneImage.referenceImage.name;if (oneImage.referenceImage.name == "A"){onetip.text = "识别到A图,开始克隆";Debug.Log("我找到一张名字叫A的图片,在所有进入摄像头的图片中");Tempobj= GameObject.Instantiate(OneAMuban[0], oneImage.transform.position, oneImage.transform.rotation,oneImage.transform);onetip.text = "克隆完毕";onetip.text = "克隆的物体坐标"+ Tempobj.transform.position;Tempobj.transform.localPosition = Vector3.zero;  // 重置位置Tempobj.transform.localRotation = Quaternion.identity; // 重置旋转}if (oneImage.referenceImage.name == "B"){onetip.text = "识别到B图,开始克隆";Debug.Log("我找到一张名字叫B的图片,在所有进入摄像头的图片中");Tempobj = GameObject.Instantiate(OneAMuban[1], oneImage.transform.position, oneImage.transform.rotation, oneImage.transform);onetip.text = "克隆完毕b";Tempobj.transform.localPosition = Vector3.zero;  // 重置位置Tempobj.transform.localRotation = Quaternion.identity; // 重置旋转}}//更新图片位置foreach (var updatedImage in obj.updated){bool isVisible = updatedImage.trackingState == TrackingState.Tracking;if (updatedImage.transform.childCount > 0){updatedImage.transform.GetChild(0).gameObject.SetActive(isVisible);}}//销毁离开图片的子物体foreach (var OneLeaveImage in obj.removed){//销毁离开的那个图片子物体onetip.text = "销毁离开的那个图片子物体";if (OneLeaveImage.transform.childCount > 0){Destroy(OneLeaveImage.transform.GetChild(0).gameObject);}}}
}

http://www.xdnf.cn/news/5860.html

相关文章:

  • Rodrigues旋转公式-绕任意轴旋转
  • Excel宏和VBA的详细分步指南
  • Linux系统:文件系统前言,详解CHSLBA地址
  • 如何创建maven项目
  • java之网络编程
  • uniapp(vue3)动态计算swiper高度封装自定义hook
  • SD-HOST Controller design-----SD CLK 设计
  • 深度学习之优化器【从梯度下降到自适应学习率算法】(pytorch版)
  • 华为鸿蒙电脑能否作为开发机?开发非鸿蒙应用?
  • 微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
  • 销售具备的能力有哪些
  • JAVA研发+前后端分离,ZKmall开源商城B2C商城如何保障系统性能?
  • Python中元组(Tuple)使用详解和注意事项
  • Kotlin 中的 Unit 类型的作用以及 Java 中 Void 的区别
  • 拓扑排序+dp
  • STM32-DMA数据转运(8)
  • 直接在Excel中用Python Matplotlib/Seaborn/Plotly......
  • Linux 内核网络协议栈:从 Socket 类型到协议注册的深度解析
  • 思迈特软件携手天阳科技,打造ChatBI金融智能分析新标杆
  • 适应性神经树:当深度学习遇上决策树的“生长法则”
  • Spring Boot 整合 Redis 实战
  • MySQL 事务(二)
  • 在 Qt Creator 中为 QDockWidget 设置隐藏和显示按钮
  • 中电金信参编的国家标准《信息技术 中间件 消息中间件技术要求》正式发布
  • 【爬虫】DrissionPage-1
  • 【TDengine源码阅读】#if defined(__APPLE__)
  • (C语言)超市管理系统(测试版)(指针)(数据结构)(二进制文件读写)
  • Android支持离线功能的复杂业务场景(如编辑、同步):设计数据同步策略的解决方案
  • 基于大模型的腰椎管狭窄术前、术中、术后全流程预测与治疗方案研究报告
  • 数据服务包括哪些内容?一文讲清数据服务模块的主要功能!