我正在使用" vuforia"用于iOS中对象识别的SDK。我正在使用vuforia提供的示例代码,并且能够使用" ObjectReco"来识别对象。一部分。
- (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];}
我能够在&#34; NSLog(@&#34; @&gt; @ ObjectTarget找到!&#34;);&#34;现在我想用另一个对象(图像)替换这个对象(图像)我该怎么做?
答案 0 :(得分:0)
请访问Vuforia官方网站。他们有一系列有关如何将预设目标图像更改为您自己的图像的说明。我认为您需要首先将自己的目标图像上传到Vurforia,然后他们会向您显示进入下一步的说明。 希望它有所帮助
答案 1 :(得分:0)
如果我对你有帮助: 在Vuforia中,我们确实通过将新对象置于目标对象的相同层次结构中来进行替换,并且一旦Vuforia识别了目标,它就会出现! 您可以按对象覆盖目标(在编辑器中)。