
現(xiàn)在有個場景,在找到平面后,如果再次轉(zhuǎn)動鏡頭,平面跟著鏡頭走,類似于宜家的app(Ikea place),此時放置模型,會出現(xiàn)正面未朝向觀眾的問題,那如何在放置模型時,無論手機(jī)的任意移動和轉(zhuǎn)向,都能保證模型始終“面向觀眾”呢?
其實每當(dāng)點擊屏幕,模型都會被放到點擊點對應(yīng)的這個平面上,這個過程可以抽象成通過相機(jī)視口發(fā)出了一條射線撞擊這個平面,如下圖,轉(zhuǎn)動鏡頭,平面跟著移動,那相機(jī)節(jié)點與點擊點的射線就有了個角度,這個角度就是模型在被放置時,正面偏移鏡頭的角度,所以需要模型旋轉(zhuǎn):

guard let camera = sceneView.session.currentFrame?.camera else { return }
let rotate = simd_float4x4(SCNMatrix4MakeRotation(camera.eulerAngles.y, 0, 1, 0))
virtualObject.simdTransform = rotate