ARToolKit - 无法添加 NFT 标记,标记类型未知
ARToolKit - unable to add NFT marker, unknown marker type
我正在 Android 上使用 ARToolKit 示例应用程序 ARSimple。我不想让它跟踪 hiro 标记,而是想跟踪 NFT 标记。所以我正在使用:
int testMarker = ARToolKit.getInstance().addMarker("2d;data/nft/Test.jpg");
根据文档,这是添加 NFT 标记的正确方法(除非我遗漏了什么)。
这给出了以下输出:
E/libARWrapper: ARController (native): [error]Error: Unknown marker type '2d' in config '2d;data/nft/Test.jpg'.
E/libARWrapper: ARController (native): [error]Error: Failed to load marker.
这似乎表明这不是正确的做法。那么如何添加NFT标记呢?
编辑:
应用 Thor_Bux 的答案后,我的代码变为:
public boolean configureARScene() {
pinballMarker = ARToolKit.getInstance().addMarker("nft;data/pinball");
if (pinballMarker == -1) return false;
return true;
}
文件 pinball.fset
、pinball.fset3
和 pinball.iset
位于我的 assets/Data
目录中。
现在的错误信息如下:
E/libar: Error: unable to open file 'data/pinball.iset' for reading.
E/libar: Error opening file 'data/pinball.iset'.
E/libARWrapper: ARController (native): [error]Error reading data from data/pinball.fset
E/libARWrapper: ARController (native): [error]Error: Failed to load marker.
编辑:
按照 Thor_Bux 的建议卸载应用程序并将配置更改为 nft;Data/pinball
后,标记会加载。但是还是有错误信息:
E/libARWrapper: ARController (native): [error]Loading Data/pinball.fset.
I/libar: ### Surface No.1 ###
I/libar: Read ImageSet.
I/libar: Imageset contains 8 images.
D/Camera-JNI: Using callback buffer from queue of length 9
D/Camera-JNI: Using callback buffer from queue of length 8
D/Camera-JNI: Using callback buffer from queue of length 7
D/Camera-JNI: Using callback buffer from queue of length 6
D/Camera-JNI: Using callback buffer from queue of length 5
D/Camera-JNI: Using callback buffer from queue of length 4
D/Camera-JNI: Using callback buffer from queue of length 3
D/Camera-JNI: Using callback buffer from queue of length 2
D/Camera-JNI: Using callback buffer from queue of length 1
D/Camera-JNI: Out of buffers, clearing callback!
I/libar: end.
I/libar: Read FeatureSet.
I/libar: end.
E/libARWrapper: ARController (native): [info]First NFT marker added; enabling NFT marker detection.
E/libARWrapper: ARController (native): [info]Added marker (UID=0), total markers loaded: 1.
即使标记似乎已成功加载,queryMarkerVisible()
也未检测到它。此外,尽管场景已成功配置,但似乎 SimpleRenderer#draw()
从未被调用。
从之前的对话来看,您似乎正在使用此示例代码并希望更改这行代码以使其跟踪 NFT 标记:
https://github.com/artoolkitx/artoolkit5/blob/master/AndroidStudioProjects/ARSimpleProj/aRSimple/src/main/java/org/artoolkit/ar/samples/ARSimple/SimpleRenderer.java#L72
您还声明您已经创建了所需的 NFT .fset 和 .iset 文件,如下所述:https://archive.artoolkit.org/documentation/doku.php?id=3_Marker_Training:marker_nft_training
您现在需要做的是将 fset 和 iset 文件添加到项目的 'assets/Data/' 目录中。 (就在 hiro.patt 旁边)
然后将提到的代码行更改为:
nft;data/pinball
此处记录:
和
https://github.com/artoolkitx/artoolkit5/blob/master/lib/SRC/ARWrapper/ARMarker.cpp#L239
希望对您有所帮助
我正在 Android 上使用 ARToolKit 示例应用程序 ARSimple。我不想让它跟踪 hiro 标记,而是想跟踪 NFT 标记。所以我正在使用:
int testMarker = ARToolKit.getInstance().addMarker("2d;data/nft/Test.jpg");
根据文档,这是添加 NFT 标记的正确方法(除非我遗漏了什么)。
这给出了以下输出:
E/libARWrapper: ARController (native): [error]Error: Unknown marker type '2d' in config '2d;data/nft/Test.jpg'.
E/libARWrapper: ARController (native): [error]Error: Failed to load marker.
这似乎表明这不是正确的做法。那么如何添加NFT标记呢?
编辑:
应用 Thor_Bux 的答案后,我的代码变为:
public boolean configureARScene() {
pinballMarker = ARToolKit.getInstance().addMarker("nft;data/pinball");
if (pinballMarker == -1) return false;
return true;
}
文件 pinball.fset
、pinball.fset3
和 pinball.iset
位于我的 assets/Data
目录中。
现在的错误信息如下:
E/libar: Error: unable to open file 'data/pinball.iset' for reading.
E/libar: Error opening file 'data/pinball.iset'.
E/libARWrapper: ARController (native): [error]Error reading data from data/pinball.fset
E/libARWrapper: ARController (native): [error]Error: Failed to load marker.
编辑:
按照 Thor_Bux 的建议卸载应用程序并将配置更改为 nft;Data/pinball
后,标记会加载。但是还是有错误信息:
E/libARWrapper: ARController (native): [error]Loading Data/pinball.fset.
I/libar: ### Surface No.1 ###
I/libar: Read ImageSet.
I/libar: Imageset contains 8 images.
D/Camera-JNI: Using callback buffer from queue of length 9
D/Camera-JNI: Using callback buffer from queue of length 8
D/Camera-JNI: Using callback buffer from queue of length 7
D/Camera-JNI: Using callback buffer from queue of length 6
D/Camera-JNI: Using callback buffer from queue of length 5
D/Camera-JNI: Using callback buffer from queue of length 4
D/Camera-JNI: Using callback buffer from queue of length 3
D/Camera-JNI: Using callback buffer from queue of length 2
D/Camera-JNI: Using callback buffer from queue of length 1
D/Camera-JNI: Out of buffers, clearing callback!
I/libar: end.
I/libar: Read FeatureSet.
I/libar: end.
E/libARWrapper: ARController (native): [info]First NFT marker added; enabling NFT marker detection.
E/libARWrapper: ARController (native): [info]Added marker (UID=0), total markers loaded: 1.
即使标记似乎已成功加载,queryMarkerVisible()
也未检测到它。此外,尽管场景已成功配置,但似乎 SimpleRenderer#draw()
从未被调用。
从之前的对话来看,您似乎正在使用此示例代码并希望更改这行代码以使其跟踪 NFT 标记: https://github.com/artoolkitx/artoolkit5/blob/master/AndroidStudioProjects/ARSimpleProj/aRSimple/src/main/java/org/artoolkit/ar/samples/ARSimple/SimpleRenderer.java#L72
您还声明您已经创建了所需的 NFT .fset 和 .iset 文件,如下所述:https://archive.artoolkit.org/documentation/doku.php?id=3_Marker_Training:marker_nft_training
您现在需要做的是将 fset 和 iset 文件添加到项目的 'assets/Data/' 目录中。 (就在 hiro.patt 旁边)
然后将提到的代码行更改为:
nft;data/pinball
此处记录:
和
https://github.com/artoolkitx/artoolkit5/blob/master/lib/SRC/ARWrapper/ARMarker.cpp#L239
希望对您有所帮助