Неоднозначность текстуры при интеграции jpct-ae с vuforia
Я успешно интегрировал vuforia и jpct-ae. Я могу загрузить модель.obj с ее файлом.Mtl и файлом текстуры и загрузить ее с помощью загрузчика jpct-ae при обнаружении маркера. 3D-модель очень хорошо отображается над целью изображения, но без текстуры (материал в порядке). Копая больше, я обнаружил, что когда я объявляю текстуру в моем классе Renderer, она принимает текстуру JPCT-ae, но когда я делаю это в моем классе Main Activity, она принимает текстуру как текстуру Vuforia. Я попытался явно включить Jpct-ae Texture.h в основное действие, но тогда QCAR не инициализируется. без объявления текстуры в основной деятельности я не знаю, как изменить / обновить новую текстуру (загруженное изображение) в режиме реального времени.
По сути, мне нужно обновлять текстуру динамически, используя только что загруженное изображение.
Кто-нибудь может подсказать мне, как я могу решить эту проблему? Любая помощь или предложение приветствуется.
Спасибо
1 ответ
Я решил проблему неоднозначности, отключив функцию getProductTexture (), которая отправляет текстуру в собственный код. Теперь я могу применить текстуру как в основном действии, так и в рендеринге. Для динамического обновления текстуры я использовал ReplaceTexture () jpct-ae. ниже приведен фрагмент кода (я не уверен, что это лучший способ, но он прекрасно работает для меня) \ try {modelstrm = new FileInputStream (new File (imagePath));
texstrm = new FileInputStream(new File(TexturePath));
System.out.println("Start loading crab md2 model");
try {
System.out.println("Start loading Texture");
TextureManager tm = TextureManager.getInstance();
if(!tm.containsTexture("new_texture")){
new_texture = new Texture(BitmapHelper.rescale(BitmapHelper.loadImage(texstrm), 512, 512));
tm.addTexture("new_texture", new_texture);
}
else{
old_texture = new Texture(BitmapHelper.rescale(BitmapHelper.loadImage(texstrm), 512, 512));
tm.replaceTexture("new_texture", old_texture);
}
System.out.println("End loading Texture");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}