Modellazione Geometrica

Per realizzare una scena virtuale bisogna prima creare gli Asset necessari per renderizzarla e per potervi interagire.
Questo avviene tramite software di modellazione 3D come Blender, Maya, e molti altri.

Oggetto 3D

Nella computer grafica 3D e nella modellazione solida, una mesh poligonale è un insieme di vertici, bordi e facce che definisce la forma della superficie di un oggetto poliedrico. Le facce di solito sono costituite da triangoli (mesh triangolari), quadrilateri (quad) o altri semplici poligoni convessi (n-gon).
Gli oggetti creati con mesh poligonali devono memorizzare diversi tipi di elementi. Questi includono vertici, bordi, facce, poligoni e superfici.

Wikipedia

Un oggetto 3D è una rappresentazione digitale che occupa volume nello spazio tridimensionale, mentre una mesh è una struttura composta da vertici, edges e facce che insieme formano la superficie dell’oggetto. Le mesh possono essere utilizzate in ambiti come i videogiochi, l’animazione e la simulazione. Inoltre, le mesh possono essere di diversi tipi a seconda della geometria utilizzata, come triangoli o quadrilateri.

Link to original

Gli oggetti 3D possono essere a diversi tipi di qualità in base a:

  • Skill dell’artista
  • Necessità del progetto
  • Richieste di ottimizzazione

Level of Detail

Il Level of Detail (LOD) nei modelli 3D è un concetto utilizzato in grafica computerizzata per adattare la complessità dei modelli 3D in base alla distanza dell’osservatore. Le sue principali funzioni includono:

  1. Ottimizzazione delle risorse: Riducendo il dettaglio dei modelli man mano che si allontanano dal punto di vista dell’osservatore, il LOD permette di risparmiare memoria e potenza di calcolo, migliorando l’efficienza del rendering.
  2. Qualità visiva: Spesso le variazioni di dettaglio non sono percepibili dall’osservatore, mantenendo una qualità visiva accettabile anche a distanza.
  3. Tecniche di gestione: LOD può essere implementato tramite metodi discreti (DLOD), creando versioni multiple di un modello con diversi dettagli, o metodi continui (CLOD), che permettono di variare dinamicamente il dettaglio.

Questa tecnica è ampiamente utilizzata in videogiochi, modelli 3D in GIS (Sistemi Informativi Geografici), e software di rendering per ottimizzare le prestazioni.

Un’alternativa è quella di modificare la trasparenza di un oggetto man mano che si allontana dalla visuale del giocatore fino a renderlo del tutto trasparente, o sostituirlo con delle Billboards.

Link to original

Alcune aziende come Turbosquid si occupano di realizzare delle certificazioni per i modelli 3D realizzati dagli artisti che verificano che questi siano conformi agli standard di industria.

Ci sono due principali tecniche di realizzazione dei modelli 3D: ricostruzione e acquisizione.

Alcuni strumenti hardware permettono l’acquisizione della geometria e spesso del colore di un oggetto a risoluzione estremamente elevata. Questo avviene tramite un sistema di videocamere a infrarossi e sensori di profondità che creano una nube di vertici che viene trasformata in una mesh. Questi modelli richiedono una semplificazione per essere utilizzati in applicazioni real-time, in quanto sono troppo dettagliati e complessi e poco ottimizzati.

Esistono anche software capaci di creare modelli 3D a partire da diverse immagini di uno stesso oggetto realizzate a diverse angolazioni tramite tecniche di fotogrammetria e intelligenza artificiale. Il risultato di questo tipo di applicazione non è preciso quanto la scansione tramite un hardware dedicato, ma in genere è comunque buono se si devono utilizzare applicazioni in real-time.

Infine si possono ricostruire modelli da zero con immagini come reference, che richiede più tempo ma è meno costoso dal punto di vista dell’hardware richiesto e permette una maggiore libertà artistica.

Kit di Design Modulare

Quando si realizzano Asset, che sia per ricostruzione o scannerizzazione si cerca di avere un approccio modulare, ovvero cercare di realizzare modelli elementari per poterli riutilizzare il più possibile. La vera magia sta nel riutilizzare più asset possibile senza che diventi ovvio e che quindi l’utente se ne accorga.
Questo perché la natura è molto caotica e non accade spesso che due muri, pavimenti, etc… siano perfettamente uguali.

Per nascondere il riutilizzo degli asset ormai si utilizzano tante texture procedurali, ovvero realizzate interamente o parzialmente tramite prodotto di algoritmi matematici che possono “sporcare”, “tagliare”, “distruggere” o alterare la texture di base in modo tale da darle una storia diversa dagli altri elementi che utilizzano la stessa texture.

Procedurale vs AI

L’utilizzo di algoritmi procedurali è diverso rispetto all’utlizzo di intelligenza artificiale. Generalmente le texture procedurali utilizzano algoritmi ben definiti e realizzati dall’artista.

