当前位置: 首页 > 知识库问答 >
问题:

ARCore-渲染离摄像机200米远的物体

张兴旺
2023-03-14

我正在使用ARCore和SceneForm进行Android AR项目。我需要放置的对象从30米到200米远的用户的相机和面临的截头剔除问题在ArCore,这里描述。

public void getProjectionMatrix (float[] dest, 
                                 int offset, 
                                 float near, 
                                 float far);

但我找不到设置渲染投影矩阵的可能性。

下面是我的代码:

arFragment.arSceneView.apply {
    scene.addOnUpdateListener {
        // Some code to return from this callback if arFrame is not initialised yet
        if (!objectsAdded) {
            placeObject(Pose.makeTranslation(0f, 100f, 100f), this)
            objectsAdded = true
            scene.camera.projectionMatrix = Matrix(computeProjectionMatrix(frame.camera))
            // P.S. frame.camera is ArCore's camera, scene.camera is Sceneform's one.
            // So, I'm not sure that using them in such way is consistent  
        }
    }
}

SetProjectionMatrix方法包含注释VisibleForTesting。所以,我不确定我是否应该使用它和有一个保证它将工作。

如果我能用别的方法做这件事,请给我个建议?如果没有,最好的方法是做远放置的对象可见的用户?

提前谢谢你。

共有1个答案

公良俊楚
2023-03-14

经过深入调查,我发现目前(2019年3月)还没有办法设置ARCamera的远剪裁平面近剪裁平面

当谷歌允许ARCore开发者使用时,让我们再等一段时间吧。

 类似资料:
  • 问题内容: 我正在使用ARCore和Sceneform进行Android AR项目。我需要把对象 从30米200米远 从用户的摄像头和面临的 视锥剔除 在ARCORE问题,说明这里。 我正在尝试使用此方法设置 投影矩阵 以增加参数 但是我找不到设置渲染投影矩阵的可能性。 这是我的代码: 方法包含注释。因此,我不确定是否应该使用它,并且可以保证它会起作用。 请提出建议,我是否可以通过其他方式做到这一

  • 因为屏幕渲染可在位图中获取浏览器窗口内容,所以它可以呈现在任何地方,例如3D场景中的纹理。 Electron中的屏幕渲染的使用方法与 Chromium Embedded Framework项目类似,都可以使用两种渲染模式,并且只有脏区域在 'paint' 事件中传递才能更有效率。可以停止或继续渲染,还可以设置帧速率。指定的帧速率是上限值,当网页上没有发生任何事情时,不会生成任何帧。最大帧速率为60

  • 离线渲染允许您在位图中获取浏览器窗口的内容,因此可以在任何地方渲染,例如在3D场景中的纹理。 Electron中的离屏渲染使用与 Chromium Embedded Framework 项目类似的方法。 可以使用两种渲染模式,并且只有脏区通过 'paint' 事件才能更高效。 渲染可以停止、继续,并且可以设置帧速率。 指定的帧速率是上限值,当网页上没有发生任何事件时,不会生成任何帧。 最大帧速率是

  • 概览 离屏渲染允许你以位图的方式来获取 BrowserWindow 中的内容,所以它可以在任何地方被渲染,例如在3D场景中的纹理。 Electron中的离屏渲染使用与 Chromium Embedded Framework 项目类似的方法。 注意: 有两种渲染模式可以使用(见下),只有未渲染区域传递到 绘图 事件才能提高效率。 您可以停止/继续渲染并设置帧速率。 最高帧速率为 240,因为更高的值

  • 主要内容:摄像机弹簧臂组件在这一节中,我们需要添加两个组件分别是摄像机弹簧臂组件和摄像机组件。 摄像机弹簧臂组件 摄像机弹簧臂组件,可以想象成是我们的手臂和手。手拿着摄像机,当我们想移动摄像机的时候,我们移动的是我们的手臂而不是摄像机。 1) 打开VS编辑器,在PlayingCharacter.h文件添加摄像机弹簧组件和摄像机组件。 2) 在CPP文件中,添加两个头文件和在构造函数中注册这两个组件。 3) 由于我们的骨骼模

  • 离屏渲染     当图层属性的混合体被指定为在未预合成之前不能直接在屏幕中绘制时,屏幕外渲染就被唤起了。屏幕外渲染并不意味着软件绘制,但是它意味着图层必须在被显示之前在一个屏幕外上下文中被渲染(不论CPU还是GPU)。图层的以下属性将会触发屏幕外绘制: 圆角(当和maskToBounds一起使用时) 图层蒙板 阴影     屏幕外渲染和我们启用光栅化时相似,除了它并没有像光栅化图层那么消耗大,子图