+ All Categories
Home > Documents > Canale visivo: componenti

Canale visivo: componenti

Date post: 15-Oct-2021
Category:
Upload: others
View: 8 times
Download: 0 times
Share this document with a friend
52
Rendering AMBIENTE VIRTUALE AMBIENTE VIRTUALE UTENTE UTENTE CANALE VISIVO CANALE VISIVO CANALE ACUSTICO CANALE ACUSTICO CANALE APTICO CANALE APTICO CANALE INERZIALE CANALE INERZIALE Canale visivo: componenti Canale visivo: componenti Graphical Feedback Graphical Graphical Feedback Feedback SW modules of visual modelling & rendering SW SW modules modules of visual of visual modelling modelling & rendering & rendering HW devices of visualization HW HW devices devices of of visualization visualization
Transcript
Page 1: Canale visivo: componenti

Rendering

AMBIENTE VIRTUALEAMBIENTE VIRTUALE

UTENTEUTENTE

CANALE

VISIVO

CANALE

VISIVOCANALE

ACUSTICO

CANALE

ACUSTICOCANALE

APTICO

CANALE

APTICO

CANALE

INERZIALE

CANALE

INERZIALE

Canale visivo: componentiCanale visivo: componenti

GraphicalFeedback

GraphicalGraphical

FeedbackFeedback

SW modules of visualmodelling & rendering

SW SW modulesmodules of visualof visual

modellingmodelling & rendering& rendering

HW devices

of visualization

HW HW devicesdevices

of of visualizationvisualization

Page 2: Canale visivo: componenti

Rendering

Moduli logiciModuli logici

SintesiSintesiSintesi CampionamentoCampionamentoCampionamento

ComportamentiComportamentiComportamenti ProprietàProprietProprietàà

RenderingRenderingRendering

UTENTEUTENTE

InterazioneInterazioneInterazione

AMBIENTE VIRTUALEAMBIENTE VIRTUALE

ModellazioneModellazioneModellazione

ManagementManagementManagement

Page 3: Canale visivo: componenti

Rendering

Software per la grafica 3DSoftware per la grafica 3D

Obiettivi distinti ma collegati:

� modellazione geometrica

� animazione

� modellazione fisica

� rendering

- impostazione delle luci

- definizione dei materiali

- definizione delle inquadrature

- calcolo del risultato

- offline / real-time

generazione di un immagine 2D

corrispondente alla prospettiva

della scena/modello a partire dal

viewpoint

Page 4: Canale visivo: componenti

Rendering

Software per la grafica 3DSoftware per la grafica 3D

�� grandissima varietgrandissima varietàà

�� in genere rispondono a molteplici esigenzein genere rispondono a molteplici esigenze

�� spesso a tutte ma a diversi livelli di spesso a tutte ma a diversi livelli di

completezzacompletezza

�� in linea di massima possiamo distinguere:in linea di massima possiamo distinguere:

�� ““suitesuite”” completecomplete

�� tooltool specifici (spesso specifici (spesso pluginplugin per le suite) per le suite)

�� molti paradigmi diversimolti paradigmi diversi

�� interfacce molto dissimiliinterfacce molto dissimili

�� tendenza all'uniformittendenza all'uniformitàà

Page 5: Canale visivo: componenti

Rendering

ModellazioneModellazione

�� PoligonalePoligonale–– low low polypoly per applicazioni interattiveper applicazioni interattive

–– strumenti specifici per ridurre il numero di strumenti specifici per ridurre il numero di poligonipoligoni

�� NURBS e similiNURBS e simili–– curve parametrichecurve parametriche

–– uso tipico: CAD, designuso tipico: CAD, design(es. automobili)(es. automobili)

�� DigitalDigital sculptingsculpting–– diverso modo di diverso modo di interagire con interagire con meshmesh poligonalipoligonali

Page 6: Canale visivo: componenti

Rendering

AnimazioneAnimazione

�� definizione percorsidefinizione percorsi

–– in genere curve parametrichein genere curve parametriche

�� definizione deformazionidefinizione deformazioni

–– tramite armaturetramite armature

�� tipico ad esempio per personaggi o strumenti tipico ad esempio per personaggi o strumenti meccanicimeccanici

–– tramite interpolazione fra tramite interpolazione fra meshmesh modificate modificate (key frame (key frame animationanimation))

�� tipico ad esempio per le espressioni faccialitipico ad esempio per le espressioni facciali