Cominciamo con un’osservazione piuttosto semplice: i nostri giochi sono grandi. Se hai giocato o letto di Skyrim, Fallout 3 o di qualsiasi altro nostro gioco open-world, lo scope è una parte importante di questi. È parte integrante dei nostri giochi e del nostro DNA come studio. Non si può ridurre Skyrim a un gioco di sei ore e aspettarsi di offrire la stessa esperienza. Lo scope non è un attributo casuale dei nostri giochi; È una caratteristica importante.

I kit, prima di tutto, sono sistemi. Un kit di tubi di base, come quello di Fallout 3, può essere composto solo da quattro semplici opere d’arte che possono essere utilizzate insieme. Questo kit, come la maggior parte, si aggancia utilizzando un sistema a griglia. L’attributo più importante di un kit è che si somma a molto di più della somma delle sue parti. Questo artista non ci ha dato solo quattro pezzi, ma un sistema con cui possiamo creare infinite configurazioni di tubi, tutti dal lato dell’editor.

[…] Grazie a questo, non è necessario dipingere l’intero mondo a mano. Designer e artisti possono utilizzare sistemi artistici quali il tiling per disegnare la mappa rapidamente.

Il primo e più evidente vantaggio di lavorare con l’arte modulare è che è riutilizzabile. Il riutilizzo dell’arte ci aiuta a mitigare l’enorme portata dei nostri giochi. C’è un’enorme quantità di world-building in Skyrim e non dover creare ed esportare specificamente ogni recinsione e porta diventa molto importante per noi. Cerchiamo di essere intelligenti riguardo a dove dedichiamo il nostro tempo e la nostra attenzione, riutilizzando l’arte dove ha senso e investendo tempo dove vogliamo qualcosa di più unico.

Dovremmo anche riconoscere lo svantaggio più evidente dell’uso dell’arte modulare: il fatto che l’arte riutilizzata può diventare ripetitiva. Questo porta a quella che comunemente chiamiamo “art fatigue”. Il tempo medio di gioco di Skyrim su Steam ha raggiunto il picco di oltre 100 ore, il che è un enorme complimento.  Con quel tipo di tempo trascorso, tuttavia, i giocatori sono destinati a notare la stessa roccia o fattoria o arazzo utilizzato più e più volte. E altre due dozzine di volte dopo. L’art fatigue si insinua dove questa ripetizione diventa evidente ed erode l’autenticità del mondo.

Gamedeveloper

Link to original

I formati più comuni per gli oggetti 3D sono:

FormatoNote
.fbxFormato proprietario di autodesk ma molto utizzato e supportato da quasi tutti i software.
.obj / .3dsVecchi formati proprietari che possono essere usati per oggetti statici con qualche limitazione.
Link to original

Modellazione Cinematica

La modellazione cinematica o animazione gestisce come la posizione e l’orientamento degli oggetti cambia nel tempo, spesso tramite l’utilizzo di keyframe interpolation o tween.

Keyframe Interpolation

Permette agli artisti di impostare la posizione di un oggetto nel tempo e spesso gli strumenti di sviluppo permettono di interpolare posizione iniziale e finale per realizzare una transizione fluida.

Per personaggi umanoidi spesso si può utilizzare la Motion Capture per registrare animazioni e importarle nei software di keyframing.

Link to original

Modellazione Fisica

La modellazione fisica permette di definire i parametri fisici della scena 3D, quali:

  • Massa di un Oggetto 3D
  • Inerzia
  • Ruvidità delle superfici
  • Tipo di materiale

Ogni software real-time ha una sua componente di Physics Engine (letto engin, non engiaine) che permette ai programmatori di definire questo comportamento per tutti gli Asset e agenti presenti nella scena.

Link to original

Modellazione del comportamento

Level of Autonomy

I livelli di autonomia definiscono il comportamento degli agenti presenti all’interno di una scena.

Un agente guidato è quello definito da un processo o un comportamento esterno (ad esempio apertura porte automatiche quando un altro agente si avvicina)
Un agente programmato è quello definito da ???
Un agente autonomo è presente quando un agente acquisisce informazioni sugli oggetti e agenti che lo circondano per determinare il proprio comportamento.

L’autonomia di un agente si basa sulla percezione visiva, azioni esterne e altre regole comportamentali quali eventualmente necessita

Link to original

Quando più agenti si uniscono in un gruppo di agenti creano una folla, che generalmente si comporta in maniera diversa rispetto a come si comporta il singolo individuo.

Esistono diversi algoritmi che permettono la modellazione del comportamento in real time come Behaviour Tree, Finite State Machine e Goal Oriented Action Planning.

Finite State Machine

Il modello teorico prevede la definizione di alcuni stati collegati tra loro e delle condizioni che agiscono da trigger il passaggio di stato.

La macchina a stati finiti è una macchina astratta che può trovarsi esattamente in uno di un numero finito di stati in un dato momento. L’FSM può cambiare da uno stato all’altro in risposta ad alcuni input; Il passaggio da uno stato all’altro è chiamato transizione. Un FSM è definito da un elenco dei suoi stati, del suo stato iniziale e degli input che attivano ogni transizione. Le macchine a stati finiti sono di due tipi: macchine a stati finiti deterministiche e macchine a stati finiti non deterministiche. Per ogni macchina a stati finiti non deterministica, può essere costruita una macchina deterministica equivalente.

