将jpct-ae与vuforia集成时的纹理ambiguty

时间:2013-08-04 13:22:52

标签: android opengl-es-2.0 textures vuforia jpct

我成功整合了vuforia和jpct-ae。我可以使用.Mtl文件和纹理文件下载.obj模型,并在标记检测时使用jpct-ae加载器加载它。 3D模型在图像目标上显示得非常好但没有纹理(材质很好)。在挖掘更多时,我发现当我在Renderer类中声明纹理时,它采用JPCT-ae纹理但是当我在我的主活动类中执行它时,它将纹理作为Vuforia纹理。我试图在Main活动中明确包含Jpct-ae Texture.h但是QCAR不会初始化。在主要活动中没有声明纹理我不知道如何实时更改/更新新纹理(下载的图像)。

基本上我需要使用新下载的图像动态更新纹理。

任何人都可以建议我如何解决这个问题?任何帮助或建议表示赞赏。

由于

1 个答案:

答案 0 :(得分:0)

我通过禁用将纹理发送到Native代码的getProductTexture()解决了歧义问题。 现在我可以在主Activity和渲染活动中应用纹理。 为了动态更新纹理,我使用了jpct-ae的ReplaceTexture()。以下是代码片段(我不确定这是最好的方法,但它对我来说很好)     尝试{                 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();
            }