�� gestione di azioni e interpolazionigestione di azioni e interpolazioni

Page 7: Canale visivo: componenti

Rendering

DefinizioneDefinizione dei dei materialimateriali

�� strettamente connessa all'uso previstostrettamente connessa all'uso previsto

–– per applicazioni interattiveper applicazioni interattive

�� fino a ieri poco pifino a ieri poco piùù che definizione che definizione texturetexture

�� oggi software appositi per messa a punto shadersoggi software appositi per messa a punto shaders

–– RenderMonkeyRenderMonkey

–– per rendering offlineper rendering offline

�� modelli di interazione luminosa complessimodelli di interazione luminosa complessi

�� possibilitpossibilitàà di esprimere le proprietdi esprimere le proprietàà del materiale del materiale addirittura con del codiceaddirittura con del codice–– sistemi sistemi RenderManRenderMan, , shadingshading a nodi, ecc.a nodi, ecc.

Page 8: Canale visivo: componenti

Rendering

RenderingRendering

�� gestione della telecameragestione della telecamera

–– piazzamento nella scena, inquadratura, lente,piazzamento nella scena, inquadratura, lente,

–– moto della camera, ecc.moto della camera, ecc.

�� impostazione di parametriimpostazione di parametri

–– dimensioni finalidimensioni finali

–– numero di framenumero di frame

–– varie impostazioni di qualitvarie impostazioni di qualitàà

�� grande varietgrande varietàà di tipi di rendererdi tipi di renderer

–– Non Non PhotorealisticPhotorealistic Rendering, Rendering, biasedbiased//unbiasedunbiased((““corretticorretti”” o o ““approssimatiapprossimati””) ecc.) ecc.

Page 9: Canale visivo: componenti

Rendering

GestioneGestione del del comportamentocomportamento interattivointerattivo

�� definirlo direttamente definirlo direttamente ““dentrodentro”” il programma, il programma, impostando proprietimpostando proprietàà dei vari oggettidei vari oggetti

–– generalmente pigeneralmente piùù facile ma meno potentefacile ma meno potente

�� esportare la geometria e gestire gli oggetti in un esportare la geometria e gestire gli oggetti in un altro ambiente di sviluppoaltro ambiente di sviluppo

–– necessitiamo dunque di un necessitiamo dunque di un exporterexporter per il formato:per il formato:

�� leggere dal programma originale i dati che ci leggere dal programma originale i dati che ci interessano (serve dunque una API di interazione con interessano (serve dunque una API di interazione con quel particolare programma)quel particolare programma)

�� riorganizzarli e scriverli in un file secondo le nostre riorganizzarli e scriverli in un file secondo le nostre esigenzeesigenze

Page 10: Canale visivo: componenti

Rendering

Software per Software per modellazionemodellazione e renderinge rendering

Page 11: Canale visivo: componenti

Rendering

Autodesk 3ds MaxAutodesk 3ds Max

�� molto diffusomolto diffuso

–– buon compromesso fra aspetti artistici e CADbuon compromesso fra aspetti artistici e CAD

–– JurassicJurassic Park, Harry Potter, etc.Park, Harry Potter, etc.

�� modellazione, materiali, animazione, renderingmodellazione, materiali, animazione, rendering

�� integrazione con renderer esterni (integrazione con renderer esterni (MentalMental Ray, Ray, VRayVRay, etc.), etc.)

�� ScriptingScripting, SDK, SDK

�� versione 9, costo $3.495versione 9, costo $3.495

�� www.autodesk.com/3dsmaxwww.autodesk.com/3dsmax

Page 12: Canale visivo: componenti

Rendering

Autodesk MayaAutodesk Maya

�� interfaccia raffinata (es. meninterfaccia raffinata (es. menùù circolari)circolari)

�� scriptingscripting molto potente, anche molto potente, anche PythonPython

�� costo versione 8.5: $1999 o $6999 (costo versione 8.5: $1999 o $6999 (unlimunlim.).)

�� www.autodesk.com/mayawww.autodesk.com/maya

Page 13: Canale visivo: componenti

Rendering

BlenderBlender

�� programma free e open sourceprogramma free e open source

�� suite di suite di tooltool per il 3Dper il 3D–– modellazione (supporta modellazione (supporta digitaldigital sculptingsculpting))

–– animazione piuttosto avanzataanimazione piuttosto avanzata

–– rendering: non il punto forterendering: non il punto forte

