ArSceneView

public class ArSceneView

与 ARCore 集成并渲染场景的 SurfaceView。

继承的常量

继承的字段

公共构造函数

ArSceneView(上下文上下文)
构造 ArSceneView 对象并将其绑定到 Android 上下文。
ArSceneView(Context 上下文, AttributeSet 属性)
构造 ArSceneView 对象并将其绑定到 Android 上下文。

公共方法

框架
getArFrame()
返回最新的 ARCore 帧(如果有)。
整数
getCameraStreamRenderPriority()
获取控制相机数据流渲染顺序的渲染优先级。
PlaneRenderer
getPlaneRenderer()
返回用于控制平面可视化的 PlaneRenderer。
会话
getSession()
返回此视图使用的 ARCore 会话。
布尔值
isEnvironmentalHdrLightingAvailable()
如果为 ARCore 摄像头配置了 Config.LightEstimationMode.ENVIRONMENTAL_HDR,则返回 true。
布尔值
isLightDirectionUpdateEnabled()
根据环境 HDR 光照估测检查每帧阳光是否更新。
布尔值
无效
pause()
暂停渲染线程和 ARCore 会话。
CompletableFuture<Void>
pauseAsync执行器执行器)
用于暂停渲染线程和 ARCore 会话的非阻塞调用。
无效
恢复()
恢复渲染线程和 ARCore 会话。
CompletableFuture<Void>
ResumeAsync执行器执行器)
用于在后台继续执行渲染线程和 ARCore 会话的非阻塞调用

这必须从 onResume() 调用。

无效
setCameraStreamRenderPriority(整数优先级)
设置渲染优先级以控制摄像头数据流的渲染顺序。
无效
setLightDirectionUpdateEnabled(布尔值 isLightDirectionUpdateEnabled)
设置是否应每帧更新环境 HDR 照明生成的光照方向。
无效
setLightEstimationEnabled(布尔值启用)
启用基于摄像头画面的光估测功能。
无效
setupSession(Session 会话)
使用 AR 会话设置视图。

继承的方法

公共构造函数

public ArSceneView (Context context)

构造 ArSceneView 对象并将其绑定到 Android 上下文。

为了使渲染正常运行,必须调用 setupSession(Session)

参数
context 要使用的 Android Context

public ArSceneView (Context context, AttributeSet attrs)

构造 ArSceneView 对象并将其绑定到 Android 上下文。

为了使渲染正常运行,必须调用 setupSession(Session)

参数
context 要使用的 Android Context
attrs 要关联的 Android 属性集
另请参阅

公共方法

public Frame getArFrame ()

返回最新的 ARCore 帧(如果有)。帧会在每个绘制帧的开头更新。此方法的调用方不应保留对返回值的引用,因为从下一帧开始就无法使用 ARCore 帧。

public int getCameraStreamRenderPriority ()

获取控制相机数据流渲染顺序的渲染优先级。优先级介于 0(先呈现)和 7(最后呈现)之间。

默认值为 7,该值会强制摄像头数据流最后呈现。这最适合用于性能,因为它可以防止过度绘制。不过,在将材质用作遮挡物(例如,在增强的人脸示例中)时,应进行更改。否则,遮挡物会遮住相机流,并呈现黑色。

public PlaneRenderer getgeteRenderer ()

返回用于控制平面可视化的 PlaneRenderer。

public Session getSession ()

返回此视图使用的 ARCore 会话。

public boolean isEnvironmentalHdrLightingAvailable ()

如果为 ARCore 摄像头配置了 Config.LightEstimationMode.ENVIRONMENTAL_HDR,则返回 true。启用环境 HDR 照明模式后,生成的光照估算将应用于 Sceneform 场景。

返回
  • 如果在 Sceneform 中启用了 HDR 光照,则为 true,因为启用了 ARCore HDR 光照估算。

public boolean isLightDirectionUpdateEnabled ()

根据环境 HDR 光照估测检查每帧阳光是否更新。

返回
  • 如果阳光方向每帧更新,则返回 true,否则返回 false。

public boolean isLightEstimationEnabled ()

返回
  • 如果已启用光估测,则返回 true。

public void pause ()

暂停渲染线程和 ARCore 会话。

这必须从 onPause() 调用。

public CompletableFuture<Void> pauseAsync (Executor executor)

用于暂停渲染线程和 ARCore 会话的非阻塞调用。

应从 onPause() 中调用。

如果在执行其他暂停或恢复操作时调用 pauseAsync,则暂停操作将会加入队列,并会在当前操作完成后再执行。

参数
执行程序
返回
  • 已暂停的主线程上已完成的 CompletableFuture 已完成。如果无法继续完成简历,我们将以异常方式完成未来的作业。

public void Resume ()

恢复渲染线程和 ARCore 会话。

这必须从 onResume() 调用。

抛出
CameraNotAvailableException 异常 如果无法打开相机

public CompletableFuture<Void> sumAsync (Executor executor)

用于在后台继续执行渲染线程和 ARCore 会话的非阻塞调用

这必须从 onResume() 调用。

如果在执行其他暂停或恢复操作时调用此恢复操作,则恢复操作将排入队列,并且在当前操作完成后发生。

参数
执行程序
返回
  • 恢复完成后,系统会在主线程上完成 CompletableFuture。如果无法继续完成简历,将会发生异常。

public void setCameraStreamRenderPriority (intpriority)

设置渲染优先级以控制摄像头数据流的渲染顺序。优先级介于 0(先呈现)和 7(最后呈现)之间。

默认值为 7,该值会强制摄像头数据流最后呈现。这最适合用于性能,因为它可以防止过度绘制。不过,在将材质用作遮挡物(例如,在增强的人脸示例中)时,应进行更改。否则,遮挡物会遮住相机流,并呈现黑色。

参数
优先级

public void setLightDirectionUpdateEnabled (boolean isLightDirectionUpdateEnabled)

设置是否应每帧更新环境 HDR 照明生成的光照方向。如果为 false,光照方向将更新一次,之后将不再发生变化。

当影子方向更新会分散注意力或让人分心时,此模式可用于关闭此功能。

默认状态为 true,每帧的光照方向都会更新。

参数
isLightDirectionUpdateEnabled

public void setLightEstimationEnabled (boolean enable)

启用基于摄像头画面的光估测功能。太阳的间接光的颜色和强度受 ARCore 的光估测提供的值调整。场景中的 Lit 对象将受到影响。

参数
启用 设置为 true 可启用光估测,为 false 可使用默认估计值,即像素强度为 1.0,色彩校正值为白色(1.0、1.0、1.0)。

public void setupSession (Session session)

使用 AR 会话设置视图。如需提供 ARCore 会话,必须调用此方法一次。任何渲染操作都需要会话。

应使用更新模式 LATEST_CAMERA_IMAGE 配置会话。 如果没有此配置,更新 ARCore 会话可能会阻止界面线程,导致界面体验不佳。

参数
session 要用于此视图的 ARCore 现场录像