如何将 3D 对象附加到屏幕?
How to attach 3D object to screen?
如何制作一个 3D 对象附加到我的 phone,这样我就可以四处移动,然后在我点击屏幕后 - 3D 对象应该保持在 3D 中的当前位置 space?
原生 RealityKit 方法
@Rumata,这是您的代码在 stick-and-drop
方法中的样子。球体对象将在应用程序启动后 5 秒内自动掉落。您可以采用与实现 Tap Gesture 相同的方式(通过 Storyboard 或以编程方式,由您决定)。
import ARKit
import RealityKit
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
override func viewDidLoad() {
super.viewDidLoad()
let mesh = MeshResource.generateSphere(radius: 0.1)
let sphere = ModelEntity(mesh: mesh)
sphere.transform.translation = [0, 0,-1]
let anchor = AnchorEntity(.camera)
sphere.setParent(anchor)
arView.scene.addAnchor(anchor)
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
let frame = self.arView.session.currentFrame
let envAnchor = AnchorEntity(world: (frame?.camera.transform)!)
sphere.removeFromParent()
envAnchor.addChild(sphere)
self.arView.scene.addAnchor(envAnchor)
}
}
}
如何制作一个 3D 对象附加到我的 phone,这样我就可以四处移动,然后在我点击屏幕后 - 3D 对象应该保持在 3D 中的当前位置 space?
原生 RealityKit 方法
@Rumata,这是您的代码在 stick-and-drop
方法中的样子。球体对象将在应用程序启动后 5 秒内自动掉落。您可以采用与实现 Tap Gesture 相同的方式(通过 Storyboard 或以编程方式,由您决定)。
import ARKit
import RealityKit
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
override func viewDidLoad() {
super.viewDidLoad()
let mesh = MeshResource.generateSphere(radius: 0.1)
let sphere = ModelEntity(mesh: mesh)
sphere.transform.translation = [0, 0,-1]
let anchor = AnchorEntity(.camera)
sphere.setParent(anchor)
arView.scene.addAnchor(anchor)
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
let frame = self.arView.session.currentFrame
let envAnchor = AnchorEntity(world: (frame?.camera.transform)!)
sphere.removeFromParent()
envAnchor.addChild(sphere)
self.arView.scene.addAnchor(envAnchor)
}
}
}