如何在 ARKit 中添加多个对象?
How can I add multiple objects in ARKit?
在苹果的AR示例项目中,有一个选项可以在房间里放置一把椅子。我需要做什么才能在代码中放置多把椅子?
一个简单的追加函数可以解决问题吗?
当我点击椅子选项时,我需要将第一把椅子放在平面上。如果我再次点击椅子应该再次放置的选项。我知道我也需要一个删除功能。那么如何检测用户的长按呢?
每次点击显示屏时添加一个球的基本点击功能。
@objc func handleTap(_ gesture: UITapGestureRecognizer) {
let results = self.sceneView.hitTest(gesture.location(in: gesture.view), types: ARHitTestResult.ResultType.featurePoint)
guard let result: ARHitTestResult = results.first else {
return
}
// create a simple ball
let sphereNode = SCNNode(geometry: SCNSphere(radius: 0.2)
// create position of ball based on tap result
let position = SCNVector3Make(result.worldTransform.columns.3.x, result.worldTransform.columns.3.y, result.worldTransform.columns.3.z)
// set position of ball before adding to scene
sphereNode?.position = position
// each tap adds a new instance of the ball.
self.sceneView.scene.rootNode.addChildNode(sphereNode!)
}
如果您需要完整的 swift 代码才能开始...请早点查看此内容 post adds a cube.scn from a remote url
您可以长按
@objc func longPress(_ gesture: UILongPressGestureRecognizer) {
}
但最好只检测您点击了要删除的现有球体节点。你可以在上面的函数中添加这样的东西。
let tappedNode = self.sceneView.hitTest(gesture.location(in: gesture.view), options: [:])
if !tappedNode.isEmpty {
let node = tappedNode[0].node
node.removeFromParent()
} else {
// add my new node
}
在苹果的AR示例项目中,有一个选项可以在房间里放置一把椅子。我需要做什么才能在代码中放置多把椅子? 一个简单的追加函数可以解决问题吗?
当我点击椅子选项时,我需要将第一把椅子放在平面上。如果我再次点击椅子应该再次放置的选项。我知道我也需要一个删除功能。那么如何检测用户的长按呢?
每次点击显示屏时添加一个球的基本点击功能。
@objc func handleTap(_ gesture: UITapGestureRecognizer) {
let results = self.sceneView.hitTest(gesture.location(in: gesture.view), types: ARHitTestResult.ResultType.featurePoint)
guard let result: ARHitTestResult = results.first else {
return
}
// create a simple ball
let sphereNode = SCNNode(geometry: SCNSphere(radius: 0.2)
// create position of ball based on tap result
let position = SCNVector3Make(result.worldTransform.columns.3.x, result.worldTransform.columns.3.y, result.worldTransform.columns.3.z)
// set position of ball before adding to scene
sphereNode?.position = position
// each tap adds a new instance of the ball.
self.sceneView.scene.rootNode.addChildNode(sphereNode!)
}
如果您需要完整的 swift 代码才能开始...请早点查看此内容 post adds a cube.scn from a remote url
您可以长按
@objc func longPress(_ gesture: UILongPressGestureRecognizer) {
}
但最好只检测您点击了要删除的现有球体节点。你可以在上面的函数中添加这样的东西。
let tappedNode = self.sceneView.hitTest(gesture.location(in: gesture.view), options: [:])
if !tappedNode.isEmpty {
let node = tappedNode[0].node
node.removeFromParent()
} else {
// add my new node
}