Complessità di un sistema VR
Transcript
Complessità di un sistema VR
Complessità di un sistema VR Simulazione (Fisica, …) (~ 200 Hz) AMBIENTE VIRTUALE AMBIENTE VIRTUALE Main Application Network Manager (~ 10 Hz) Visual CANALE CANALE Rendering VISIVO (~ 60 Hz) VISIVO Audio CANALE CANALE Rendering ACUSTICO ACUSTICO (~ 60 Hz) Haptic CANALE CANALE Rendering APTICO (~ 1 KHz) APTICO Motion CANALE CANALE Rendering INERZIALE (~ 1 KHz) INERZIALE Interaction Manager Tracking MoCap (~ 30 Hz) (~ 30 Hz) UTENTE UTENTE Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione VR Engine Software •VirTools (Dassault Systems) • Quest 3D (Act – 3D) Realtà il futuro Realt•à Virtuale: il presente, il passato,Interazione XVR: Un IDE per applicazioni VR Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione XVR Loops 3 Callback principali OnFrame() OnTimer() ~ 60 Hz 100-1000 Hz Tutte le variabili sono condivise VR_EVENT_1 OnEvent() VR_EVENT_3 VR_EVENT_2 VR_EVENT_4 Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione XVR stack di sviluppo VR VR System System Development Development XVR XVR Scripting Scripting Language Language Virtual Virtual Machine Machine Scene Scene Graph Graph Core Core Libraries Libraries 3d 3d Graphics Graphics Engine Engine 3d 3d Sound Sound Engine Engine Physics Physics Engine Engine Haptics Haptics Engine Engine Cluster Cluster Renderer Renderer Hardware Hardware Abstraction Abstraction Layer Layer VR VR System System Hardware Hardware Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione XVR features PhotoPhoto-realistic rendering User interaction management MultiMulti-channel visual stereoscopic display (CAVEs (CAVEs)) Hardware interfaces support Advanced content authoring and management Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione XVR Cluster Renderer Sc reen Sc r een Sc reen CRT projec t or VRlib XVR Servers Slaves CRT pr ojec t or CRT pr ojec t or Et he rnet XVR Master VRlib Client Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione XVR Cluster Renderer (CAVE) Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione XVR E’ suddiviso in due moduli principali: XVR Virtual Machine: contiene il core della tecnologia (engine grafico, engine multimediale etc.) XVR ActiveX Control: realizza l’interfaccia web – Opzionalmente è possibile aggiungere moduli addizionali per gestire features extra Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione XVR Virtual machine La XVR-VM contiene: - Un set di istruzioni bytecode - Un set di registri - Uno stack - Un area per i metodi Il comportamento delle applicazioni viene specificato tramite un linguaggio di scripting (S3D) Lo script S3D viene compilato in un bytecode che viene processato ed eseguito dalla XVR-VM Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione XVR Workflow Dedicated scripting language Output Binary ByteCode Compiler Interpreter (Virtual Machine) Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione Web embedding Il bytecode prodotto (.bin) può essere eseguito dalla VM con un’applicazione ad hoc o inserito in una pagina HTML Quando si accede, in locale o in remoto, alla pagina HTML che ospita l’applicazione XVR: – Viene controllata la versione dell’XVR engine e, se localmente è assente quella specificata nella pagina HTML, viene scaricata dalla rete la versione giusta – Viene scaricato il bytecode dell’applicazione – Vengono scaricati i file di dati associati all’applicazione (modelli3d, textures, file multimediali etc.) – Viene eseguito il bytecode sulla XVR-VM Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione Web embedding: codice HTML <OBJECT ID=“AppName“ WIDTH = 800 HEIGHT = 800 CLASSID = "CLSID:5D589287-1496-4223-AE64-65FA078B5EAB" TYPE = "application/x-oleobject" align="left" border="2" CODEBASE = "http://client.vrmedia.it/XVRPlayer.cab#Version=1,0,0,900“ > <PARAM <PARAM <PARAM <PARAM <PARAM NAME="ScriptName" VALUE=" AppName.s3d.bin"> NAME="EngineVersion" VALUE="0136"> NAME="BackgroundColor" VALUE="#000066"> NAME="Params" VALUE "DEPTH=24"> NAME=“UserParams" VALUE "…"> </OBJECT> Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione “Engine version” • Un solo controllo ActiveX control for versioni multiple dell’Engine • Ogni Engine è autosufficiente • Di tanto in tanto vengono rilasciate nuove versioni dell’Engine (auto-update da web) • The sequence was 0100, 0101, … , 0142 Convenzione di naming Engine Family (sempre la stessa) 0142 Progressivo all’interno della famiglia Compiler Generation Number Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione XVR scripting language (.S3D) • Sintassi simile a JAVA e BASIC • Byte code – virtual machine model • Type less • Object oriented • Costrutti dedicati alla VR Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione Struttura di uno script S3D Ogni script S3D è basato su 6 funzioni predefinite: – – – – – – OnDownload() OnInit() OnFrame() OnTimer() OnEvent() OnExit() Queste funzioni vengono automaticamente invocate al verificarsi di determinati eventi Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione OnDownload() • E’ la prima funzione ad essere invocata • Ogni volta che uno script XVR viene eseguito, viene creata una cartella di lavoro nella temp di sistema • Nella OnDownload i files usati dall’applicazione dalla locazione originale (server o locale) vengono spostati nella cartella di lavoro • Gli archivi ZIP vengono decompressi automaticamente • Nella OnDownload si può inserire anche codice generico Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione OnInit() • Viene chiamata all’inizio dell’applicazione, subito dopo la OnDownload() • E’ il posto per gestire il caricamento dei data-files scaricati e tutte le inizializzazioni. •Può ricevere parametri di ingresso specificati nella pagina HTML con il tag <UserParams> Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione OnFrame() • E’ la funzione dedicata al rendering. Di default viene chiamata ad una frequenza pari al refresh rate (60 Hz). • Il target frame-rate può essere cambiato usando SetFramerate(Value); • E’ la sola funzione ad accedere al frame buffer OpenGL • Il massimo frame-rate possibile è 100 Hz Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione OnTimer() • E’ la funzione normalmente dedicata alla gestione di loop ad alta velocità (fisica, collision detection, etc.) Di default viene chiamata a 100 Hz. • Il time-step può essere cambiato usando: SetTimestep(Value); • Minimo time-step = 1ms • Independente dal framerate (a meno che il sistema non sia sovraccarico) • Non ha accesso al framebuffer Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione OnEvent() • Funzione “prevista” per la gestione di eventi (event-driven programming) • Gli eventi possono essere generati da XVR (GenerateEvent(val, param)) o all’esterno di XVR (eventi Win32) • Al momento l’unico evento gestito è quello generato quando termina un download eseguito con la funzione FileDownload(); Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione OnExit() OnExit() Viene eseguita all’uscita dell’ applicazione. L’uscita può avvenire esplicitamente o in seguito alla chiusura della pagina HTML contenitore. Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione S3D: Statements e preprocessore IF..ELSE WHILE DO..WHILE FOR BREAK CONTINUE SWITCH..CASE SET SCENE_FOV SCENE_NEAR SCENE_FAR AUDIO_MODE Field of view Near clipping plane distance Far clipping plane distance 3d Audio Setup mode #DEFINE #IFDEF #ENDIF #ELSE #INCLUDE #PRAGMA Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione Funzioni • Il tipo di parametri non viene specificato • Il tipo del valore di ritorno non viene specificato Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione S3D: Tipi di dato La dichiarazione delle variabili non specifica il tipo. Il tipo viene specificato con l’assegnamento o l’inizializzazione: VAR VAR VAR VAR VAR k = i = i = i; j,k; x = 2; y = 3.1; s = “Don’t panic !!!” 4.3; 8; 9.2; VAR v = [0.0, 1.0, 0.0]; Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione S3D: Tipi di dato predefiniti INT, FLOAT, BOOLEAN (non sono dichiarabili) STRING (non è dichiarabile) ARRAY: è un set di elementi a cui si può accedere tramite un indice. Gli elementi possono essere di tipo diverso. Var1 = { 1, true, true, { 12, 3 }}; // Array made of different types Var2 = Array(12); // Creates an array of 12 elements Array(12); Var3 = Var1[0]; // Var3 equals 1 Var4 = Var1[2][0]; // Var4 equals 12 Var1[1] = false; VECTOR: è un array di float Var1 Var2 Var3 = = = [ 0.2 , 2 , 3.33 , 4 ]; Vector(16); // creates a 16Vector(16); 16-elements vector Var1[0]; // Var3 equals 0.2 Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione S3D: Tipi di dato predefiniti OGGETTI Gli oggetti possono essere dichiarati come istanze di: - Classi predefinite - Classi definite dall’utente Obj1 = CVmLight(); Obj1.SetPosition( 10,10,20); Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione S3D: Dichiarazioni di classi Class Playlist { var id; id; var name; name; var elements; elements; Add( Add(el); el); Start(); Stop(); }; // // // Identificativo unico della playlist Nome della playlist Array di id che compongono la playlist // Aggiunge un elemento // Avvia la playlist // Stop della playlist function Playlist:: Playlist(i,n,) (i,n,) Playlist::Playlist { id = i; name = n; elements = {}; } // Il costruttore è dichiarato di default function Playlist:: Add(song) (song) Playlist::Add { aadd( aadd(elements,song); elements,song); } Realtà il futuro Realtà Virtuale: il presente, il passato,Interazione
Documenti analoghi
XVR: Primo Progetto Il wizard “Hello world” La camera La scena
XVR, non sia stato copiato nella cartella “Plugin” di 3DSMax)