当前位置: 首页 > 面试题库 >

ARKit –获取场景中ARCamera的当前位置

范修伟
2023-03-14
问题内容

我正在同时学习ARKit和Scenekit,这是一个挑战。

创建了ARWorldTrackingSessionConfiguration会话后,我想知道是否有人知道一种在场景会话中获取用户“相机”位置的方法。我的想法是要向用户的当前位置设置对象的动画。

let reaperScene = SCNScene(named: "reaper.dae")!
let reaperNode = reaperScene.rootNode.childNode(withName: "reaper", recursively: true)!
reaperNode.position = SCNVector3Make(0, 0, -1)
let scene = SCNScene()
scene.rootNode.addChildNode(reaperNode)

// some unknown amount of time later   
let currentCameraPosition = sceneView.pointOfView?.position
let moveAction = SCNAction.move(to: currentCameraPosition!, duration: 1.0)
reaperNode.runAction(moveAction)

但是,即使我四处移动相机,currentCameraPosition似乎始终为[0,0,0]。知道我在做什么错吗?最终的想法是,我将围绕不可见的球体旋转对象,直到它位于相机前面,然后对其进行动画处理,这类似于以下操作:旋转SCNCamera节点,围绕虚构的球体查看对象(用户可以通过这种方式看到物体朝着它们动画)

谢谢你的帮助。


问题答案:

将自己设置为ARSession.delegate。比您可以实现的session(_:didUpdate:),它将为您ARFrame在会话中处理的每个帧提供一个。框架具有一个camera属性,可保存有关相机变换,旋转和位置的信息。

func session(_ session: ARSession, didUpdate frame: ARFrame) {
    // Do something with the new transform
    let currentTransform = frame.camera.transform
    doSomething(with: currentTransform)
}

正如rickster指出的,您总是可以ARFrame通过调用通过它获得当前位置和摄像机位置session.currentFrame。如果您只需要一次位置,例如将一个节点移动到摄像机所在的位置,但是delegate如果要获取摄像机位置的更新,则应该使用该方法,这很有用。



 类似资料:
  • 接口说明 访问到对该场景操作过得信息 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/scene/1.0.0/getSceneJson 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 id string form 是 场景ID 响应字段说明 无 响应成功示例 { "code": 200, "d

  • 问题内容: 情况如下: 在线程中触发事件。 需要检索当前活动。 然后在该活动上创建一个对话框并显示。 问题:据我搜索,还没有办法在前台检索当前活动。 额外信息:这需要能够在多个活动中进行处理。因此,它可以在活动A或B或C中弹出。 问题答案: 我不确定这是否是您要寻找的东西,但这似乎很简单。http://iamvijayakumar.blogspot.com/2011/09/get- current

  • 接口说明 场景分公开私有,私有的场景只能自己查看或者团队,公开的场景可以对所有人查看,包括游客(没有登录的用户),此接口是为了分享场景给其他人查看,无需进行登录操作就可以查看到场景的相关信息 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/scene/1.0.0/getPublic 是否需要登录 否 请求字段说明 参数 类

  • 接口说明 场景分公开私有,私有的场景只能自己查看或者团队,公开的场景可以对所有人查看,包括游客(没有登录的用户),此接口是为私有场景查看 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/scene/1.0.0/getPrivate 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 id string f

  • 接口说明 开发者可以通过该接口来获取所有的场景,更好的去管理相对应的场景 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/scene/1.0.0/get 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 pageNo int form 是 页码 pageSize int form 是 每一页展示的条数

  • 问题内容: 我在使用android定位系统的NETWORK提供程序获取当前位置坐标时遇到麻烦。 已经阅读了很多教程,并为我的项目实现了4到5个现有的类,所有这些类都给了我最后的坐标,而不是当前的坐标。 我很确定这个问题是我遗漏的根本问题,但是我无法理解到底是什么。 我现在正在使用的代码: 这是我的主要活动 这是我用于跟踪的课程: 这是我的AndroidManifest.xml 实际上,GPS定位工