(1)下载IOS版本SDK,
https://developer.vuforia.com/resources/sdk/ios
,下载后,完成安装;
(2)下载案例,以 https://developer.vuforia.com/re ... -targets-sample-app 为例子,下载之后,文件夹保存在QualcommSDKSamples/vuforia-sdk-ios-2-0-32/samples文件夹下;
(3)用Xcode打开该案例工程,用真机运行,如果没问题,那么则进行下一步;(基本上没问题,这里需要开发者帐号,就99美元)
(4)寻找到Xcode代码,我们要更换其中的MARKER以及替换模型,Imagetarget目录下 ImageTargetsAppDelegate.m 文件,点开,发现代码,此处是加载识别卡片的信息,那么识别信息的文件从哪儿来呢?
// Provide a list of targets we're expecting - the first in the list is the default
[qUtils addTargetName"Stones & Chips" atPath"StonesAndChips.xml"];
[qUtils addTargetName"Tarmac" atPath"Tarmac.xml"];
(5)首先到高通官网
https://developer.vuforia.com/user/register
注册一个帐号(注册的时候,密码要有大小写和数字),不然,一直不让注册成功的哦
(6)第二,到TargetManager识别卡片管理界面,创建一个Device DataBase,上传图片(不要超过2M),之后,下载,下载时候选择SDK(Unity Editor是适用于Unity平台的)
(7)将下载下来的.XML和.DAT文件拉入Xcode工程的Resources\Assets文件夹,并且添加 [qUtils addTargetName:@"ar"atPath:@"ARInChina.xml"];
(由于我的识别卡片的名字是ar,放在ARInChina.xml中,所以这样添加),
之后运行,然后在真机上双击,发现,可以切换到识别ar卡片的menu,并且出现茶壶(如下图),原因是我将ar这张卡片的识别代码放在了Stones&Chips和Tarmac之前(这个等下说);
《这个图片是原创的图片》
(8)更换完自己的卡片之后,大家就想要更换自己的模型,哎哟喂,这个该死的茶壶臭死了!那么,接下来,我们就是要换掉它!我们找到绑定模型到识别卡片的代码!EAGLView.mm中的如下代码:
int targetIndex = 0; // "stones"
if (!strcmp(trackable.getName(), "chips"))
targetIndex = 1;
else if (!strcmp(trackable.getName(), "tarmac"))
targetIndex = 2;
Object3D *obj3D = [objects3D objectAtIndex:targetIndex];
默认的第一章识别卡片为0号模型,由于之前将ar放在列表前面,默认的ar卡片上,出现的是茶壶;
(9)查找模型,并且转换:网上搜索OBJ模型(模型只有一张贴图,不然麻烦),以及obj2opengl.pl处理文件;
OBJ2OPENGL ,打开之后,里面有已经转好的.h和贴图文件。也可以打开终端,将PL文件拉入处理OBJ即可,不过自己做的模型经过导出之后,最终的图片可是要经过那个PS垂直翻转的,不然,贴图混乱;
(10)将.h和JPG贴图文件拉入,我以其中的BANANA为例,拉进去,之后修改代码!在这里,为了方便,我将其它的模型都删除了,逻辑也去除了,只留一个ar识别卡片的识别,和模型!
修改代码如下:
1.引入#import"banana.h"头文件,并且获取banana的模型数据,以下为修改;
"banana.jpg",
};
// build the array of objects we want drawn and their texture
// in this example we have 3 targets and require 3 models
// but using the same underlying 3D model of a teapot, differentiated
// by using a different texture for each
Object3D *obj3D = [[Object3D alloc] init];
obj3D.numVertices = bananaNumVerts;
obj3D.vertices = bananaVerts;
obj3D.normals = bananaNormals;
obj3D.texCoords = bananaTexCoords;
obj3D.numIndices = bananaNumVerts;
// obj3D.indices = bananaVerts;
obj3D.texture = [textures objectAtIndex:0];
[objects3D addObjectbj3D];
[obj3D release];
之后在renderFramQCAR的时候,将模型绑定于第一张MARKER,也就是我们的名为ar的识别卡
// Choose the texture based on the target name
int targetIndex = 0; // "stones"
glDrawElements(GL_TRIANGLES, obj3D.numIndices, GL_UNSIGNED_SHORT, (const GLvoid*)obj3D.indices);
注释掉,然后,修改为
glDrawArrays
(
GL_TRIANGLES
,
0
, obj3D.
numIndices
);
最终运行,发现,没有香蕉,仔细一看,香蕉很小,那么得放大比例,发现 kObjectScale参数是放大的,将参数改为50;
运行图如下再次运行的时候,发现贴图总是有些不对。
于是乎,将图片拉进PS进行修改,经过卤煮风骚牛逼的PS操作--垂直翻转之后保存,再次导入Xcode工程,贴图正确--我会乱说??无图无真相!
(2)下载案例,以 https://developer.vuforia.com/re ... -targets-sample-app 为例子,下载之后,文件夹保存在QualcommSDKSamples/vuforia-sdk-ios-2-0-32/samples文件夹下;
(3)用Xcode打开该案例工程,用真机运行,如果没问题,那么则进行下一步;(基本上没问题,这里需要开发者帐号,就99美元)
(4)寻找到Xcode代码,我们要更换其中的MARKER以及替换模型,Imagetarget目录下 ImageTargetsAppDelegate.m 文件,点开,发现代码,此处是加载识别卡片的信息,那么识别信息的文件从哪儿来呢?
(6)第二,到TargetManager识别卡片管理界面,创建一个Device DataBase,上传图片(不要超过2M),之后,下载,下载时候选择SDK(Unity Editor是适用于Unity平台的)
(7)将下载下来的.XML和.DAT文件拉入Xcode工程的Resources\Assets文件夹,并且添加 [qUtils
(8)更换完自己的卡片之后,大家就想要更换自己的模型,哎哟喂,这个该死的茶壶臭死了!那么,接下来,我们就是要换掉它!我们找到绑定模型到识别卡片的代码!EAGLView.mm中的如下代码:
(9)查找模型,并且转换:网上搜索OBJ模型(模型只有一张贴图,不然麻烦),以及obj2opengl.pl处理文件;
OBJ2OPENGL ,打开之后,里面有已经转好的.h和贴图文件。也可以打开终端,将PL文件拉入处理OBJ即可,不过自己做的模型经过导出之后,最终的图片可是要经过那个PS垂直翻转的,不然,贴图混乱;
(10)将.h和JPG贴图文件拉入,我以其中的BANANA为例,拉进去,之后修改代码!在这里,为了方便,我将其它的模型都删除了,逻辑也去除了,只留一个ar识别卡片的识别,和模型!
修改代码如下:
1.引入#import"banana.h"头文件,并且获取banana的模型数据,以下为修改;
#import "banana.h"
const char* textureFilenames[] = {
- (void) setup3dObjects
{
//
}
之后在renderFramQCAR的时候,将模型绑定于第一张MARKER,也就是我们的名为ar的识别卡
// if (!strcmp(trackable.getName(), "chips"))
// targetIndex = 1;
// else if (!strcmp(trackable.getName(), "tarmac"))
// targetIndex = 2;
Object3D *obj3D = [objects3D objectAtIndex:targetIndex];
绑定之后,只缺渲染,将以下代码
glDrawElements(GL_TRIANGLES, obj3D.numIndices, GL_UNSIGNED_SHORT, (const GLvoid*)obj3D.indices);
注释掉,然后,修改为
最终运行,发现,没有香蕉,仔细一看,香蕉很小,那么得放大比例,发现 kObjectScale参数是放大的,将参数改为50;
运行图如下再次运行的时候,发现贴图总是有些不对。
于是乎,将图片拉进PS进行修改,经过卤煮风骚牛逼的PS操作--垂直翻转之后保存,再次导入Xcode工程,贴图正确--我会乱说??无图无真相!