(三)AR Foundation开发



1. ARSessionOrigin 里建立脚本



ARSessionOrigin→在 I nspector面板 下添加脚本→点击 Add Component 输入 PlaceModel (放置模型)



→点 击添加( Create and Add



 

Unity生成红外测温图 unity飞机红外成像仿真程序_右键

(生成脚本)


2.添加完成脚本-使用 VS 打开


①AR Session Origin AR Session 会话安装好,


在程序一开始运行的时候就已经开始 做平面的监测了

 

Unity生成红外测温图 unity飞机红外成像仿真程序_Unity生成红外测温图_02

 

Unity生成红外测温图 unity飞机红外成像仿真程序_命名空间_03


②我们要做的是设计脚本→发送射线 ,涉及到这个平面上(达到相应的位置)


物体上 我们已经添加了 AR Raycast Manager (没有可以 自己Add Component ) (光线投射管理)的脚本


a.现在需要把 Raycast Manager定义出来,在vs里创建一个命名空间

 

Unity生成红外测温图 unity飞机红外成像仿真程序_ar_04


Unity生成红外测温图 unity飞机红外成像仿真程序_命名空间_05

 代码不正确注:根源还是unity生成的问题,建议换一个unity版本。老师版本↓

Unity生成红外测温图 unity飞机红外成像仿真程序_ar_06

 我们现在编写的就是为了依附设置,

Unity生成红外测温图 unity飞机红外成像仿真程序_拖拽_07


报错1:


期间遇到过这样一个问题,安装好ARCore后就报错。对应的package里面的代码有问题,可是也没法解决。后来把unity的版本从2019.4.9换成2019.3.0就没事了(之前另一台电脑用的同样是4.9,并没有问题),不知道是不是unity的BUG。


Library\PackageCache\com.unity.xr.management@3.2.17\Editor\XRGeneralBuildProcessor.cs(39,52): error CS0117: ‘BuildPipeline’ does not contain a definition for ‘GetBuildTargetName’


3.VS中设置 在Update(升级) 中设置     射线发送


raycast(射线)



方法一:用户点到哪里模型就放到哪里(可以放置很多模型(机器人、小球))


方法二:持续在屏幕中间发射一条射线,设置一个光标,用户可以移动手机,把虚拟物体放到光标的位置上


Unity生成红外测温图 unity飞机红外成像仿真程序_右键_08


 (注:注意检查 } 、英文符号、;)


 

4.在unity场景中   方法一:设置光标

①在Hierarchy中新建一个Quad(四边形)

(新建模型时都要习惯性把位置归零Reset一下)

Rotation:90,0,0.

Scale:1,0.2,1

复制一个Quad(ctrl+D)

Rotation:90,0,0.

Scale:0.2,1,1



Unity生成红外测温图 unity飞机红外成像仿真程序_命名空间_09



③新建一个 空物体 (Hierarchy面板右键Create Empty) 创建出 GameObject


→把两个 Quad 拖到 GameObject 中命名为 PosCursor(定位) ( 设置一个舒服的大小Scale:0.2,0.2,0.2 )


把PosCursor拖到Place Model Manager→Pos Cursor里面



Unity生成红外测温图 unity飞机红外成像仿真程序_命名空间_10


拖拽好    先关闭→ 检测平面的时候     再打开



Unity生成红外测温图 unity飞机红外成像仿真程序_命名空间_11


⑤导入模型( Reset一下


a.再建立 一个 空物体 (Hierarchy面板右键Create Empty) 创建出 GameObject


b.把模型拖入 GameObject 中→命名为 VirtualTarget(虚拟对象)


c.把拖入的 模型 整体向上移动一个单位Position0,1,0


d.模型正对用户



光标始终和摄像机保持一致的,摄像机永远是蓝轴朝前的虚拟物体放置后蓝轴也是朝前的,但是会背对用户。


为了让模型正对用户,调整Rotation0,180,0.


e. 模型缩小 便于放到桌子上


 Scale:0.2,0.2,0.2



Unity生成红外测温图 unity飞机红外成像仿真程序_ar_12



f.



Unity生成红外测温图 unity飞机红外成像仿真程序_命名空间_13



⑤相机的旋转值


我们在代码中设计的是主相机Main的,但是我们这里是ARCamera


因此要把AR Session Origin下AR Camera中的Tag设置为MainCame和代码保持一致



Unity生成红外测温图 unity飞机红外成像仿真程序_拖拽_14