�� video editing e video editing e compositingcompositing

�� game game engineengine

�� Wiki: Wiki: wiki.blender.orgwiki.blender.org

�� Forum: Forum: www.blenderartist.orgwww.blenderartist.org

Page 14: Canale visivo: componenti

Rendering

AltriAltri softwaresoftware

�� Cinema, videogiochi:Cinema, videogiochi:– Softimage|XSI (es. FFXI, Half Life 2, etc.)

www.softimage.com

– Lightwave 3d 09 - www.newtek.com/lightwave

� Modelli x Mappe 3D– Google SketchUp - www.sketchup.com

� CAD meccanici– Pro-Engineer

– Solidworks

� Altri CAD– AutoCAD (architettura, ingegneria)

– ArchiCAD (architettura)

– Rhino (NURBS, design)

Page 15: Canale visivo: componenti

Rendering

AltriAltri softwaresoftware

�� DigitalDigital SculptingSculpting::–– PixologicPixologic ZZ--Brush 3.0Brush 3.0

�� www.pixologic.com/zbrush/homewww.pixologic.com/zbrush/home

–– MudboxMudbox 1.01.0�� www.mudbox3d.comwww.mudbox3d.com

�� AnimazioneAnimazione didi figure figure umaneumane::–– PoserPoser

�� GenerazioneGenerazione didi scenariscenari realisticirealistici–– BryceBryce

�� ConvertitoriConvertitori didi formatiformati–– OkinoOkino PolytransPolytrans

–– Deep ExplorationDeep Exploration

Page 16: Canale visivo: componenti

Rendering

RendererRenderer

�� Commerciali:Commerciali:–– MaxwellMaxwell

–– MentalMental RayRay

–– RenderManRenderMan

–– VrayVray

�� Free: Free: –– IndigoIndigo, , YafrayYafray, , POVrayPOVray, , WinOSIWinOSI......

Page 17: Canale visivo: componenti

Rendering

Software per rendering realSoftware per rendering real--timetime

Page 18: Canale visivo: componenti

Rendering

3D real3D real--time librariestime libraries

�� LibrerieLibrerie didi ““basso basso livellolivello””::–– OpenGLOpenGL

�� Cross platformCross platform

�� Non Non proprietariaproprietaria

�� SupportataSupportata dada un Architectural Review Boardun Architectural Review Board

�� EstensibileEstensibile

�� UsataUsata soprattuttosoprattutto neinei settorisettori professionali/ricercaprofessionali/ricerca

–– Direct3DDirect3D�� Parte Parte didi DirectXDirectX

�� ProprietariaProprietaria (Microsoft)(Microsoft)

�� Windows onlyWindows only

�� DiffusissimaDiffusissima per per giochigiochi

Page 19: Canale visivo: componenti

Rendering

3D real3D real--time enginestime engines

�� Le Le librerielibrerie didi basso basso livellolivello sonosono perfettamenteperfettamenteutilizzabiliutilizzabili direttamentedirettamente nellenelle applicazioniapplicazioni, ma un , ma un livellolivello pipiùù alto alto èè spessospesso moltomolto utile:utile:–– RiutilizzoRiutilizzo didi codicecodice

–– OttimizzazioneOttimizzazione delledelle funzionalitfunzionalitàà

–– ImplementazioneImplementazione didi funzionalitfunzionalitàà didi base non base non disponibilidisponibili((eses. . caricamentocaricamento didi mesh)mesh)

�� NasconoNascono numerosinumerosi ““3D Engine3D Engine”” cheche sisi fannofanno caricocaricodidi rendererendere trasparentitrasparenti al al programmatoreprogrammatore moltemolteoperazionioperazioni–– Quake Engine (ID Software)Quake Engine (ID Software)

–– Unreal EngineUnreal Engine

–– Ogre 3DOgre 3D

–– etcetc

Page 20: Canale visivo: componenti

Rendering

ComplessitComplessitàà di un sistema VRdi un sistema VR

CANALE

VISIVO

CANALE

VISIVOCANALE

ACUSTICO

CANALE

ACUSTICOCANALE

APTICO

CANALE

APTICO

CANALE

INERZIALE

CANALE

INERZIALE

AMBIENTE VIRTUALEAMBIENTE VIRTUALE

UTENTEUTENTE

Visual

Rendering(~ 60 Hz)

Audio

Rendering(~ 60 Hz)

Haptic

