ARToolKit - невозможно добавить маркер NFT, неизвестный тип маркера

Я работаю с образцом приложения ARToolKit ARSimple на Android. Вместо того, чтобы отслеживать маркер 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() никогда не вызывается, несмотря на успешную настройку сцены.


person O.O.Balance    schedule 08.01.2018    source источник
comment
ARToolKit5 или ARToolKit6?   -  person Thor_Bux    schedule 09.01.2018
comment
ARTToolKit5. Мне не удалось попасть в бета-версию ARToolKit6.   -  person O.O.Balance    schedule 09.01.2018
comment
Artk5 не поддерживает jpg. Вам необходимо создать файлы fset и iset для маркера nft с помощью инструментов Providet. Подробное решение могу отметить завтра.   -  person Thor_Bux    schedule 09.01.2018
comment
Я сгенерировал их. Что мне нужно, так это способ создать из них маркер. Я был бы очень признателен за подробное решение этого вопроса; вы можете не создавать файлы fset и iset.   -  person O.O.Balance    schedule 09.01.2018


Ответы (1)


из предыдущего разговора похоже, что вы работаете с этим примером кода и хотите изменить эту строку кода, чтобы он отслеживал маркеры 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/AndroidStudioProjects/ARBaseLibProj/aRBaseLib/src/main/java/org/artoolkit/ar/base/ARToolKit.java#L303

а также

https://github.com/artoolkitx/artoolkit5/blob/master/lib/SRC/ARWrapper/ARMarker.cpp#L239

надеюсь, это поможет

person Thor_Bux    schedule 09.01.2018
comment
Теперь я получаю другую ошибку: E/libar: Ошибка: невозможно открыть файл 'data/pinball.iset' для чтения. E/libar: Ошибка при открытии файла data/pinball.iset. E/libARWrapper: ARController (собственный): [ошибка]Ошибка чтения данных из data/pinball.fset E/libARWrapper: ARController (собственный): [ошибка]Ошибка: не удалось загрузить маркер. - person O.O.Balance; 10.01.2018
comment
Не могли бы вы добавить новую конфигурацию и ошибку к вашему вопросу, отмеченному как редактирование. Тогда и другие могут последовать их примеру. Чтобы помочь вам в дальнейшем, мне нужно посмотреть, как выглядит ваш код сейчас. - person Thor_Bux; 10.01.2018
comment
Android кэширует каталог активов и иногда не обновляет. Удалите приложение с телефона и повторите попытку. Проверьте правильность пути - person Thor_Bux; 11.01.2018
comment
Удаление приложения помогло, но мне также пришлось изменить nft;data/pinball на nft;Data/pinball. Все еще не работает должным образом, обновленный вопрос. @Тор_Букс - person O.O.Balance; 11.01.2018