You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark AR:如何实现物体在目标追踪器下方隐藏的效果?

Spark AR实现物体低于追踪器时隐藏的方法

核心思路是通过比较物体与追踪器的Y轴位置,动态控制物体的可见性或透明度,以下是两种实现方式:

可视化Patch Editor实现(无需代码)

  • 提取位置信息:在Patch Editor中,分别拖入你的3D物体和目标追踪器节点,获取它们的World Position输出,用Split Vector3节点拆分出Y轴分量。
  • 位置比较:添加Compare节点,将物体的Y值与追踪器的Y值做对比,设置条件为物体Y值 ≤ 追踪器Y值。
  • 控制可见性:将Compare节点的布尔输出连接到3D物体的Visible输入端口。如果需要平滑过渡效果,可改用Lerp节点配合物体材质的Opacity属性,设置一个过渡范围(比如低于追踪器0.5米内逐渐透明)。

JavaScript代码实现(适合进阶用户)

先获取场景中的物体和追踪器,再通过响应式信号控制可见性:

const Scene = require('Scene');
const Reactive = require('Reactive');

// 替换为你的物体和追踪器名称
const targetObject = Scene.root.find('yourBuilding');
const groundTracker = Scene.root.find('yourGroundTracker');

// 获取两者的世界空间Y坐标
const objY = targetObject.worldTransform.position.y;
const trackerY = groundTracker.worldTransform.position.y;

// 当物体Y坐标低于追踪器时隐藏
const isVisible = objY.greaterThan(trackerY);
targetObject.visibility = isVisible;

如果需要渐变消失效果,可替换最后两行代码,通过透明度过渡实现:

// 计算物体与追踪器的Y轴差值,设置0到0.5米的过渡范围
const deltaY = trackerY.sub(objY);
const opacity = Reactive.lerp(deltaY, 0, 0.5, 1, 0);
targetObject.material.opacity = opacity;

注意事项

  • 优先使用世界空间位置(World Position)进行比较,避免因父级坐标系不同导致位置判断错误。
  • 确认追踪器的Y轴方向为垂直向上(Spark AR默认世界空间Y轴向上,平面追踪器符合此设定)。

内容的提问来源于stack exchange,提问作者William Ericson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 12:05:08