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平台的支持来实现。
如果需要在Android设备上运行其它sample,需要确保回撤这个改动。
用法¶
详解¶
这个sample一般可以在没有VIO功能的眼镜中使用。
当有像BT-350这样的眼镜的时候,需要设置 CameraDeviceFrameSource.Camera 为 场景中的 CameraRig 。其中 CameraRig 只是一个含有两个Camera的空节点。
由于眼镜上渲染不需要显示相机图像,需要将 CameraImageRenderer 关闭。
CameraRig 下两个Camera的viewport需要调整为分别渲染屏幕的左半边和右半边。
将预先标定好的参数加载进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;
};