2012-02-11 2 views
6

Я просматривал темы на форумах Qualcomm, но мне не повезло, так как я точно не знаю, как искать то, что я хочу.Как внести изменения в приложение Qualcomm Vuforia Sample

Я работаю с ImageTargets Sample for iOS, и я хочу изменить чайник на другое изображение (текст скорее).

У меня уже есть рендер, и я получил .h, используя opengl-библиотеку, но я не могу понять, что мне нужно изменить, чтобы сделать эту работу, и так как это очень простой, и я не смог заставьте его работать, я действительно не рискнул попробовать что-нибудь еще.

Может ли кто-нибудь помочь мне?

Я бы вставлял код здесь, но это целый проект, поэтому я не знаю точно, что поставить, если нужно, пожалуйста, дайте мне знать.

ответ

4

Посмотрите на файл EAGLView.mm. Там вам нужно будет загрузить текстуры (изображения) и 3D-объекты (вам нужно будет импортировать ваш .h вместо teapot.h и изменить setup3dObjects соответственно).

Они, наконец, отображаются путем вызова функции renderFrameQCAR.

3

На самом деле, чайник не образ. Это трехмерная модель, хранящаяся в формате .h, которая включает в себя координаты вершин, нормалей и текстур. Вы должны хорошо знать OpenGL ES, чтобы понимать эти коды в образце приложения.

Более простой способ изменить 3D-модель на то, что вы хотите, - использовать механизм рендеринга, который облегчает рисование и рендеринг, и вам не нужно беспокоиться об API OpenGL. Я сделал это с jPCT-AE для платформы Android, но для iOS есть аналог под названием OpenFrameworks. У него есть некоторые плагины для загрузки 3D-файлов или файлов MD2, и поскольку он написан на C++, вы можете легко интегрировать его с QCAR.

Это короткое видео моего результата с jPCT и QCAR: Qualcomm Vuforia + jPCT-AE test video

4

Если дело остается в силе, вот что вы должны сделать:

  1. Получить файл заголовка для 3D-объекта
  2. получить изображение текстуры для этого объекта
  3. в EAGLView.mm сделать это изменения:

    • импорт «yourobject3d.h»
    • добавить текстуру textureFilenames массива (это должно быть в начале из EAGLView
    • в конечном счете заботиться о kObjectScale (по умолчанию используется именно это было около 3.0f, для одного объекта я есть изменить его даже до 120.0f)
    • в методе setup3dObjects присваивать правильные массивы вершин/нормалей/текстурных коордов (проверить «yourobject3d.ч файл»для соответствующих массивов и наименования) до Object3D * объект
    • сделать это изменение в renderFrameQCAR

      //glDrawElements(GL_TRIANGLES, obj3D.numIndices, GL_UNSIGNED_SHORT, (const GLvoid*)obj3D.indices); 
      glDrawArrays(GL_TRIANGLES, 0, obj3D.numVertices); 
      

Я считаю, что это все ... если что-то смотреть на Vuforia-х форум, то есть здесь: https://developer.vuforia.com/node/2047669

Примечание: по умолчанию teapot.h имеет индексы, которые не присутствуют в banana.h (от комментария ниже), поэтому заботиться о том, что слишком

(!)
+0

образец заголовка файла для 3D-объекта, который вы можете найти в данной ссылке или здесь: http://heikobehrens.net/2009/08/27/obj2opengl / – raistlin