2012-02-11 4 views
6

Ho guardato attraverso i thread ai forum di Qualcomm ma non ho fortuna poiché non so esattamente come cercare quello che voglio.Come modificare App di Vuforia Sample di Qualcomm

Sto lavorando con lo ImageTargets Sample for iOS e voglio cambiare la teiera in un'altra immagine (un testo piuttosto) che ho avuto.

Ho già il rendering e ho ottenuto il file .h utilizzando la libreria opengl, ma non riesco a capire cosa devo cambiare per fare in modo che funzioni e poiché questo è molto semplice e non sono stato in grado di Farlo funzionare Non mi sono davvero azzardato a provare qualcos'altro.

Qualcuno potrebbe aiutarmi?

Vorrei incollare il codice qui ma è un intero progetto quindi non so esattamente cosa mettere, se necessario, fatemelo sapere.

risposta

4

Dai uno sguardo al file EAGLView.mm. Dovrai caricare le trame (immagini) e gli oggetti 3d (dovrai importare il tuo .h invece di teeapot.h e modificare setup3dObjects di conseguenza).

Vengono infine resi chiamando la funzione renderFrameQCAR.

3

In realtà, la teiera non è un'immagine. È un modello 3D memorizzato nel formato .h che include Vertices, Normals e Texture. Dovresti avere una buona conoscenza di OpenGL ES per capire quei codici nell'app di esempio.

Un modo più semplice per modificare il modello 3D in qualsiasi modo è utilizzare un motore di rendering che faciliti il ​​disegno e il rendering e non sia necessario disturbare le API di OpenGL. L'ho fatto con jPCT-AE per la piattaforma Android ma per iOS c'è una controparte chiamata motore OpenFrameworks. Ha alcuni plugin per caricare file 3D o MD2 e dal momento che è scritto in C++ puoi facilmente integrarlo con QCAR.

Questo è un breve video del mio risultato con jPCT e QCAR: Qualcomm Vuforia + jPCT-AE test video

4

Se il caso è ancora valida, ecco cosa devi fare:

  1. file di intestazione get per oggetto 3D
  2. immagine struttura
  3. ottenere per questo oggetto
  4. in EAGLView.mm rendono questo cambia:

    • importazione "yourobject3d.h"
    • aggiungere la vostra struttura per textureFilenames array (questo dovrebbe essere all'inizio del EAGLView
    • finalmente prendersi cura di kObjectScale (da deafult era circa 3.0f, per un oggetto ho avuto per cambiarlo anche fino a 120.0f)
    • nel metodo setup3dObjects assegna array appropriati di vertici/normali/texture coord (controlla in "yourobject3d.File h" per le matrici corretta e denominazione) a Object3D * oggetto
    • fare questo cambiamento in renderFrameQCAR

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

Credo che è tutto ... se qualcosa dare un'occhiata a Vuforia di forum, vale a dire qui: https://developer.vuforia.com/node/2047669

NOTA: teapot.h di default ha indici, che non sono presenti in banana.h (dal commento qui sotto) in modo da fare attenzione anche su questo

(!)
+0

campione per oggetto 3D si possono trovare nel data link o qui: http://heikobehrens.net/2009/08/27/obj2opengl / – raistlin