现在有个场景,在找到平面后,如果再次转动镜头,平面跟着镜头走,类似于宜家的app(Ikea place),此时放置模型,会出现正面未朝向观众的问题,那如何在放置模型时,无论手机的任意移动和转向,都能保证模型始终“面向观众”呢?
其实每当点击屏幕,模型都会被放到点击点对应的这个平面上,这个过程可以抽象成通过相机视口发出了一条射线撞击这个平面,如下图,转动镜头,平面跟着移动,那相机节点与点击点的射线就有了个角度,这个角度就是模型在被放置时,正面偏移镜头的角度,所以需要模型旋转:
guard let camera = sceneView.session.currentFrame?.camera else { return }
let rotate = simd_float4x4(SCNMatrix4MakeRotation(camera.eulerAngles.y, 0, 1, 0))
virtualObject.simdTransform = rotate