Motori Grafici.
Motori Grafici.
Vediamo di capire con nozioni abbastanza semplici alcune basi della Grafica e relativi motori, nozioni che sono fondamentali per la
riuscita dei nostri progetti. Quando parliamo di Grafica 2D e 3D di solito ci scontriamo con qualcosa di veramente difficile, e, come
se non bastasse anche i vari software di grafica sono estremamente complessi, sia per lo studio e nella realizzazione di qualsiasi
cosa che vorremmo eseguire con i medesimi, ma vediamo di essere più chiari con queste nozioni di base.
Il motore grafico è il nucleo software di un videogioco o di qualsiasi altra applicazione con grafica in tempo reale. Esso fornisce le tecnologie di base, semplifica lo sviluppo, e spesso permette al gioco di funzionare su piattaforme differenti come le console o sistemi operativi per personal computer. La funzionalità di base fornita tipicamente da un motore grafico include un motore di rendering ("renderer") per grafica 2D e 3D, un motore fisico o rilevatore di collisioni, suono, scripting, animazioni, intelligenza artificiale, networking, e scene-graph.
Panoramica.
Motori grafici avanzati come l'Unreal Engine 3, il Source Engine, l'id Tech 5, il RenderWare e il Gamebryo forniscono una suite di strumenti di sviluppo visuali in aggiunta alla componente software riutilizzabile. Questi strumenti vengono forniti generalmente all'interno di un ambiente di sviluppo integrato (dall'inglese integrated development environment o più comunemente IDE) affinché permettano lo sviluppo semplificato e rapido (RAD) dei giochi secondo un metodo di progettazione data-driven. Questi motori grafici vengono chiamati spesso "game middleware" perché, in accordo con il significato commerciale del termine, forniscono una piattaforma flessibile e riutilizzabile che fornisce tutte le funzionalità chiave necessarie esternamente per sviluppare un'applicazione ludica riducendo i costi, la complessità e il tempo impiegato; tutti fattori critici e altamente competitivi nell'industria di videogiochi e computer.
Come altre applicazioni di transizione, i motori grafici sono spesso indipendenti dalla piattaforma, permettendo allo stesso gioco di girare su più piattaforme, incluse le console quali PlayStation, Xbox, Nintendo e su sistemi operativi come Microsoft Windows e Mac OS, con nessuno o qualche piccolo cambiamento al codice sorgente del gioco.
Spesso i middleware sono progettati con un'architettura modulare che permette di sostituire o estendere parti del motore con soluzioni più specializzate (e magari costose), come il software Havok per la fisica, FMOD per il suono, o SpeedTree per il rendering. Alcuni motori grafici come il RenderWare sono addirittura concepiti come una serie di middleware indipendenti che possono essere combinati a piacere per creare un motore personalizzato, piuttosto che modificare un motore già esistente. In qualunque modo si ottenga la flessibilità, questa rimane comunque una forte priorità, a causa della grande varietà di applicazioni cui i motori grafici devono rispondere. Nonostante l'idea di motore grafico rimandi immediatamente al concetto di videogioco, in verità essi sono usati in molti altri tipi di applicazioni interattive che richiedono grafica in tempo reale, come dimostrazioni commerciali, progettazioni architetturali, simulazioni e ambienti di modellazione.
Alcuni motori forniscono solo capacità grafiche, invece della vasta gamma di funzionalità richieste da un videogioco. Questi motori affidano agli sviluppatori il compito di inserirle, anche tramite altri middleware, magari da altri giochi. A motori come questi calza veramente la definizione di "motore grafico" in senso stretto. Non c'è comunque una convenzione condivisa sul termine: per il senso generale si può usare il termine "motore 3D". Esempi di motore grafico in senso stretto sono: Irrlicht, Axiom, OGRE, Power Render, Crystal Space e Genesis 3D. Molti motori moderni forniscono lo scene-graph, una rappresentazione del mondo 3D orientata agli oggetti che spesso semplifica lo sviluppo del gioco e che può essere usata per un rendering più efficiente di mondi virtuali molto vasti.
Astrazione dell'hardware.
I motori grafici sono costruiti nella maggior parte dei casi su delle API grafiche, come Direct3D o OpenGL, che offrono un'astrazione software della GPU o della scheda video. Sono spesso usate anche librerie di basso livello, come DirectX, SDL e OpenAL, le quali offrono un accesso diretto ad altro hardware (ad esempio mouse, tastiera, joystick, scheda di rete, e scheda audio). Prima dell'avvento della grafica 3D accelerata, si usavano render software come le API Glide. Soluzioni software come questa sono ancora utilizzate in alcuni strumenti di modellazione o di rendering statico, in cui la precisione è più importante della velocità, o quando l'hardware del computer non soddisfa i requisiti (come il supporto degli shader o delle Direct3D 10, come nel caso di Windows Vista).
Motori 3D.
Un Motore 3D è un software progettato con lo scopo di rappresentare su una superficie 2D (come lo schermo) una scena 3D composta da elementi sintetici. Esistono diverse categorie di motori 3D, ma essenzialmente si possono distinguere in due tipi, a seconda dello scopo per il quale sono preposti: motori 3D in tempo reale e motori 3D per la produzione di immagini fotorealistiche.
Motori 3D in tempo reale.
I motori 3D in tempo reale (in inglese "real time 3D engine") sono impiegati laddove sia necessario produrre immagini tridimensionali "al volo". Con questa espressione si indica la capacità di calcolare, e quindi di mostrare a schermo (oppure tramite altri dispositivi ottici, ad esempio occhiali per la realtà virtuale) le immagini in brevissimo tempo, tale da ottenere un certo numero di immagini al secondo, tipicamente 30-60 immagini al secondo (abbreviato spesso come fps, dall'inglese "Frames Per Second"). Questi requisiti di velocità possono essere raggiunti con varie tecniche, evolutesi nel tempo grazie soprattutto all'invenzione di dispositivi hardware dedicati allo scopo: gli acceleratori grafici 3D. Questi dispositivi, costituiti in sostanza da un coprocessore matematico e da una certa quantità di memoria RAM, svolgono certe funzioni matematiche estremamente ottimizzate e consentono allo sviluppatore di sgravare la CPU da un'enorme quantità di calcoli, permettendo quindi di realizzare motori grafici più raffinati e più veloci. L'introduzione degli acceleratori grafici ha decretato la formazione di due sottocategorie di motori in tempo reale: i motori grafici software e i motori accelerati in hardware. Nonostante il nome possa trarre in inganno, si parla in entrambi i casi di software. La differenza consiste nel fatto che i primi sfruttano esclusivamente la CPU (ed eventualmente la FPU e le istruzioni SIMD come MMX, SSE, 3DNow!, ecc.) per effettuare i calcoli geometrici necessari, mentre i secondi relegano molte delle funzioni primarie (come la trasformazione, l'illuminazione, l'applicazione delle texture, ecc.) all'acceleratore hardware. Ovviamente entrambi gli approcci portano dei vantaggi e degli svantaggi: i motori software renderizzano le immagini esattamente nel modo previsto dal programmatore ma risultano lenti, quindi non possono produrre immagini di elevata qualità per l'eccessiva quantità di calcoli necessari; i motori accelerati, invece, sono estremamente veloci e producono immagini di elevata qualità, ma richiedono la presenza di hardware dedicato e l'accuratezza delle immagini è soggetta al particolare acceleratore utilizzato. I motori 3D in tempo reale trovano largo impiego nella realizzazione di videogames, simulatori, interfacce grafiche, realtà virtuale.
Commenti
Posta un commento
Ciao a tutti voi, sono a chiedervi se avete preferenze per Post di vostro interesse
in modo da dare a tutti voi che mi seguite un aiuto maggiore, grazie per la vostra disponibilità.