Wikipedia

L’idea della macchina a stati finiti è molto semplice, ma è poco scalabile. Per numeri di stati grandi il numero di transizioni diventa altrettanto alto e quindi è difficile da usare per sistemi complessi.

Link to original

Behaviour Tree

Un behaviour tree è un albero gerarchico di nodi ed edge (quindi in struttura Parent-Child-Leaves).
Solo le foglie definiscono lo stato attuale, mentre i child verificano soltanto delle condizioni.

A differenza di una macchina a stati finiti o di altri sistemi utilizzati per la programmazione dell’intelligenza artificiale, un albero del comportamento è un albero di nodi gerarchici che controllano il flusso del processo decisionale di un’entità di intelligenza artificiale. Alle estensioni dell’albero, le foglie, sono i comandi effettivi che controllano l’entità IA, e a formare i rami ci sono vari tipi di nodi di utilità che controllano la camminata dell’IA lungo gli alberi per raggiungere le sequenze di comandi più adatte alla situazione.

Gli alberi possono essere estremamente profondi, con nodi che chiamano sottoalberi che svolgono funzioni particolari, consentendo allo sviluppatore di creare librerie di comportamenti che possono essere concatenati insieme per fornire un comportamento dell’IA molto convincente. Lo sviluppo è altamente iterabile, in cui è possibile iniziare formando un comportamento di base, quindi creare nuovi rami per gestire metodi alternativi per raggiungere gli obiettivi, con rami ordinati in base alla loro desiderabilità, consentendo all’IA di avere tattiche di ripiego nel caso in cui un particolare comportamento fallisca. È qui che brillano davvero.

Gamedeveloper

I nodi di composizione possono essere di tipo:

  • selector se rispondono alla domanda lungo quale child devo proseguire? (comportamento logico OR)
  • sequence se realizzano un flusso di esecuzione di tutti i child uno dopo l’altro, da sinistra verso destra (comportamento logico AND)
  • parallel se esegue più flussi di azioni in parallelo.

Esistono anche dei nodi decorator che modificano leggermente il comportamento delle azioni eseguite, come:

  • repeat per ripetere azioni
  • not per negare una condizione
Link to original

Utility AI

Questo tipo di intelligenza artificiale cerca di analizzare stimoli esterni e bisogni esterni per prendere decisioni autonome sul come risolvere i proprio bisogni.

Ogni agente ha una serie di bisogni (fame, socializzazione, igiene, energia, ecc.) che diminuiscono nel tempo fino a diventare una priorità, che diventerà il focus dell’agente. Si usa una funzione di scoring che assegna un punteggio a tutte le azioni possibili in base a bisogni, desideri, durata dell’azione e contesto per ordinare le azioni dalla più urgente alla meno urgente.

Approfondimenti

Link to original

Goal Oriented Action Planning

Il Goal Oriented Action Planning deriva dall’Automated Planning

Automated Planning

L’automated planning è un tipo di algoritmo di intelligenza artificiale per cui un sistema cerca autonomamente la migliore sequenza di azioni che possa permettere al sistema di raggiungere un obbiettivo imposto dal designer.
La sequenza di azioni realizzata dal sistema è chiamata piano di azione.

Questo può essere realizzato tramite la codifica del mondo e dell’ambiente con un’insieme di informazioni che lo riguardano detti fatti.
L’insieme di tutti i fatti in un determinato momento temporale è detto stato.

Le azioni vengono modellizzate tramite tre componenti:

  • Gli oggetti che fanno parte dell’azione
  • Le precondizioni che devono essere vere perché l’azione possa avvenire
  • Gli effetti sullo stato e come l’azione modifica i fatti conosciuti
Link to original

In questo tipo di IA le FSM hanno tre classi di stati:

  • Movimento all’interno del mondo virtuale (che può includere un’animazione)
  • Riproduzione di un’animazione
  • Interazione con un oggetto nel mondo virtuale

Ogni IA deve avere assegnato uno o più obbiettivi (ognuno con una propria priorità) che vengono modellizzati come un insieme di azioni necessarie per raggiungerli.

Azioni e Obbiettivi

Ad esempio per aprire una porta presente in cucina, mentre si è nella camera da letto, sarà necessario muoversi in una delle due stanze che la porta collega e poi interagire con la porta per aprirla.
Quale sia il planning migliore in questo caso può essere stabilito conoscendo a priori quale delle due stanze è più vicina all’NPC.

Questo non è sufficiente per avere un’IA abbastanza “intelligente”, in quanto in presenza di più agenti lo stato del mondo può cambiare anche per effetto di un altro agente (o del giocatore stesso). Bisogna quindi effettuare dei check di verifica di compatibilità del piano di azione sia prima della sua formulazione, che quando lo stato del mondo cambia e durante l’esecuzione dell’azione .

Approfondimenti

Link to original

Link to original