首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SparkAR Studio 98中,如何将跟踪飞机上的物体定向到摄像机上?

在SparkAR Studio 98中,如何将跟踪飞机上的物体定向到摄像机上?
EN

Stack Overflow用户
提问于 2020-10-09 16:39:35
回答 2查看 1.2K关注 0票数 2

我正在寻找一种方法,通过脚本在SparkAR Studio 98中定位跟踪飞机上的扫描对象到摄像机。这听起来很琐碎,但我很难找到相机的世界位置,然后产生一个旋转,我可以应用于物体看相机。

我让它在跟踪平面层次结构中工作,这样一个物体就会一直看着另一个物体,但是由于摄像机在这个层次和坐标系统之外,它对我没有帮助。

和往常一样,我一直在为SparkAR API的反应特性而挣扎,以及在网络上很难找到并且很快就过时的事情是分散在几个坐标系统和信息上的事实。我的代码如下所示:

代码语言:javascript
运行
复制
const Scene = require('Scene');
const R = require('Reactive');
export const Diagnostics = require('Diagnostics');

(async function () {
    Diagnostics.log("Filter activated");

    const objectToOrient = await Scene.root.findFirst('object');
    const objectParent= await Scene.root.findFirst('objectParent');
    const target = await Scene.root.findFirst('target');

    const lookAtPt = R.point(
        target.worldTransform.x,
        target.worldTransform.y,
        target.worldTransform.z);

    const lookAtTransform = objectParent.transform.lookAt(lookAtPt);
})();

为了向读者说明这个概念,我建立了这样的场景:

"S“出现,一旦下飞机被跟踪。然后它和履带飞机一起呆在原地。然后,它应该始终向相机/设备/用户旋转。谢谢!

EN

Stack Overflow用户

发布于 2021-08-24 17:38:47

实际上,还有另一种使用lookAt方法的简单方法。它的工作方式似乎有点不同--它总是将物体旋转到世界空间中的摄像机位置,而不是将相机旋转与物体旋转结合起来。

代码语言:javascript
运行
复制
const Scene = require('Scene');

(async function () {

    const camera = await Scene.root.findFirst('Camera');
    const tracker = await Scene.root.findFirst('planeTracker');
    const plane = await Scene.root.findFirst('plane');

    // Get the camera world space position
    const cameraPositionSignal = tracker.worldTransform.inverse().applyToPoint(camera.worldTransform.position);

    // Apply the rotation of the relative transform between plane tracker and camera world position
    plane.transform.rotation = tracker.transform.lookAt(cameraPositionSignal).rotation;

    // Bring object back to the plane tracker origin
    plane.worldTransform.position = tracker.worldTransform.position;

})();

可能,在Studio 98处于活动状态时,lookAt方法没有正常工作。这在目前最新的120版本中是可行的。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64284072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档