Vuforia AR的认识(三)
ImageTarget替换Target,以及遇到的坑
我自己研究的时候从替换3D模型开始,因为没有基础导致花了一整天时间没有成功,后来就先易后难,从替换Target图片开始,但是也因为网上的很多教程、博文都很简单或者干脆互相抄袭,很多坑没有提示,也导致浪费了三个小时,一个坑一个小时的代价了。
还是一步一步来操作,做记录。
1、选择一个图片,画面内容丰富比较好,选择了公司大厅的一张照片,见过的同学说明是我的同事哦。
2、上传照片,生成数据库
打开官网,先登录,Develop->Target Manager->Add Database创建一个数据库,命名没有要求,一般即可。
选择创建的数据库,Add Target。添加target,在弹出窗口中选择Single Image,选择自己想要的文件上传。
这里遇到一个坑Width:
Width:上面写着的Vuforia uses meters as the default unit scale.看清楚,宽度单位是米,我开始写的是图片的像素宽高,结果死活不成功。
第二个坑Name:
(网站已经大写了,我没注意也是我的错),此处的Name字段将会在修改代码时使用到,所以不要用图片原名(截图XXX之类的),直接写一个合适的名字。
这里有第三个坑,评分
上传成功之后,网站会执行渲染计算什么的,看到Rating评分,图片内容不够丰富,评分低了也是不会成功的!
据说至少三分才行,我看五分最好,无非是找个好图。
3、下载数据库
勾选之后,点击Download Database,选择Android Studio项(Eclipse是一样的),里面会有.xml和.dat文件。
4、添加资源,修改代码
a 将.xml和.dat文件放入assets下
b 修改代码
ImageTargets.java 修改
将自己数据库的名字添加到 onCreate()方法 mDatasetStrings 赋值中。 将原来的第一个注释掉,补上自己的。
mDatasetStrings.add("snow.xml");
mDatasetStrings.add("StonesAndChips.xml");
将自己的数据库添加到侧滑菜单中。将原来的第一个注释掉,补上自己的。
group.addRadioItem("snow", mStartDatasetsIndex, true); group.addRadioItem("Stones & Chips", mStartDatasetsIndex + 1, true);
ImageTargetRenderer.java 修改
int textureIndex = trackable.getName().equalsIgnoreCase("snow") ? 0 : 1; // int textureIndex = trackable.getName().equalsIgnoreCase("snow") ? 0 : 1; textureIndex = trackable.getName().equalsIgnoreCase("stone") ? 2 : textureIndex;
调试时可以看到trackable.getName()的名字是添加图片时写的名字。不是图片原本的名字。
5、运行并观察
现在就可以在自己替换的图片上看到茶壶了,增强现实的第一步完成!
还有更多,替换模型,换掉该死的茶壶...