场景

public class Scene

Sceneform Scene 维护场景图,即场景内容的层次结构。一个场景可以有零个或多个子节点,每个节点可以有零个或多个子节点。

场景还提供了点击测试,这是一种用于检测 MotionEvent 或 Ray 轻触了哪个节点的方式。

嵌套类

接口 Scene.OnPeekTouchListener 在将触摸事件分派给场景时要调用的回调的接口定义。
接口 Scene.OnTouchListener 在将触摸事件分派给场景时要调用的回调的接口定义。
接口 Scene.OnUpdateListener 在场景更新前每帧调用一次回调的接口定义。

字段

public static final EnvironmentalHdrParameters DEFAULT_HDR_PARAMETERS

公共构造函数

SceneSceneView 视图)
使用给定上下文创建场景。

公共方法

无效
addOnPeekTouchListener(Scene.OnPeekTouchListener onPeekTouchListener)
添加将在调用 Scene.OnTouchListener 之前调用的监听器。
无效
addOnUpdateListener(Scene.OnUpdateListener onUpdateListener)
添加监听器,以便在场景更新前每帧调用一次。
相机
getCamera()
获取用于渲染场景的相机。
节点
getSunlight()
获取默认阳光节点。
SceneView
getView()
返回用于创建场景的 SceneView。
HitTestResult
hitTest(MotionEvent motionEvent)
根据光线命中测试(起点为动作事件的屏幕位置),检查动作事件是否轻触场景中的任何节点,然后输出包含最接近屏幕的节点的 HitTestResult。
HitTestResult
hitTest(Ray ray)
用于测试光线是否射击场景中的任何节点,并输出包含最接近光线源且与光线相交的节点的 HitTestResult。
ArrayList<HitTestResult&gt
hitTestAll(Ray ray)
用于测试射线是否照射场景中的任何节点,并返回一个包含所有命中节点(按距离排序)的 HitTestResults 列表。
ArrayList<HitTestResult&gt
hitTestAll(MotionEvent motionEvent)
用于测试移动事件是否轻触了场景中的任何节点,并返回一个包含所有命中节点(按距离排序)的 HitTestResults 列表。
无效
无效
onRemoveChildNode 子项)
节点
overlapTest节点
使用 getCollisionShape() 测试给定节点的碰撞形状是否与场景中任何其他节点的碰撞形状重叠。
ArrayList&<;Node>
overlapTestAll节点节点)
使用 getCollisionShape() 测试节点是否与场景中的任何其他节点重叠。
无效
removeOnPeekTouchListener(Scene.OnPeekTouchListener onPeekTouchListener)
移除将在调用 Scene.OnTouchListener 之前调用的监听器。
无效
removeOnUpdateListener(Scene.OnUpdateListener onUpdateListener)
移除在场景更新前每帧调用一次的监听器。
无效
setLightEstimated(Color colorcorrection, floatpixelIntensity)
设置光估测结果以调整场景光照和强度。
无效
setOnTouchListener(Scene.OnTouchListener onTouchListener)
注册在场景被轻触时调用的回调。

继承的方法

字段

public static final EnvironmentalHdrParameters DEFAULT_HDR_PARAMETERS

公共构造函数

public 场景 SceneView 视图)

使用给定上下文创建场景。

参数
视图

公共方法

public void addOnPeekTouchListener (Scene.OnPeekTouchListener onPeekTouchListener)

添加将在调用 Scene.OnTouchListener 之前调用的监听器。即使使用了相应手势,系统也会调用此方法,以便观察分派给场景的所有动作事件。即使触摸并未超出节点,系统也会调用此方法,在这种情况下,getNode() 将为 null。系统将按照添加监听器的顺序调用监听器。

参数
onPeekTouchListener 要添加的快速轻触触摸监听器

public void addOnUpdateListener (Scene.OnUpdateListener onUpdateListener)

添加监听器,以便在场景更新前每帧调用一次。系统会按照添加监听器的顺序调用监听器。

参数
onUpdateListener 要添加的更新监听器

public Camera getCamera ()

获取用于渲染场景的相机。相机是一种节点。

返回
  • 用于渲染场景的相机

public Node getSunlight ()

