J'utilise le SDK "vuforia" pour la reconnaissance d'objet dans iOS. J'utilise un exemple de code donné par vuforia et capable de reconnaître un objet en utilisant la partie "ObjectReco".Reconnaissance d'objet vuforia
- (void)renderFrameWithState:(const Vuforia::State &)state projectMatrix:(Vuforia::Matrix44F &)projectionMatrix{
[self setFramebuffer];
// Clear colour and depth buffers
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Render video background
[sampleAppRenderer renderVideoBackground];
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
for (int i = 0; i < state.getNumTrackableResults(); ++i) {
// Get the trackable
const Vuforia::TrackableResult* result = state.getTrackableResult(i);
const Vuforia::Trackable& trackable = result->getTrackable();
if (! result->isOfType(Vuforia::ObjectTargetResult::getClassType())) {
continue;
}
NSLog(@"@>@ ObjectTarget found!");
const Vuforia::ObjectTarget& objectTarget = (const Vuforia::ObjectTarget&) trackable;
Vuforia::Vec3F objectSize = objectTarget.getSize();
//const Vuforia::Trackable& trackable = result->getTrackable();
Vuforia::Matrix44F modelViewMatrix = Vuforia::Tool::convertPose2GLMatrix(result->getPose());
// OpenGL 2
Vuforia::Matrix44F modelViewProjection;
SampleApplicationUtils::translatePoseMatrix(objectSize.data[0]/2,
objectSize.data[1]/2,
objectSize.data[2]/2,
&modelViewMatrix.data[0]);
SampleApplicationUtils::scalePoseMatrix(objectSize.data[0]/2,
objectSize.data[1]/2,
objectSize.data[2]/2,
&modelViewMatrix.data[0]);
SampleApplicationUtils::multiplyMatrix(&projectionMatrix.data[0], &modelViewMatrix.data[0], &modelViewProjection.data[0]);
glUseProgram(shaderProgramID);
glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)cubeVertices);
glVertexAttribPointer(normalHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)cubeNormals);
glVertexAttribPointer(textureCoordHandle, 2, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)cubeTexCoords);
glEnableVertexAttribArray(vertexHandle);
glEnableVertexAttribArray(normalHandle);
glEnableVertexAttribArray(textureCoordHandle);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, augmentationTexture[0].textureID);
glUniformMatrix4fv(mvpMatrixHandle, 1, GL_FALSE, (const GLfloat*)&modelViewProjection.data[0]);
glUniform1i(texSampler2DHandle, 0 /*GL_TEXTURE0*/);
glDrawElements(GL_TRIANGLES, NUM_CUBE_INDEX, GL_UNSIGNED_SHORT, (const GLvoid*)cubeIndices);
glDisableVertexAttribArray(vertexHandle);
glDisableVertexAttribArray(normalHandle);
glDisableVertexAttribArray(textureCoordHandle);
SampleApplicationUtils::checkGlError("EAGLView renderFrameVuforia");
}
glDisable(GL_DEPTH_TEST);
glDisable(GL_BLEND);
glDisable(GL_CULL_FACE);
[self presentFramebuffer];}
Je suis en mesure d'obtenir objet à "NSLog (@" @> @ ObjectTarget trouvé! ");" maintenant je veux remplacer cet objet (image) avec un autre objet (image) comment je peux le faire?