2017-07-03 11 views
0

iOSのオブジェクト認識に "vuforia" 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];} 

"NSLog(@" @> @ ObjectTarget found! ");でオブジェクトを取得できます。今私はこのオブジェクト(イメージ)を別のオブジェクト(イメージ)に置き換えて、どのようにこれを行うことができますか?

答えて

0

Vuforiaの公式サイトにアクセスしてください。彼らは、あなた自身のものにプリセットターゲットイメージを変更する方法に関する一連の指示を持っています。最初に自分のターゲット画像をVurforiaにアップロードする必要があると思うので、次のステップに進むための指示が表示されます。 役立つことを願って

関連する問題