校对:soup
这是AR.js项目的Artoolkit5-js分叉.
ES6 模块端口 aratoolkit5 (英语)基于(现已失效的)原件 标记到 JavaScript 端口 财务报告和审定财务报表 改进 以 沃尔特·佩尔丹。 。 。 .
这个构件是用WASM来进行尽可能最佳的性能,被设计成(或多或少地)作为前作jsartoolkit5的倒置替代. 先前API的某些部分被重构,以实施Async接口而不是之前基于回调的接口.
安装
这个 校对:soup 软件包可通过国家预防机制安装:
npm install @ar-js-org/artoolkit5-js
该模块以UMD格式构建,可以用于不同的环境:
浏览器
<script src="/path/to/ARToolkit.js"></script>
节点.js
const ARToolkit = require('artoolkit5-js');
ES6 导入
import ARToolkit from 'artoolkit5-js';
使用量
1) 创建控制器实例
首先,你需要创建实例 ARController数字 :
ARController.initWithDimensions(640, 480, '/data/camera_para.dat').then(controller => { ... });
这将创建一个 AR 控制器 , 期望 640x480 维度的源图像 。 第二个参数是一个相机定义文件,它描述了您图像/视频输入设备的特性. 如果您不知道要使用哪个文件, 请使用默认 相机 para.dat 包含在本存储库中.
还有一个替代的初始化器 initWithImage 以方便方法接受 HTMLImageElement 或者说 HTMLVideoElement 而不是宽度 / 高。 然而这显然只在浏览器(或MonkeyPatched)环境中有效.
(2) 添加要跟踪的标记
您接下来需要加载标记文件以跟踪您的控制器 。 在这个例子中,“ Hiro” 标记的图案文件被加载:
controller.artoolkit.addMarker(controller.id, '/data/hiro.patt').then(hiroMarkerId => { ... });
3) 开始跟踪
// track with 60 FPS
const FPS = 60;
setInterval(() => {
const result = controller.detectMarker();
if(result !== 0) {
// ARToolkit returning a value !== 0 means an error occured
console.log('Error detecting markers');
return;
}
// get the total number of detected markers in frame
const markerNum = controller.getMarkerNum();
let hiroFound = false;
// check if one of the detected markers is the "Hiro" marker
for(let i = 0; i < markerNum; i++) {
const markerInfo = controller.getMarker(i);
if(markerInfo.idPatt == hiroMarkerId) {
// store the marker ID from the detection result
hiroFound = i;
break;
}
}
if(hiroFound !== false) {
console.log("You have found the HIRO marker");
}
}, 1000 / FPS);
其他ARTolkit API方法
您可以访问所有公开的 ARTolkit 方法 和这样的类常数 :
// for the full API documentation see
// https://github.com/artoolkit/artoolkit5
artoolkit.detectMarker( ... );
console.log(artoolkit.AR_LOG_LEVEL_DEBUG);
目前的限制
由于时间限制,该建筑不执行多标记支持(yet). 增加支持应该是微不足道的,尽管所有的基础已经奠定。 一旦时间允许,我会执行它 但公关当然欢迎!