Rendering(~ 1 KHz)

MotionRendering

(~ 1 KHz)

TrackingMoCap(~ 30 Hz)

Interaction

Manager(~ 30 Hz)

Simulazione

(Fisica, …)(~ 200 Hz)

NetworkManager(~ 10 Hz)

MainApplication

Page 21: Canale visivo: componenti

Rendering

VR frameworksVR frameworks

�� I 3D engines I 3D engines sonosono solo solo unouno dei dei componenticomponenti didi un un sistemasistema didiRVRV

�� Per Per gestiregestire efficamenteefficamente ll’’interazioneinterazione e e ilil rendering rendering susu tuttituttii i canalicanali sensorialisensoriali occorreoccorre integrareintegrare numerosenumerose librerielibrerie, , engines, e driverengines, e driver–– EsempioEsempio::

�� CanaleCanale visivovisivo: OpenGL/: OpenGL/DirectxDirectx (o 3D Engines built(o 3D Engines built--onon--top)top)

�� CanaleCanale acusticoacustico: : OpenALOpenAL/DirectSound (o 3DAudio Engines /DirectSound (o 3DAudio Engines -- eses. . FmodFmod))

�� CanaleCanale aptico: aptico: OpenHaptics/ChaiOpenHaptics/Chai (o Haptics Engines (o Haptics Engines –– eses. . HapticwebHapticweb))

�� ApproccioApproccio bulldozer: bulldozer: applicazioneapplicazione C++ C++ cheche usausa tuttitutti questiquesticomponenticomponenti --> > programmerprogrammer’’s nightmares nightmare

�� ApproccioApproccio auspicabileauspicabile: : utilizzoutilizzo didi un framework un framework cheche sisifacciafaccia caricocarico didi tuttatutta la la gestionegestione delldell’’infrastrutturainfrastruttura ((eses. . comunicazionecomunicazione frafra librerielibrerie, networking, , networking, supportosupporto ad ad hardware hardware didi diversodiverso tipotipo, etc.), etc.)

Page 22: Canale visivo: componenti

Rendering

VRFramework

VR frameworksVR frameworks

HW Visual HW Audio HW Haptic HW Tracking

OpenGL OpenAL OpenHaptics

Fisica

Applicazione

Networking

OpenGL OpenAL

3D GraphicsEngine

3D Audio Engine 3D Haptics Engine

Page 23: Canale visivo: componenti

Rendering

Workflow (Workflow (canalecanale visivovisivo))

3D ModelingSoftware

Geometria

MaterialiTexture

modellazione

File geometria

Textures

esportazione

importa

zione

VRFramework

programmazioneApplicazione

AmbienteVirtuale

Page 24: Canale visivo: componenti

Rendering

VR framework: VR framework: VirtoolsVirtools

�� CommercialeCommerciale

�� Suite Suite didi strumentistrumenti didi svilupposviluppo

�� SeparaSepara gligli ““oggettioggetti”” daidai ““comportamenticomportamenti””

�� Le Le applicazioniapplicazioni nascononascono dalldall’’assemblaggioassemblaggio didi oggettioggetti e e comportamenticomportamenti

�� GUI GUI visualevisuale per per assemblareassemblareblocchiblocchi precostituitiprecostituiti

�� LinguaggioLinguaggio didi scripting per scripting per specificarespecificare comportamenticomportamentipipiùù articolatiarticolati

�� SupportaSupporta moltimolti dispositividispositivi didirendering (rendering (dallodallo schermoschermosemplicesemplice al CAVE)al CAVE)

�� http://http://www.virtools.comwww.virtools.com

Page 25: Canale visivo: componenti

Rendering

VR framework: VR ToolkitVR framework: VR Toolkit

�� SupportoSupporto a a

–– TecnologieTecnologie didi visualizzazionevisualizzazione stereoscopicastereoscopica

–– GuantiGuanti (data gloves)(data gloves)

–– DispositiviDispositivi apticiaptici

–– Gamepads e joystickGamepads e joystick

–– SuonoSuono 3D3D

–– NetworkingNetworking

�� LinguaggioLinguaggio didi script script basatobasato susu PythonPython

�� http://www.worldviz.comhttp://www.worldviz.com

Page 26: Canale visivo: componenti

Rendering

VR framework: XVRVR framework: XVR

Page 27: Canale visivo: componenti

Rendering

XVRXVR

Page 28: Canale visivo: componenti

Rendering

