如何解决如何从 ARFrame 相机设置 SCNView 相机?
我在ViewController中创建了一个SCNView,我有一个ARFrame信息,如何设置SCNView的camera节点,让它和ARFrame的camera一样?我不想用ARSCNView。
解决方法
ARSession 可以作为独立实体运行(不一定必须连接到视图)。使用以下代码获得您期望的结果:
import SceneKit
import ARKit
class ViewController: UIViewController {
@IBOutlet var sceneKitView: SCNView!
let session = ARSession()
var arCameraTransform: simd_float4x4?
let scnCamera = SCNNode()
override func viewDidLoad() {
super.viewDidLoad()
sceneKitView.scene = SCNScene()
sceneKitView.backgroundColor = .black
let cylinder = SCNCylinder(radius: 0.1,height: 1)
cylinder.firstMaterial?.diffuse.contents = UIColor.red
let node = SCNNode(geometry: cylinder)
node.position.z = -0.75
sceneKitView.scene?.rootNode.addChildNode(node)
scnCamera.camera = SCNCamera()
sceneKitView.scene?.rootNode.addChildNode(scnCamera)
self.session.delegate = self
self.session.run(ARWorldTrackingConfiguration())
}
}
...
extension ViewController: ARSessionDelegate {
func session(_ session: ARSession,didUpdate frame: ARFrame) {
self.arCameraTransform = frame.camera.transform
scnCamera.simdTransform = self.arCameraTransform!
print(sceneKitView.pointOfView?.simdTransform.columns.3 as Any)
}
}
附言
这适用于 .landscape
方向...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。