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

如何通过脚本修改Spark AR中对象的缩放比例?

解决Spark AR脚本修改对象缩放的问题

你的代码存在两个关键错误,导致无法生效:

  1. 错误调用了不存在的toSignal方法,且Transform应为小写的transform
  2. 仅通过await获取一次补丁事件值,无法响应后续的事件触发

以下是两种常见场景的正确实现:

一次性触发缩放(事件触发后固定缩放比例)

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

(async function () {
    const object = await Scene.root.findFirst('object');
    const eventSignal = Patches.outputs.getBoolean('event');

    // 监听事件信号变化,触发时修改缩放
    eventSignal.subscribe((isTriggered) => {
        if (isTriggered) {
            // 设置XYZ三个轴的缩放值为0
            object.transform.scale = Reactive.pack3(0, 0, 0);
            // 等比缩放可简化为:object.transform.scale.setScalar(0);
        }
    });
})();

动态绑定缩放值(随外部信号实时变化)

如果需要让缩放比例随补丁输出的数值实时更新,比如绑定到滑块控件:

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

(async function () {
    const object = await Scene.root.findFirst('object');
    // 从补丁获取三个轴的缩放分量信号
    const scaleX = Patches.outputs.getScalar('scaleX');
    const scaleY = Patches.outputs.getScalar('scaleY');
    const scaleZ = Patches.outputs.getScalar('scaleZ');

    // 绑定缩放信号到对象
    object.transform.scale = Reactive.pack3(scaleX, scaleY, scaleZ);
})();

重要细节

  • 必须引入Reactive模块,用于处理信号类型的属性赋值
  • Spark AR API中对象的变换属性是小写的transform,不是大写的Transform
  • 等比缩放时使用setScalar(数值)可以快速统一设置XYZ三个轴的缩放比例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:10:32