Definizione di Motore Grafico 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.

Motori 3D fotorealistici

Si definiscono così quei motori grafici 3D che producono immagini di qualità prossima o addirittura paragonabile a immagini di scene reali. I motori grafici di questa categoria sono esclusivamente di tipo software, cioè non si appoggiano su hardware di accelerazione 3D. Nelle applicazioni in cui vengono sfruttati i motori 3D fotorealistici, la precisione e la qualità delle immagini renderizzate è prioritaria rispetto alla velocità di calcolo. I motori grafici di questa categoria sfruttano algoritmi molto sofisticati per simulare fedelmente gli effetti ottici di diffusione, rifrazione, riflessione, pulviscolo, proiezione di ombre, aberrazioni cromatiche e altri effetti che contribuiscono a rendere la scena estremamente realistica. Molti di questi algoritmi non possono essere implementati nei motori in tempo reale per la loro estrema complessità, oppure vengono implementati in forma semplificata e approssimativa. Alcuni di questi algoritmi sono il Ray Tracing, il Photon Mapping, e altri. Data la mole di calcoli necessaria, generalmente i motori 3D fotorealistici sono progettati per essere eseguiti su macchine multiprocessore e su cluster. Questi motori grafici sono usati per la realizzazione di opere artistiche, progettazione architettonica e meccanica, design, produzioni cinematografiche (per effetti speciali o per interi film d’animazione).

Matematica dei motori 3D

La maggior parte della matematica implicata nella realizzazione di un engine è quella dei vettori e delle matrici.

Conclusioni

Ovviamente questa è un piccolo glossario che permette di capire più affondo questa tematica molto interessante.