我成功整合了vuforia和jpct-ae。我可以使用.Mtl文件和纹理文件下载.obj模型,并在标记检测时使用jpct-ae加载器加载它。 3D模型在图像目标上显示得非常好但没有纹理(材质很好)。在挖掘更多时,我发现当我在Renderer类中声明纹理时,它采用JPCT-ae纹理但是当我在我的主活动类中执行它时,它将纹理作为Vuforia纹理。我试图在Main活动中明确包含Jpct-ae Texture.h但是QCAR不会初始化。在主要活动中没有声明纹理我不知道如何实时更改/更新新纹理(下载的图像)。
基本上我需要使用新下载的图像动态更新纹理。
任何人都可以建议我如何解决这个问题?任何帮助或建议表示赞赏。
由于
答案 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();
}