Неоднозначность текстуры при интеграции 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();
            }    
Другие вопросы по тегам