Virtual MachineVirtual MachineVirtual Machine

Hardware Abstraction LayerHardware Abstraction LayerHardware Abstraction Layer

Scene GraphScene GraphScene Graph

Core LibrariesCore LibrariesCore Libraries

XVR stack XVR stack didi svilupposviluppo

3d GraphicsEngine

3d Graphics3d GraphicsEngineEngine

3d SoundEngine

3d Sound3d SoundEngineEngine

PhysicsEngine

PhysicsPhysicsEngineEngine

HapticsEngine

HapticsHapticsEngineEngine

VR System HardwareVR System HardwareVR System Hardware

XVR Scripting LanguageXVR Scripting LanguageXVR Scripting Language

VR SystemDevelopment

VR SystemVR System

DevelopmentDevelopment

Cluster RendererCluster RendererCluster Renderer

Page 29: Canale visivo: componenti

Rendering

~ 60 Hz 100-1000 Hz

3 3 CallbackCallback principaliprincipali

OnFrameOnFrame()() OnTimerOnTimer()()

TutteTutte le le variabilivariabili sonosono condivisecondivise

OnEventOnEvent()()VR_EVENT_1VR_EVENT_1

VR_EVENT_3VR_EVENT_3

VR_EVENT_2VR_EVENT_2

VR_EVENT_4VR_EVENT_4

XVR LoopsXVR Loops

Page 30: Canale visivo: componenti

Rendering

User interaction User interaction

managementmanagement

XVR featuresXVR features

MultiMulti--channel visual stereoscopic display (channel visual stereoscopic display (CAVEsCAVEs))

PhotoPhoto--realistic renderingrealistic rendering

Hardware interfaces supportHardware interfaces supportAdvanced content authoring and managementAdvanced content authoring and management

Page 31: Canale visivo: componenti

Rendering

XVR Cluster RendererXVR Cluster Renderer

CRT pro jec t or

Scr een

Sc ree nScr een

CRT pr ojec torCRT pro jec t or

Eth er net

VRl ib Client

VRl ibServersXVR Slaves

XVR Master

Page 32: Canale visivo: componenti

Rendering

XVR Cluster Renderer (CAVE)XVR Cluster Renderer (CAVE)

Page 33: Canale visivo: componenti

Rendering

EE’’ suddiviso in due moduli principali:suddiviso in due moduli principali:

�� XVR Virtual XVR Virtual MachineMachine: contiene il core della tecnologia : contiene il core della tecnologia ((engineengine grafico, grafico, engineengine multimediale etc.)multimediale etc.)

�� XVR XVR ActiveXActiveX Control: realizza lControl: realizza l’’interfaccia webinterfaccia web

– Opzionalmente èpossibile aggiungere moduli addizionali per gestire features extra

XVRXVR

Page 34: Canale visivo: componenti

Rendering

�� La XVRLa XVR--VM contiene:VM contiene:

-- Un set di istruzioni bytecodeUn set di istruzioni bytecode

-- Un set di registriUn set di registri

-- Uno Uno stackstack

-- Un area per i metodiUn area per i metodi

�� Il comportamento delle applicazioni viene Il comportamento delle applicazioni viene specificato tramite un linguaggio di specificato tramite un linguaggio di scriptingscripting (S3D)(S3D)

�� Lo script S3D viene compilato in un bytecode che Lo script S3D viene compilato in un bytecode che viene processato ed eseguito dalla XVRviene processato ed eseguito dalla XVR--VMVM

XVR Virtual XVR Virtual machinemachine

Page 35: Canale visivo: componenti

Rendering

XVR WorkflowXVR Workflow

CompilerInterpreter

(Virtual Machine)

Dedicated scripting language

Output

Binary

ByteCode

Page 36: Canale visivo: componenti

Rendering

�� Il bytecode prodotto (.Il bytecode prodotto (.binbin) può essere eseguito dalla VM con ) può essere eseguito dalla VM con unun’’applicazione ad hoc o inserito in una pagina HTMLapplicazione ad hoc o inserito in una pagina HTML

�� Quando si accede, in locale o in remoto, alla pagina HTML Quando si accede, in locale o in remoto, alla pagina HTML che ospita lche ospita l’’applicazione XVR:applicazione XVR:

–– Viene controllata la versione dellViene controllata la versione dell’’XVR XVR engineengine e, se localmente e, se localmente èèassente quella specificata nella pagina HTML, viene scaricata daassente quella specificata nella pagina HTML, viene scaricata dalla lla rete la versione giustarete la versione giusta

