Unity 2021.1.15 ARCore环境配置与样例开发
前言
首先这个文档是基于Unity2018及以上的,由于实习需要做AR相关的内容,但是AR Core之前的教程大多是基于SDK的,而这一功能已不在Unity更高版本中支持,同时楼主又是个Unity小白,所以为了跑起ARCore在安卓上的demo用了很久,以下便是过程记录,仅供参考~
ARCore官方文档
前期准备
- 安装unity以及对应版本的Android Build Support
推荐用unityhub直接安装
- 安装AR Foundation插件与ARCore XR Plugin
在Unity内的Window/Package Manager的Unity Registry中搜索安装
- 将unity的环境调整为Android
位置为File/Build Settings,选择Android并点击Switch Platform,成功后可以看到如下内容
点击左下角的Player Settings,随后对其中的Other Settings进行配置:
注意这里要修改默认的包名以及Android版本,24以上的才支持AR Core,其他设置也与图中保持一致即可
操作过程
0. 创建元素
- 在Hierarchy中右键,找到XR,然后创建即可,以下模块均为创建相应部分后的操作
1. 创建一个AR Session
检查是否有AR Input Manager(如果没有就要用Add Component添加)
2. 创建一个AR Session Origin
检查AR Camera已经对应了AR Session Origin Camera
- 使用Add Component添加一个AR Plane Manager(实现检测平面的功能)
选择DetectionMode为Everything(为检测水平和垂直的平面)
- 使用Add Component添加AR Raycast Manager(为了与平面交互)
最终结果如下:
- 选择AR Camera的Tag为主相机(记得删除原本的相机)
3. 创建一个AR Default Plane
- 先在上面的Hierarchy中创建(XR/AR Default Plane),再拖至Project视图成为预设(prefab),再删除Scene部分的Plane
- 将预设的Plane拖至AR Session Origin的AR Plane Manager的Plane Prefab
4. 创建一个spawn作为显示在平面内的物体
- 创建一个名为SpawnableObject的Cube
- 设置scale为0.1,0.1,0.1
- 为cube新建一个名为Spawnable的tag,并为cube选中它
最后结果如下:
- 与前面平面同理,将其拖入project window创建预设,并删除Hierarchy中的Cube
(预设Prefab其实有点类似复用的模块、组件…)
5. 创建一个交互的脚本
- 创建一个C#脚本并将其命名为SpawnableManager
- 创建一个Empty Game Object在Scene中,并取名为SpawnManager
- 修改脚本代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;public class SpawnableManager : MonoBehaviour
{[SerializeField]ARRaycastManager m_RaycastManager;List<ARRaycastHit> m_Hits = new List<ARRaycastHit>();[SerializeField]GameObject spawnablePrefab;GameObject spawnedObject;// Start is called before the first frame updatevoid Start(){spawnedObject = null;}// Update is called once per framevoid Update(){// 检测点击,针对点击的不同阶段(phase),我们执行不同的事务if (Input.touchCount == 0)return;if (m_RaycastManager.Raycast(Input.GetTouch(0).position, m_Hits)){if (Input.GetTouch(0).phase == TouchPhase.Began){SpawnPrefab(m_Hits[0].pose.position);}else if (Input.GetTouch(0).phase == TouchPhase.Moved && spawnedObject != null){spawnedObject.transform.position = m_Hits[0].pose.position;}if (Input.GetTouch(0).phase == TouchPhase.Ended){spawnedObject = null;}}}private void SpawnPrefab(Vector3 spawnPosition){spawnedObject = Instantiate(spawnablePrefab, spawnPosition, Quaternion.identity);}
}
6. 绑定到页面对象
- 创建一个空的Object,并将其改名为SpawnManager
- 将刚才创建好的C#脚本拖入对象:
- 可以看到脚本已经出现在右侧
- 将之前创建的AR Session Origin作为该脚本的Raycast Manager拖入
这将作为页面的AR控制脚本
- 将之前创建的SpawnableObject作为该脚本的Spanwnable Prefab拖入
这将成为代码中可以复制的对象
7. 导出与运行
首先将XR-Plugin在Android的使用权打开(Edit/Project Settings)
在刚刚的Build Settings中,选择Build,并选择保存位置,即可获得APk,安装在手机上就可以看到效果了:
效果类似这样,但是最后出现的物体是你设置的SpawnableObject,仔细阅读代码应该就能明白了!
Unity 2021.1.15 ARCore环境配置与样例开发相关推荐
- Linux开发环境配置--正点原子阿尔法开发板
Linux开发环境配置–正点原子阿尔法开发板 文章目录 Linux开发环境配置--正点原子阿尔法开发板 1.网络环境设置 1.1添加网络适配器 1.2虚拟网络编辑器设置 1.3Ubuntu和Windo ...
- 【Flask框架】一. Flask框架初体验(配置环境 + 简单demo样例)
文章目录 一. Flask框架初体验(配置环境 + 简单demo样例) 虚拟环境 新建项目 将Pycharm改为FLASK_DEBUG模式 修改FLASK_DEBUG模式的步骤 配置文件 简单用法 U ...
- [Android] 环境配置之Android Studio开发NDK
2019独角兽企业重金招聘Python工程师标准>>> ======================================================== 作者:qiu ...
- Android环境配置(Eclipse全开发环境下载)
Android环境配置 前期准备 Android环境的Eclipse: 网站链接:https://www.runoob.com/w3cnote/android-tutorial-eclipse-adt ...
- C#对UG二次开发环境配置、调试和开发教程
一.UG的宏录制 1.选择宏录制的语言C# 1.1 打开NX新建一个模型 1.2 打开文件->首选项->用户界面,设置录制语言为C# 1.3 打开开发人员,点录制即可进行录制 1.4 将录 ...
- win10下从源码运行Cura——环境配置(二次开发准备工作)
win10下从源码运行Cura(二次开发准备工作) win10下从源码运行Cura 配置过程(踩坑指南) win10下从源码运行Cura 本人小白一只,近来需要了解Cura,故自己摸爬滚打学习.网上对 ...
- RN开发(1)__环境搭建与样例
目录 前言 正文 环境搭建 样例实现 问题整理(补充中) 相关资源链接 小结 Tip:使用"Ctrl+F",在搜索框中输入问题 前言 先要了解几个相关的词汇Node.js,Reac ...
- Lumerical Python API学习笔记(一):Lumopt配置以及样例运行
参考文章 完美解决Windows用户下lumerical(FDTD)的python库lumopt安装方法 bilibili–lumerical配合pycharm使用python联合开发的问题 0.先说 ...
- 【Unity + Google Cardboard】 VR环境配置
翻译一下google cardboard接unity的开发文档 前面 一直想尝试开发一个VR游戏试试-- Unity的官方文档在这里 一开始看的时候分不清各种VR设备,如果你也是的话--比如只有一个能 ...
最新文章
- Silverlight 控件的验证
- ISA Server实验环境搭建与企业×××配置
- 网络与服务器编程框架库 acl_3.0.12 发布
- window.open与window.location.href
- Error:Can’t find import 2508 in coredll.dll问题解决
- python爬虫导入数据库_python爬虫爬下来的数据怎么导入到MySQL
- python代码性能分析_使用memory_profiler对代码进行性能分析会增加执行时间
- python爬虫微博图片,pyhton爬虫爬取微博某个用户所有微博配图
- 虚拟现实建模语言VRML
- 重启php7.0-fpm
- 行业点评:大疆反腐事件,员工的反驳
- java课程设计学生信息管理系统。
- 小班计算机游戏教案,幼儿园小班游戏教案15篇
- 使用Feign调用服务接口
- 新浪微博模拟登陆passwd参数rsa解密
- 戴尔服务器连接显示器无信号 键盘灯不亮,键盘灯不亮按键没反应怎么回事及解决办法...
- 支付宝小程序财富号基金相关页面之间相关跳转
- RK3566 AndroidR usb otg host和peripheral切换软件手动切换,写/sys/devices/platform/fe8a0000.usb2-phy/otg_mode
- Stackstorm启动ChatOps
- [历朝通俗演义-蔡东藩-前汉]第006回 阬深谷诸儒毙命 得原璧暴主惊心