ARKit 中(包括官方 demo)摆放物体默认都沿同一个方向,这样对于用户来说是无法预测的,待展示的物体可能会面向任意方向。
但对于展示类 app 来说,让待展示的物体正对用户摆放无疑是最佳的用户体验。
实现方式如下:
ARSCNView 有一个实例变量 pointOfView,这是一个 SCNNode,提供了虚拟摄像机的位置和方向,所以第一步获取它的 rotation:
let pointOfViewRotation = sceneView.pointOfView?.rotation
然后让物体绕 y 轴旋转(水平面上)与虚拟摄像机相同的角度即可:
object.rotation = SCNVector4Make(0, pointOfViewRotation.y, 0, pointOfViewRotation.w)