–– Viene scaricato il bytecode dellViene scaricato il bytecode dell’’applicazioneapplicazione

–– Vengono scaricati i file di dati associati allVengono scaricati i file di dati associati all’’applicazione (modelli3d, applicazione (modelli3d, texturestextures, file multimediali etc.), file multimediali etc.)

–– Viene eseguito il bytecode sulla XVRViene eseguito il bytecode sulla XVR--VMVM

Web Web embeddingembedding

Page 37: Canale visivo: componenti

Rendering

<OBJECT <OBJECT ID=ID=““AppNameAppName““

WIDTH = 800WIDTH = 800

HEIGHT = 800HEIGHT = 800

CLASSID = "CLSID:5D589287CLASSID = "CLSID:5D589287--14961496--42234223--AE64AE64--65FA078B5EAB"65FA078B5EAB"

TYPE = "TYPE = "applicationapplication//xx--oleobjectoleobject" " align=align=""leftleft" " border=border="2""2"

CODEBASE =CODEBASE ="http://"http://client.vrmedia.itclient.vrmedia.it/XVRPlayer.cab#Version=1,0,0,900/XVRPlayer.cab#Version=1,0,0,900““

>>

<PARAM <PARAM NAME=NAME=""ScriptNameScriptName" " VALUE=VALUE=" AppName.s3d.bin">" AppName.s3d.bin">

<PARAM <PARAM NAME=NAME=""EngineVersionEngineVersion" " VALUE=VALUE="0136">"0136">

<PARAM <PARAM NAME=NAME=""BackgroundColorBackgroundColor" " VALUE=VALUE="#000066">"#000066">

<PARAM <PARAM NAME=NAME=""ParamsParams" VALUE "DEPTH=24">" VALUE "DEPTH=24">

<PARAM <PARAM NAME=NAME=““UserParamsUserParams" VALUE "" VALUE "……">">

</OBJECT></OBJECT>

Web Web embeddingembedding: codice HTML: codice HTML

Page 38: Canale visivo: componenti

Rendering

““Engine versionEngine version””

•• Un solo Un solo controllocontrollo ActiveX control for ActiveX control for

versioniversioni multiple multiple delldell’’EngineEngine

•• OgniOgni Engine Engine èè autosufficienteautosufficiente

•• Di Di tantotanto in in tantotanto vengonovengono rilasciaterilasciate nuovenuove

versioniversioni delldell’’EngineEngine (auto(auto--update update dada web)web)

•• The sequence was 0100, 0101, The sequence was 0100, 0101, …… , 0142, 0142

ConvenzioneConvenzione didi namingnaming

01420142Engine FamilyEngine Family

((sempresempre la la stessastessa))Compiler Generation NumberCompiler Generation Number

ProgressivoProgressivo allall’’internointerno

delladella famigliafamiglia

Page 39: Canale visivo: componenti

Rendering

XVR scripting language (.S3D)XVR scripting language (.S3D)

•• SintassiSintassi simile a JAVA e BASICsimile a JAVA e BASIC

•• Byte code Byte code –– virtual machine virtual machine

modelmodel

•• Type lessType less

•• Object orientedObject oriented

•• CostruttiCostrutti dedicatidedicati allaalla VRVR

Page 40: Canale visivo: componenti

Rendering

�� Ogni script S3D Ogni script S3D èè basato su 6 funzioni predefinite:basato su 6 funzioni predefinite:–– OnDownloadOnDownload()()

–– OnInitOnInit()()

–– OnFrameOnFrame()()

–– OnTimerOnTimer()()

–– OnEventOnEvent()()

–– OnExitOnExit()()

�� Queste funzioni vengono automaticamente invocate Queste funzioni vengono automaticamente invocate al verificarsi di determinati evential verificarsi di determinati eventi

Struttura di uno script S3DStruttura di uno script S3D

Page 41: Canale visivo: componenti

Rendering

OnDownloadOnDownload()()

•• EE’’ la prima la prima funzionefunzione ad ad essereessereinvocatainvocata

•• OgniOgni voltavolta cheche unouno script XVR script XVR vienevieneeseguitoeseguito, , vieneviene creatacreata unauna cartellacartella didilavorolavoro nellanella temp temp didi sistemasistema

