Eyewear_DeviceHasNoTracking

演示AR眼镜支持以及如何在AR眼镜上使用图像跟踪功能。

如果你手头上有不支持VIO的AR眼镜,可以参考这个Sample,自己适配AR眼镜。此Sample采用AR眼镜显示方式,用了双屏渲染,并关闭了Camera背景渲染。目前该Sample只适配影创Action One及EPSON BT-350,如果想要适配别的眼镜需要标定眼镜参数。

对于大多数新设备,我们不再推荐使用这样的方式连接EasyAR。我们需要设备自身有VIO能力,在此基础上使用自定义相机方式直接对接EasyAR,否则能使用的功能将极其受限,且已经不满足如今的AR体验了。如果你是设备制造商,可以通过商务渠道与我们联系。

运行前配置

需要在AndroidManifest中添加 invision.display_mode ,这也可以通过打开 invision.display_mode-vr.aar 对Android平台的支持来实现。

../../_images/image_s16_5.png

如果需要在Android设备上运行其它sample,需要确保回撤这个改动。

用法

../../_images/image_s16_4.png

详解

这个sample一般可以在没有VIO功能的眼镜中使用。

当有像BT-350这样的眼镜的时候,需要设置 CameraDeviceFrameSource.Camera 为 场景中的 CameraRig 。其中 CameraRig 只是一个含有两个Camera的空节点。

由于眼镜上渲染不需要显示相机图像,需要将 CameraImageRenderer 关闭。

../../_images/image_s16_1.png

CameraRig 下两个Camera的viewport需要调整为分别渲染屏幕的左半边和右半边。

../../_images/image_s16_2.png ../../_images/image_s16_3.png

将预先标定好的参数加载进RenderCameraController。

parameterList[eyewearBT350].Add(Resources.Load<RenderCameraParameters>("Parameters/Epson BT350/LeftEye"));
parameterList[eyewearBT350].Add(Resources.Load<RenderCameraParameters>("Parameters/Epson BT350/RightEye"));

每帧更新投影矩阵

Session.FrameUpdate += (_) =>
{
   LeftEye.projectionMatrix = parameterList[eyewearBT350][0].Projection(Session, LeftEye) * Matrix4x4.Rotate(Quaternion.Inverse(displayCompensation));
   RightEye.projectionMatrix = parameterList[eyewearBT350][1].Projection(Session, RightEye) * Matrix4x4.Rotate(Quaternion.Inverse(displayCompensation));
};

Session.FrameChange += (OutputFrame outputFrame, Quaternion displayCompensation) =>
{
   if (outputFrame == null) { return; }
   this.displayCompensation = displayCompensation;
};