Come anticipato, il software utilizzato per la gestione e implementazione della procedura è l’Unifeye della Metaio. Ci si è avvalsi di uno strumento che fa parte delle utility del software, ossia il Workflow Engine 2.0. Questo tool ha in memoria delle action, costruitecon il linguaggio C#, che definiscono delle azioni già implementate da richiamaregraficamente. Le action costituiscono l’elemento base da cui partire per costruire il workflow; possono essere:
• Azioni predefinite, già caricate dagli sviluppatori del software
• Azioni registrate, usando l’Unifeye GUI tool ActionRecorder, un tool disponibile nell’interfaccia grafica principale che consente di eseguire una serie di operazioni in sequenza, registrarle e riusarle nel Workflow Engine; • Scritte manualmente usando il linguaggio di programmazione C# o XML. Le azioni contengono dei parametri da specificare in base alla funzione dell’azione: possono essere attivate o disattivate collegandole alla precedente o meno.
L’interfaccia grafica è quella in Figura 5-3. L’elenco delle action è disposto sulla sinistra, corredato da una casella per la ricerca dell’azione e una per la sua descrizione; al centro è la finestra di lavoro.
La barra degli strumentiè disposta in alto, e contiene:
Figura 5-3: Interfaccia grafica Workflow Authoring GUI
• Recent workflow: ha in memoria i workflow recenti;
• New, open, save, save as: per crearne uno nuovo, aprirne uno da una cartella;salvarlo o salvarlo con nome;
• Resources:tiene in memoria immagini, simboli, file .wrl, foto, da richiamare nelle azioni, evitando di fornire ogni volta la path dell’oggetto da scegliere; • System Connections: per far partire, mettere in pausa il workflow;
• Action Paths: è il percorso della cartella dove sono memorizzate tutte le action visualizzate nello spazio a sinistra;
• Quit: per interrompere il workflow; • Run Script: per eseguire la procedura. • Tra le action presenti:
• Load camera: carica la webcam da utilizzare; • Load geometry: carica una geometria di tipo .wrl;
• Geometry rotate/scale/translate: ruota, scala o trasla una geometria; • Loadbitmap: carica un’immagine;
• Insert text: inserisce il testo nella posizione indicata;
• Display message: inserisce un messaggio di testo, con sfondo regolabile sia in dimensione che colore, e consente anche la scelta della dimensione del carattere e del suo colore.
La procedura deve iniziare necessariamente con l’azione Special Start Action, che appare già nella finestra di lavoro appena si apre il programma; poi, trascinando ogni action al centro, basterà collegare il riquadro blu a destra della prima azione con quello disposto in basso a sinistra della seconda, per attivarla. Il workflow procede quindi seguendo le linee blu che collegano ciascuna azione; il riquadro blu è un state field, indica quindi lo stato dell’azione (se attivo o no); il riquadro verde, è del tipo data field, trasferisce in uscita quindi un dato, ad esempio circa l’ID dell’operazione che si sta eseguendo.
Con la finestra Connection(Figura 5-4)è possibile inoltre comunicare al software quando si vuol far eseguire l’azione, se contemporaneamente alla precedente (non selezionando alcuna connessione), dopo un click del mouse, dopo aver premuto un tasto della tastiera o automaticamente dopo un certo intervallo temporale, da imputare in millisecondi.
Figura 5-4: Esempio di collegamento tra due action
La procedura di collegamento appena descritta deve avvenire per attivare ogni azione successiva.
Il nostro scenario richiede per esempio le action Activate camera, Load camera
calibration file (per caricare il file di calibrazione della webcam) e Load tracking configuration file (consente l’associazione tra modello virtuale e markers). L’utente
deve aggiungere al workflow solo l’ID della videocamera e I percorsi dei file richiesti.
• Display message: Step Info, la casella di testo blu in alto nella GUI;
• Display message: Text Info, la casella di testo arancione nella parte centrale destra della GUI;
• Load Geometry.
Per quest’ultima action, l’utente deve specificare il nome del modello wrl da scegliere dal Resource editor, il CosId a cui associarlo, e parametri come traslazione, rotazione dal centro del marker e scalalungo gli assi X, Y e Z.
Per quanto riguarda la action “Display message”, l’utente deve aggiungere il testo da visualizzare, scegliere il carattere, la dimensione e colore, selezionare il colore dello sfondo, la sua dimensionee posizione.
Queste tre azioni devono essere visualizzate contemporaneamente, quindi, all’interno del box Connection, non è aggiunto alcunché; per passare dall’operazione elementare precedente alla successiva, deve essere pigiato sulla tastiera il tasto N.
In conclusione, l’estratto di workflow da costruire è rappresentato inFigura 5-5.
Figura 5-5: Example of workflow for Elementary Operation 26
In Figura 5-6 è rappresentata la procedura per completare un’applicazione di AR usando il software Unifeye.
Figura 5-6: Schema riassuntivo utile alla creazione di un’applicazione AR con il software Unifeye
Creato il workflow, usando azioni preimpostate, modificando quelle esistenti o registrandole con l’Action Recorder, il suo script viene richiamato dalla GUI (Graphical User Interface) realizzata in C# e comandata tramite questo.
Prima di procedere all’implementazione vera e propria sul campo, è stato necessario effettuare la calibrazione della webcam. Quando si effettua un rendering virtuale, infatti, si utilizzano dei modelli di camera “perfetta”. In questi modelli è possibile decidere con esattezza la locazione dell’apertura focale della camera, il centro di proiezione, e non vi è traccia di fenomeni di distorsione. Nelle camere reali esistono invece una serie di fattori che differenziano molto la teoria dalla pratica. Questi fattori sono ad esempio:
• Distorsione sferica causata dalle lenti; • Non perfetto centramento delle lenti; • Sensori non quadrati;
• Incertezza sulla locazione del punto focale.
La calibrazione della camera riveste quindi un’importanza fondamentale nel tracking poiché influenza praticamente qualunque parametro. Essa permette di adattare il modello ideale di camera alla camera reale. Lo scopo della calibrazione è quello di ricavare dei coefficienti che consentono di mappare le coordinate immagine riprese dalla fotocamera con le coordinate 3D della scena.
L’Unifeye ha un tool di calibrazione già integrato, il Sexant Camera Calibration che aiuta l’utente in questa fase delicata.