Javascript 从修补程序向脚本发送矢量3无效

Javascript 从修补程序向脚本发送矢量3无效,javascript,spark-ar-studio,cannon.js,Javascript,Spark Ar Studio,Cannon.js,所以我用cannon.js在spark AR中制作了一个弹跳球。一切都很顺利,直到我想通过补丁编辑器从facetracker获取前额的位置,并生成脚本 错误: Error:Exception in HostFunction: valueOf() called on a Signal. This probably means that you are trying to perform an arithmetic operation on a signal like +, -, *

所以我用cannon.js在spark AR中制作了一个弹跳球。一切都很顺利,直到我想通过补丁编辑器从facetracker获取前额的位置,并生成脚本

错误:

    Error:Exception in HostFunction: valueOf() called on a Signal. This probably means that you are
    trying to perform an arithmetic operation on a signal like +, -, *, etc. Use functions .add, .sub(), 
    etc on the signal instead or .subscribeWithSnapshot() on an EventSource to get the signal's current value on a callback.
at ScalarSignal::valueOf (native)
{
"line": 4841,
"column": 19,
"sourceURL": "cannon.js"
}
将前额的矢量3发送到脚本

这段代码给出了错误:

var pos = Patches.getVectorValue('HeadPos');
groundBody.position.set(pos);

遗憾的是,我在网上找不到任何关于将矢量3从修补程序发送到脚本中的“工作”值的信息,有人知道如何将矢量3值发送到脚本并将其用作值吗?

我在使用cannon.js时找到了一个选择。cannon.js有一种更新函数,因此您可以使用.pinLastValue(),因为它每帧都这样做,以便更新物理

我的代码:

// Create time interval loop for cannon 
Time.setInterval(function (time) {
    if (lastTime !== undefined) {
        let dt = (time - lastTime) / 1000;
        world.step(fixedTimeStep, dt, maxSubSteps)

     // Get the head position values from the patches
     var headVal1 = Patches.getScalarValue("HeadPosX").pinLastValue();
     var headVal2 = Patches.getScalarValue("HeadPosY").pinLastValue();
     var headVal3 = Patches.getScalarValue("HeadPosZ").pinLastValue();

     // Set the position of the head hitbox to the headposition in the physics world
     HeadBody.position.x = headVal1;
     HeadBody.position.y = headVal2;
     HeadBody.position.z = headVal3;
   }

    lastTime = time
}, timeInterval);
这段代码分别从补丁中获取x、y和z值,我在补丁中也分别发送了这些值。我也可以从两侧将其作为矢量3来完成,但我认为这样看起来更好,并且更容易通过补丁单独编辑值,而不是再次将其打包为矢量3