Gestione di più applicazioni da una singola GUI [chiusa]

2

Sto cercando un approccio a un problema molto generico. Nel mio recente progetto privato, voglio controllare diverse Applicazioni da una singola GUI.

Per rendere l'idea più chiara spiegherò un po 'il mio progetto: Voglio creare un programma di realtà aumentata con diverse impostazioni e funzioni. Il video verrà registrato da una webcam e la valutazione grafica di AR è programmata in un motore di gioco (come Unreal). Voglio una singola interfaccia grafica per il programma in cui posso avviare o arrestare singole funzionalità dell'AR.

Come può essere realizzato?

    
posta shup 13.04.2016 - 15:47
fonte

2 risposte

4

Penso che ciò a cui stai pensando sia un plug-in architettura, qualcosa come le estensioni di Chrome e Chrome per esempio.

L'idea è che tu abbia un programma principale che si aspetta qualche modulo pacchettizzato in una posizione nota, e questo pacchetto è noto per aderire a qualche interfaccia / protocollo in modo che il programma principale possa usarlo in fase di runtime.

Potresti avere la scansione del programma principale per i suoi plug-in all'avvio e mostrare all'utente i plug-in scoperti e lasciare che abiliti / disabiliti i plug-in per sua scelta.

È difficile essere specifici in quanto non è stata specificata alcuna piattaforma. Puoi dare un'occhiata a questo esempio di Android come una sorta di riferimento, ma dovresti essere in grado per trovare qualche tipo di riferimento di architettura plug-in per qualsiasi piattaforma comune.

    
risposta data 13.04.2016 - 17:44
fonte
1

Il modello di base richiesto per il tuo sistema di realtà aumentata sembra essere un'architettura basata su eventi:

  • Diverse applicazioni reagiscono agli eventi o si attivano eventi. Ad esempio, fornendo fotogrammi video, calcolando la posizione e i movimenti basati sugli accelerometri, fornire / aggiornare oggetti per il rendering.
  • La tua applicazione GUI integra tutti gli eventi rilevanti per la visualizzazione e invia eventi per tradurre comandi utente per l'applicazione back-ebnd

Questo articolo spiega i principi di base di tale architettura e identifica lo stile di elaborazione degli eventi:

  • Nel tuo caso sospetto che tu possa dimenticare l'elaborazione di eventi semplici ,
  • Vai direttamente a elaborazione evento stream perché unirai il flusso video e i flussi di rendering 3D
  • Potresti forse anche aver bisogno dell'elaborazione di eventi complessi (CEP) per coordinare diversi flussi e correlarli (cioè, correlare il video con i rilevatori di movimenti per influenzare la posizione degli oggetti 3D da rendere.

Le tecniche pratiche per implementare questa architettura basata su eventi coinvolgono tutti i meccanismi IPC , come i messaggi basati sistemi, memoria condivisa, socket based (sia protocollo ad hoc o protocolli webservice standardizzati). La scelta dipenderà dal sistema operativo e dai vincoli prestazionali.

Ma rimane una domanda: hai davvero bisogno di diverse applicazioni? In caso contrario, dovresti prendere in considerazione un'applicazione multithread, che faciliterà la condivisione dei dati con una latenza molto bassa e un utilizzo massimo della CPU. Per un modello di realtà aumentata ad alta intensità di elaborazione, questa potrebbe essere davvero un'alternativa interessante. Ovviamente, questo approccio è compatibile con l'approccio plugin menzionato da Rafi.

    
risposta data 13.04.2016 - 23:51
fonte