•• NellaNella OnDownloadOnDownload i files i files usatiusatidalldall’’applicazioneapplicazione dalladalla locazionelocazioneoriginaleoriginale (server o locale) (server o locale) vengonovengonospostatispostati nellanella cartellacartella didi lavorolavoro

•• GliGli archiviarchivi ZIP ZIP vengonovengonodecompressidecompressi automaticamenteautomaticamente

•• NellaNella OnDownloadOnDownload sisi puòpuò inserireinserireancheanche codicecodice genericogenerico

Page 42: Canale visivo: componenti

Rendering

OnInitOnInit()()

•• Viene chiamata allViene chiamata all’’inizio inizio delldell’’applicazione, subito dopo la applicazione, subito dopo la OnDownloadOnDownload()()

•• EE’’ il posto per gestire il caricail posto per gestire il carica--mento dei mento dei datadata--filesfiles scaricati e scaricati e tutte le inizializzazioni.tutte le inizializzazioni.

••Può ricevere parametri di Può ricevere parametri di ingresso specificati nella pagina ingresso specificati nella pagina HTML con il HTML con il tagtag <<UserParamsUserParams>>

Page 43: Canale visivo: componenti

Rendering

OnFrameOnFrame()()

•• EE’’ la la funzionefunzione dedicatadedicata al al rendering. Di default rendering. Di default vieneviene chiamatachiamataad ad unauna frequenzafrequenza paripari al refresh rate al refresh rate (60 Hz).(60 Hz).

•• Il target frameIl target frame--rate rate puòpuò essereesserecambiatocambiato usandousando

SetFramerate(ValueSetFramerate(Value););

•• EE’’ la sola la sola funzionefunzione ad ad accedereaccedere al al frame buffer OpenGLframe buffer OpenGL

•• Il Il massimomassimo frameframe--rate rate possibilepossibile èè100 Hz100 Hz

Page 44: Canale visivo: componenti

Rendering

OnTimerOnTimer()()

•• EE’’ la la funzionefunzione normalmentenormalmentededicatadedicata allaalla gestionegestione didi loop ad loop ad altaaltavelocitvelocitàà ((fisicafisica, collision detection, , collision detection, etc.) Di default etc.) Di default vieneviene chiamatachiamata a 100 a 100 Hz.Hz.

•• Il timeIl time--step step puòpuò essereessere cambiatocambiatousandousando::

SetTimestep(ValueSetTimestep(Value););

•• MinimoMinimo timetime--step = 1msstep = 1ms

•• IndependenteIndependente daldal framerateframerate (a (a menomeno cheche ilil sistemasistema non non siasiasovraccaricosovraccarico))

•• Non ha Non ha accessoaccesso al al framebufferframebuffer

Page 45: Canale visivo: componenti

Rendering

OnEventOnEvent()()

•• FunzioneFunzione ““previstaprevista”” per la per la gestionegestione didi eventieventi (event(event--driven driven

programming)programming)

•• GliGli eventieventi possonopossono essereessere generatigenerati dada XVR, XVR, daldal

programmatoreprogrammatore XVR (XVR (GenerateEvent(valGenerateEvent(val, , paramparam))) o ) o

allall’’esternoesterno didi XVR (XVR (eventieventi Win32)Win32)

•• Un Un esempioesempio didi eventoevento XVR XVR èè quelloquello generatogenerato quandoquando

terminatermina un download un download eseguitoeseguito con la con la funzionefunzione

FileDownloadFileDownload();();

Page 46: Canale visivo: componenti

Rendering

� OnExit()

Viene eseguita all’uscita dell’applicazione.

L’uscita può avvenire esplicitamente o in seguito alla chiusura della pagina HTML contenitore.

OnExitOnExit()()

Page 47: Canale visivo: componenti

Rendering

IF..ELSEIF..ELSE

WHILEWHILE

DO..WHILEDO..WHILE

FORFOR

BREAKBREAK

CONTINUECONTINUE

S3D: S3D: StatementsStatements e preprocessoree preprocessore

SWITCH..CASESWITCH..CASE

SETSETSCENE_FOVSCENE_FOV FieldField of of viewview

SCENE_NEARSCENE_NEAR NearNear clippingclipping planeplane distancedistance

SCENE_FARSCENE_FAR Far Far clippingclipping planeplane distancedistance

AUDIO_MODEAUDIO_MODE 3d Audio Setup mode3d Audio Setup mode

#DEFINE#DEFINE

#IFDEF#IFDEF