获取默认阳光节点。

返回
  • 用于为场景打光的阳光节点

public SceneView getView ()

返回用于创建场景的 SceneView。

public HitTestResult hitTest (MotionEvent motionEvent)

根据光线命中测试(起点为动作事件的屏幕位置),检查动作事件是否轻触场景中的任何节点,然后输出包含最接近屏幕的节点的 HitTestResult。

参数
motionEvent [动作事件] 用于测试的动作事件
返回
  • 结果包括动作事件命中的第一个节点(可能为 null),以及有关动作事件在现实世界空间中节点发生位置的信息

public HitTestResult hitTest (Ray ray)

用于测试光线是否射击场景中的任何节点,并输出包含最接近光线源且与光线相交的节点的 HitTestResult。

参数
Ray 用于测试的光线
返回
  • 结果包含光线命中的第一个节点(可能为 null),以及有关光线在现实世界空间中到达节点的位置的信息

public ArrayList<TestTestResult> hitTestAll (Ray ray)

用于测试射线是否照射场景中的任何节点,并返回一个包含所有命中节点(按距离排序)的 HitTestResults 列表。

参数
Ray 用于测试的光线。
返回
  • 为命中按距离排序的每个节点填充 HitTestResult。如果没有命中任何节点,则为空。

public ArrayList<HitTestResult> hitTestAll (MotionEvent motionEvent)

用于测试移动事件是否轻触了场景中的任何节点,并返回一个包含所有命中节点(按距离排序)的 HitTestResults 列表。

参数
motionEvent [动作事件] 用于测试的动作事件。
返回
  • 为命中按距离排序的每个节点填充 HitTestResult。如果没有命中任何节点,则为空。

public void onAddChild (Nodechild)

参数
儿童

public void onRemoveChild (Nodechild)

参数
儿童

public Node overlapTest (Node node)

使用 getCollisionShape() 测试给定节点的碰撞形状是否与场景中任何其他节点的碰撞形状重叠。用于测试的节点不必处于活跃状态。

参数
节点 用于测试的节点。
返回
  • 与测试节点重叠的节点。如果没有节点与测试节点重叠,则此值为 null。如果多个节点与测试节点重叠,则这些节点可以是任何节点。
另请参阅

public ArrayList<Node> overlapTestAll (Node node)

使用 getCollisionShape() 测试节点是否与场景中的任何其他节点重叠。用于测试的节点不必处于活跃状态。

参数
节点 用于测试的节点。
返回
  • 与测试节点重叠的所有节点的列表。如果没有节点与测试节点重叠,则列表为空。
另请参阅

public void removeOnPeekTouchListener (Scene.OnPeekTouchListener onPeekTouchListener)

移除将在调用 Scene.OnTouchListener 之前调用的监听器。 即使使用了相应手势,系统也会调用此方法,以便观察分派给场景的所有动作事件。即使触摸并未超出节点,系统也会调用此方法,在这种情况下,getNode() 将为 null。

参数
onPeekTouchListener 移除要移除的触摸触摸监听器

public void removeOnUpdateListener (Scene.OnUpdateListener onUpdateListener)

移除在场景更新前每帧调用一次的监听器。

参数
onUpdateListener 可移除的更新监听器

public void setLightEstimated (Color colorcorrection, floatpixelIntensity)

设置光估测结果以调整场景光照和强度。渲染的光会组合这些值以及光源的颜色和强度。如果白色校正和像素强度为 1,则表示照明设置不会发生任何变化。

AR Sceneform 场景在内部使用它来根据 ARCore 中的值调整光照。AR 场景会自动调用此模式,可能会覆盖其他设置。在大多数情况下,您不需要显式调用此函数。

参数
color 校正 用于调整场景的光线颜色。
像素强度 调整场景的光照强度。

public void setOnTouchListener (Scene.OnTouchListener onTouchListener)

注册在场景被轻触时调用的回调。轻触事件被分派给场景中的节点后,如果没有节点消耗该事件,系统就会调用回调函数。即使轻触并未超出节点,系统也会调用此方法,在这种情况下,getNode() 将为 null。

参数
onTouchListener 触摸要附加的触摸监听器