首页 > 解决方案 > 如何将 a-frame 对象定位到标记的左下角,并使其宽度等于标记的宽度?

问题描述

我正在尝试使用 A-frame 放置和定位我的对象,使用 NFT 创建一个基本场景 AR.JS(因此它不仅仅是基于标记的基本跟踪;它跟踪自定义图像),但我注意到例如:如果我在场景中放置一个 1*1*1 大小的盒子,它会出现在不同设备上的不同位置。而且,如果我不把它放大到 200 倍,它会显示为一个非常非常小的盒子。

例如:如果我尝试在我的手机上查看我的场景,对象会出现在标记的确切中心,但如果我在另一部手机上查看它,它会几乎完全出现在标记之外。另外,如果我用网络摄像头检查它,它会再次出现在不同的地方,甚至是不同的大小。

我想知道是否有任何选项可以使标记图像左下角(或任何其他)角为 0 0 0 点,这样我就可以更精确地定位我的对象,并将对象的宽度设置为等于标记图像的宽度,所以我不必像这样放大对象。

标签: augmented-realityaframear.js

解决方案


此时可以选择在 NFT 标记的中心显示模型。这是因为AR.js依赖于jsartoolkit5,而最后一个还没有这个特性。但是,如果您知道宽度、高度和 dpi,则可以使用以下公式(伪代码)将对象显示在制造商的中心:

obj.position.y = (marker.height / marker.dpi * 2.54 * 10)/2.0;
obj.position.x = (marker.width / marker.dpi * 2.54 * 10)/2.0;

您可以在创建标记或使用由 Artoolkit5 SDK 分发的 dispFeatureSet 显示应用程序时获取宽度、高度和 dpi,您可以在此处找到二进制文件https://github.com/artoolkitx/artoolkit5/releases/tag/5.4.0或来自 artookitx网站https://www.artoolkitx.org/docs/downloads/


推荐阅读