#ENDIF#ENDIF

#ELSE#ELSE

#INCLUDE#INCLUDE

#PRAGMA#PRAGMA

Page 48: Canale visivo: componenti

Rendering

FunzioniFunzioni

•• Il Il tipotipo didi parametriparametri non non vieneviene specificatospecificato

•• Il Il tipotipo del del valorevalore didi ritornoritorno non non vieneviene specificatospecificato

Page 49: Canale visivo: componenti

Rendering

�� La dichiarazione delle variabili non specifica il La dichiarazione delle variabili non specifica il tipo. tipo. Il tipo viene specificato con lIl tipo viene specificato con l’’assegnamento o assegnamento o ll’’inizializzazione:inizializzazione:

VAR i;VAR i;VAR j,k;VAR j,k;VAR x = 2;VAR x = 2;VAR y = 3.1;VAR y = 3.1;VAR s = VAR s = ““DonDon’’t t panicpanic !!!!!!””k = 4.3;k = 4.3;i = 8;i = 8;i = 9.2;i = 9.2; VAR v = [0.0, 1.0, 0.0];VAR v = [0.0, 1.0, 0.0];

S3D: Tipi di datoS3D: Tipi di dato

Page 50: Canale visivo: componenti

Rendering

�� INT, FLOAT, BOOLEAN INT, FLOAT, BOOLEAN (non sono dichiarabili)(non sono dichiarabili)

�� STRING STRING (non (non èè dichiarabile)dichiarabile)

�� ARRAY: ARRAY: èè un set di elementi a cui si può accedere tramite un set di elementi a cui si può accedere tramite un indice. Gli elementi possono essere di tipo diverso.un indice. Gli elementi possono essere di tipo diverso.Var1 = { 1, Var1 = { 1, truetrue, { 12, 3 }};, { 12, 3 }}; // // ArrayArray mademade of of differentdifferent typestypes

Var2 = Var2 = ArrayArray(12); // (12); // CreatesCreates anan arrayarray of 12 of 12 elementselements

Var3 = Var1[0]; // Var3 Var3 = Var1[0]; // Var3 equalsequals 11

Var4 = Var1[2][0]; // Var4 Var4 = Var1[2][0]; // Var4 equalsequals 1212

Var1[1] = false;Var1[1] = false;

�� VECTOR: VECTOR: èè un un arrayarray di di floatfloat

Var1 = [ 0.2 , 2 , 3.33 , 4 ];Var1 = [ 0.2 , 2 , 3.33 , 4 ];

Var2 = Var2 = VectorVector(16); // (16); // createscreates a 16a 16--elements elements vectorvector

Var3 = Var1[0]; // Var3 Var3 = Var1[0]; // Var3 equalsequals 0.20.2

S3D: Tipi di dato predefinitiS3D: Tipi di dato predefiniti

Page 51: Canale visivo: componenti

Rendering

�� OGGETTIOGGETTI

Gli oggetti possono essere dichiarati come istanze di:Gli oggetti possono essere dichiarati come istanze di:

-- Classi predefiniteClassi predefinite-- Classi definite dallClassi definite dall’’utenteutente

Obj1 = Obj1 = CVmLightCVmLight();();

Obj1.SetPosition( 10,10,20);Obj1.SetPosition( 10,10,20);

S3D: Tipi di dato predefinitiS3D: Tipi di dato predefiniti

Page 52: Canale visivo: componenti

Rendering

Class Class PlaylistPlaylist

{{var var idid; ; // Identificativo unico della // Identificativo unico della playlistplaylist

var var namename; ; // Nome della // Nome della playlistplaylist

var var elementselements; ; // // ArrayArray di di idid che compongono la che compongono la playlistplaylist

AddAdd((elel);); // Aggiunge un elemento// Aggiunge un elemento

Start(); Start(); // Avvia la // Avvia la playlistplaylist

Stop(); Stop(); // // StopStop della della playlistplaylist

};};

functionfunction PlaylistPlaylist::::PlaylistPlaylist(i,n,)(i,n,) // Il costruttore // Il costruttore èè dichiarato di defaultdichiarato di default

{{

idid = i;= i;

namename = n;= n;

elementselements = {};= {};

} }

functionfunction PlaylistPlaylist::::AddAdd(song)(song)

{{aaddaadd((elementselements,song);,song);

}}

S3D: Dichiarazioni di classiS3D: Dichiarazioni di classi


Recommended