【发布时间】:2018-01-29 07:10:30
【问题描述】:
我正在创建一个基于Augmented Reality 的应用程序。我从 Internet 下载了一个 .obj 格式的 3D 对象,并将其转换为 .scn 格式的 Xcode。当我运行应用程序相机启动但图像未添加到场景中。我正在使用 ARKit SceneKitView
import ARKit
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
addTapGestureToSceneView()
configureLighting()
}
func configureLighting() {
sceneView.autoenablesDefaultLighting = true
sceneView.automaticallyUpdatesLighting = true
}
@IBOutlet weak var sceneView: ARSCNView!
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let configuration = ARWorldTrackingConfiguration()
sceneView.session.run(configuration)
}
func addBox(x: Float = 0, y: Float = 0, z: Float = 0)
{
guard let paperPlaneScene = SCNScene(named: "chair_f.scn"),
let paperPlaneNode = paperPlaneScene.rootNode.childNode(withName: "chair_f",recursively: true)
else { return }
paperPlaneNode.position = SCNVector3(x, y, z)
sceneView.scene.rootNode.addChildNode(paperPlaneNode)
}
func addTapGestureToSceneView() {
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.didTap(withGestureRecognizer:)))
sceneView.addGestureRecognizer(tapGestureRecognizer)
}
@objc func didTap(withGestureRecognizer recognizer: UIGestureRecognizer) {
let tapLocation = recognizer.location(in: sceneView)
let hitTestResults = sceneView.hitTest(tapLocation)
guard let node = hitTestResults.first?.node else {
let hitTestResultsWithFeaturePoints = sceneView.hitTest(tapLocation, types: .featurePoint)
if let hitTestResultWithFeaturePoints = hitTestResultsWithFeaturePoints.first {
let translation = hitTestResultWithFeaturePoints.worldTransform.translation
addBox(x: translation.x, y: translation.y, z: translation.z)
}
return
}
node.removeFromParentNode()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillAppear(animated)
sceneView.session.pause()
}
}
extension float4x4 {
var translation: float3 {
let translation = self.columns.3
return float3(translation.x, translation.y, translation.z)
}
}
【问题讨论】:
-
如果不检查您的代码,我建议您尝试几个不同的对象。在我的第一次测试中,许多 scn 对象根本不起作用。
-
这个问题有什么更新吗?
-
没有。还在等
标签: ios swift xcode swift4 arkit