Swift iOS RealityKit:从屏幕的光线投射中心获取放置对象的世界位置
使用光线投射和点击手势,我成功地将多个对象(实体和锚定)放置在我的Swift iOS RealityKit:从屏幕的光线投射中心获取放置对象的世界位置,swift,arkit,realitykit,Swift,Arkit,Realitykit,使用光线投射和点击手势,我成功地将多个对象(实体和锚定)放置在我的arview中 现在,我正试图使用屏幕中心获取最接近美国的实体,以便在其附近放置一个对象。因此,我们可以想象,每当一个锚点靠近手机屏幕的中心时,一个新的对象“繁殖” 为此,我尝试使用光线投射,但我的代码: func session(_ session: ARSession, didUpdate frame: ARFrame) { // if let hitEntity = arView.ent
arview
中
现在,我正试图使用屏幕中心获取最接近美国的实体
,以便在其附近放置一个对象。因此,我们可以想象,每当一个锚点靠近手机屏幕的中心时,一个新的对象“繁殖”
为此,我尝试使用光线投射
,但我的代码:
func session(_ session: ARSession, didUpdate frame: ARFrame) {
//
if let hitEntity = arView.entity(
at: self.arView.center
) {
print("hitEntity IS FOUND !")
print(hitEntity.name) // this is the object I previously placed
guard let result = arView.raycast(from: self.arView.center, allowing: .estimatedPlane, alignment: .any).first else { return }
// here result is the surface behind/below the object, and not the object I want
return;
}
}
结果
在曲面上触发,但我无法获得对象(实体)的世界变换,而不是后面的曲面
你有什么想法吗
感谢要获取实体的worldTransform,您可以调用
hitEntity.position(relativeTo:nil)
如果我没有正确理解您的问题,这可能也有帮助: 要获取
result
相对于实体的局部空间的位置,可以调用hitEntity.convert(位置:result.worldTransform,from:nil)
Convert是RealityKit中非常有用的方法。有几种不同的方法,但下面是我在上面添加的方法的文档:我希望其中一个能帮助你