• Non ci sono risultati.

Modelli 3D

N/A
N/A
Protected

Academic year: 2021

Condividi "Modelli 3D"

Copied!
53
0
0

Testo completo

(1)

Game Dev - GAME TOOLS

Modelli 3D nei games

Marco Tarini

Modelli 3D

Modello 3D = Mesh poligonale

Di triangoli, o mista (quadrilateri + triangoli)

Struttura dati per modellare oggetti 3D

GPU friendly

Risoluzione (potenzialmente) adattiva

“Complessità” = numero facce

(2)

Mesh triangolare (o mesh simpliciale)

Un insieme di triangoli adiacenti

facce

vertici

spigoli (o edges)

Mesh di triangoli

discretizzazione lineare a tratti

di una superfice continua (un “2 manifold”) immersa in R3

Componenti:

geometria

i vertici, ciascuno con pos (x,y,z) un campionamento della superficie!

connettività

come sono connessi i vertici (es.: in una tri-mesh, i triangoli) attributi

es: colore, materiali, normali, UV, …

(3)

Mesh: geometria

Insieme di posizioni dei vertici

Un vettore posizione (x,y,z) per ogni vertice

Mesh: connettività

Triangoli (e edges) che connettono fra loro i vertici

Come nodi in un grafo

(4)

Mesh: attributi

Proprietà che variano sulla superficie Di solito memorizzati per vertice

(almeno, nei games)

Attributi più diffusi nei games:

Normale

per: re-lighting dinamico Colore

per: baked lighting (ambient occlusion) per: aggingere varietà (RGB)

Coordinate tessitura (“uv mapping”) per: texture mapping

Direzioni tangenti per: bump mapping

Bone assignment (“rigging” o “skinning”) per: animazioni skeletali

Meshes: complessità crescente

70.000 △

1994 1994

1994 1994

(5)

Meshes: complessità crescente

1.200.000 △

1997 1997 1997 1997

Meshes: complessità crescente

2.000.000.000 △

2002

2002

2002

2002

(6)

Ma… in ambiente games

LOW POLY MODELLING!

Low-poly modelling

(7)

pixel art

: (high-res) mesh

(high res) image

= :

low-poly model

Metal Slug (1996, Nazca Copr), on Neo Geo (SNK) Solomons’s key

(1986, Temco) on Z80

reminder:

per tutti gli ‘80,

il principaleassetdei games è consistito da

sprites / tilemapsin pixel art ...

(8)

Anche nei games

800 △ Unreal Torunement (1999)

Anche nei games

800 △ Unreal Torunement (1999)

Unreal Torunement 2K3 (2002)

3000 △

(9)

Anche nei games

800 △ Unreal Torunement (1999)

Unreal Torunement 2K3 (2002)

3000 △

Unreal Torunement 3 (2007)

4500 △

solo l’arma questa, 12000 △

800 △ (1999)

3000 △ (2002)

15000 △ (2006)

(10)

Anche nei games

230 △ (1996)

300 △ (1998)

30.000 △ (2008)

48.000 △ (2012) 4.000 △

(2002)

Come rappresento una mesh?

(quali strutture dati)

Una tri-mesh è un insieme di triangoli adiacenti Modo

diretto:

un vettore di triangoli

e per ogni triangolo tre vertici e per ogni vertice tre coordinate

Ma: replicazione dati poco efficiente in spazio oneroso fare updates

(11)

Come rappresento una mesh?

(quali strutture dati)

Modo

indexed:

Geometria: array di vertici

in ogni vertice, posizione e attributi Attributi:

coi vertici

(e.g. campi della classe “vertice”)

Connettività:

Array di triangoli Per ogni triangolo:

tripletta di indicia vertice

Come rappresento una mesh?

(quali strutture dati)

Modo

indexed:

class Vertex { vec3 pos;

rgb color; /* attribute 1 */

vec3 normal; /* attribute 2 */

};

class Face{

int vertexIndex[3];

};

class Mesh{

vector<Vertex> vert; /* geom + attr */

vector<Face> tris; /* connettivita’ */

};

(12)

LetteraL.off

Esempio di mesh indexed:

guardiamo dentro un file in formato OFF

1 5 1 0 5 1 4 3 2 1 0 4 5 4 3 0 4 6 7 8 9 4 6 9 10 11 4 0 1 7 6 4 1 2 8 7 4 2 3 9 8 4 3 4 10 9 4 4 5 11 10 4 5 0 6 11 OFF

12 10 40 0 0 0 3 0 0 3 1 0 1 1 0 1 5 0 0 5 0 0 0 1 3 0 1 3 1 1 1 1 1

# vertici

# facce # edges

x,y,z 2ndo vert

prima faccia:

4vertici:

con indici 3, 2, 1 e 0 indice 0

indice 3 indice 2 indice 1

Come rappresento una mesh?

(quali strutture dati)

Alternativa x storare la connettività : come vettore di half-edges

V2

V3

V5 V4

V1

(13)

Come rappresento una mesh?

(quali strutture dati)

connettività con indexed triangles

V2

V3

V5 V4

V1

T1

T2

T3

Tri:

Wedge 1:

Wedge 2:

Wedge 3:

T1 V4 V1 V2

T2 V4 V2 V5

T3 V5 V2 V3

Come rappresento una mesh?

(quali strutture dati)

connettività con half-edges

V2

V3

V5 V4

V1

H1 H2

H3

H4 H5 H6

H7 H8

H9

Half

edge: Da: A: Next:

Oppo- site:

H1 V4 V1 H2 -- H2 V1 V2 H3 --

H3 V2 V4 H1 H4

H4 V4 V2 H5 H3

H5 V2 V5 H6 H7

H6 V5 V4 H4 --

H7 V5 V2 H8 H5

H8 V2 V3 H9 -- H9 V3 V5 H7 --

(14)

Strutture per connettività a confronto

INDEXED

HW friendly (directly maps to:

vertex arrays, VBO) Navigazione… complicata

richiede strutture dati ulteriori (“di adiacenza”)

Ok per: mesh “pure”

(di soli tri, o, al max, di soli quad) Compatta: 3 indici x tri

> adatta per rendering

HALF-EDGES

Rendering… complicato

Navigazione semplice

es: x trovare tutti i vertici nella

“stella 1” di un vertice…

Ok anche per: polygonal mesh (poligoni misti a piacere) Prolissa: 12 indici per tri

> adatta a mesh processing

Mesh processing

aka Geometry Processing

Un buon manuale

x programmare

mesh processing:

(15)

Mesh processing

aka Geometry Processing

Librerie:

VCG-Lib(CNR, )

Vision and Computer Graphic Lib

OpenMesh(RWTH, de ) + open flipper

CGAL(INRIA, )

Computational Geometry Algorithms Library

(tutte: C++, open-source.)

Attributi comuni: normale

Vettore direzione unitario Orientamento della superficie Usato per il lighting

Di solito, calcolate automaticamente dalla geometria

Ma l’artista decide

quali edges sono

soft

e quali hard

(16)

(2) (1)

v3

Calcolo normali dalla geometria

Geometria

=(1)=>

normali x faccia

=(2)=>

normali x vertice

e1

e2

e1×e2

N ˆ

v

1

Nˆ

2

Nˆ

3

Nˆ

4

Nˆ

5

Nˆ

6

Nˆ

Nn

N N

N

ˆ ˆ ... ˆ

2

1

+ + +

=

|

| ˆ

N N = N

v1

v2

Calcolo normali dalla geometria

Nota:

l’orientamento delle facce deve essere coerente

1

3 2 1

3 2

senso opposto, edge coerente A

B C

D

(17)

Nota:

normali alla superficie

normali

geometriche

definite per faccia implicite

“vere”

(verso dipende da orientamento vertici in faccia)

usate per…

back face culling

normali

come attributo

definite per vertice esplicitamente memorizzate arbitrio dell’artista

(nel caso generale)

usate per…

lighting

si possono usare come modo per calcolare

Crease edges

(aka “hard edges”)

Edges di discontinuità delle normali.

Come si ottiene una discontinuità(C0) negli attributi?

No Creases:

(all edges “soft”)

With Creases:

(red edges “hard”)

(18)

risposta:

Vertex seams

Vertex seam = due vertici coincidenti in xyz

(attributi diversi assegnati ad ogni copia)

es: vertex seams per implementare hard edges

a literal

“seam”

Attributi Comuni: colore

Utile per:

Differenziare modelli Baked global lighting

(per vertex amient occlusion)

(19)

Modelli 3D:

come ottenerli

Come tutti gli asset, possible aquistarli

Formati files per mesh …

(daxkcd.com)

(20)

Formati files per mesh

(una Torre di Babele!)

3DS -3D Studio Max file format

OBJ -Another file format for 3D objects

MA, MB -Maya file formats

3DX -Rinoceros file format

BLEND -Blender file format

DAE -COLLADA file format (Khornos)

FBX -Autodesk interchange file format

X -Direct X object

SMD -good for animations (by Valve)

MD3 -quake 3 vertex animations

DEM -Digital Elevation Models

DXF -(exchange format, Autodesk's AutoCAD)

FIG -Used by REND386/AVRIL

FLT -MulitGen Inc.'s OpenFlight format

HDF -Hierarchical Data Format

IGES -Initial Graphics Exchange Specification

IV -Open Inventor File Format Info

LWO, LWB & LWS- Lightwave 3D file formats

MAZ -Used by Division's dVS/dVISE

MGF -Materials and Geometry Format

MSDL -Manchester Scene Description Language

3DML -by Flatland inc.

C4D –Cinema 4D file format

SLDPTR -SolidWork "part"

WINGS -Wings3D object

NFF -Used by Sense8's WorldToolKit

SKP -Google sketch up

KMZ -Google Earth model

OFF -A general 3D mesh Object File Format

OOGL -Object Oriented Graphics Library

PLG -Used by REND386/AVRIL

POV -“persistence of vision” ray-tracer

QD3D -Apple's QuickDraw 3D Metafile format

TDDD -for Imagine & Turbo Silver ray-tracers

NFF & ENFF -(Extended) Neutral File Format

VIZ -Used by Division's dVS/dVISE

VRML, VRML97 -Virtual Reality Modeling Language (RIP)

X3D -tentato successore di VRML

PLY -introdotto by Cyberware – tipic. dati range scan

DICOM -Dalla casa omonima – tipic. dati CAT scan

Renderman -per l'omonimo visualizzatore

RWX -RenderWare Object

Z3D -ZModeler File format

etc, etc, etc...

Formati file per mesh più usati nei games

.OBJ(wavefront)

max diffusione

indexed, normali , uv-mapping no colori (solo indice materiale x faccia) no skinning o ani

.SMD ( )

animazioni scheletali + skinning

normali , uv-mapping no indexed!

no colori .MD3 (Quake, IDsoft)

vertex animations, normali no colori

.PLY (cyberware)

customizzabile

“accademico”

.3DS ( )

si: colori, uv-mapping, indexed, materiali, tessiture…

no: normali

limite al numero di vert (64K) .COLLADA( )

completissimo

nato apposta per essere interscambio

open standard

quasi impossibile da parsare completamente .FBX ( )

completo, comprese animations complesso, difficile da parsare .MA /.MB ( )

completo, comprese animations complesso, difficile da parsare

p diffusimeno diffusi

(21)

Modelli 3D:

come ottenerli

Modellazione digitale manuale

Lavoro dei modellatori digitali

2D concepts / Sketches 2D concept

artist

3D modeller (modellatore

digitale 3D) 3D low poly mesh

Tecniche di modellazione digitale di modelli 3D

Tecniche:

Low poly diretta e.g. wings3D

Subdivision surfaces e.g. con blender Digital sculpting

e.g. con Z-brush

(22)

Mesh editing:

applicativi generici

3D Studio Max (autodesk) , Maya(autodesk) , Cinema4D (maxon) Lightweight 3D (NewTek), Modo(The Foundry) , …

generici, potenti, completi

Blender

idem, ma open-source e freeware (simile a: Gimp VS. Adobe Photoshop per 2D images)

MeshLab

open-source, grande collezione algoritmi di geometry processing …

AutoCAD (autodesk), SolidWorks(SolidThinking)

per CAD

ZBrush(pixologic), + Sculptris, Mudbox(autodesk)

metafora scultura virtuale, specializzato in ritocco manuale dettagli hi-freq, bumpmapping, normalmaps…

Wings3D

open-source, piccolo, specializzato in low-poly editing, subdivision surfaces

[Rhinoceros]

parametric surfaces (NURBS)

FragMotion

specializzato per mesh animate

+ moltissimi strumenti per contesti specifici

(editing di umani, di interni architetturali, di paesaggi, o editor specifici per game-engines, etc...)

Low poly diretta

(demo)

(23)

Low poly diretta (demo)

1 2 3 4 5 6 7 8

9 10 11 12 13 14 17 18

19 20

21 22

23 24

25 26 27 28 29 30 31

Tecniche di modellazione digitale di modelli 3D

Subdivision surfaces

Raffinamento progressivo della mesh da lowest res hi res

Ottimo per oggetti dall’aspetto smooth, organico e “pulito”

(24)

Superfici di suddivisione

Modo molto diffuso per costruire mesh

1: fare mesh di controllo a bassa risoluzione

"a mano"

2: raffinarla automaticamente iterativamente

(ad ogni interazione si aggiungono facce e vertici)

molti schemi matematici differenti

con diverse peoprietà

Superfici di suddivisione

Esempio: schema butterfly

(per mesh triangolari)

e' uno degli schemi 1=>4

(in un passo di suddivisione, da ogni triangolo se ne ottengono 4) (aggiunta di un vertice per ogni edge)

MA... quali coordinate assegnare al nuovo vertice?

Ogni schema di suddivisone ha la sua formula. Ad esempio...

Passo suddivisonedi

(25)

POS( ) = (POS( ) + POS( ))

+ (POS( ) + POS( ))

+ (POS( ) + POS( ) + POS( ) + POS( ))

Superfici di suddivisione

Esempio: schema butterfly

168 8

16 162

162

16-1

16-1 16-1

16-1

168 162 16-1

Superfici di suddivisione

Ad ogni passo di suddivisione

(x,y,z) dei nuovi vertici inseriti

formula (estrapolazione dei vicini)

(x,y,z) dei vecchi vertici

si tiene la vecchia pos (schemi“interpolativi”) oppure

formula (estrapolazione) (schemi“approssimativi”)

(26)

Esempio: con schema Catmull-Clark

level 0

(“control mesh”) level 1

level 2 level 3

lvl

(“limit surface”)

Superfici di suddivisione

mesh di controllo

mesh

(27)

Superfici di suddivisione

Anche iterativamente:

1- Modellare “control mesh”

(editing manuale)

2- Suddivisione

(un passo)

3- Ritocco!

(editing manuale)

4- Goto 2

(fino a

raggiungimento risultato voluto

alla risuolzione voluta)

DEMO!

Molti schemi…

Catmull-Clark Doo-Sabin Loop

sqrt(3) Butterfly Mid-edge

….

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

recente aumento di popolarità (GPU friendliness)

(28)

Differenze fra gli schemi di suddivisione

interpolativi VS approssimativi

solo triangoli, solo quads, qualunque cosa incremento complessità

(per ogni passo di suddivisione)

proprietà della limit surface

(esistenza, smoothness)

esistenza forma chiusa per la limit surface

(esatta o approssimata)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Tecniche di modellazione digitale di modelli 3D

Tecniche:

Low poly diretta e.g. wings3D

Subdivision surfaces e.g. con blender Digital sculpting

e.g. con Z-brush

DEMO

(29)

Digital Sculpting

cisel (scalpello)

Modelli 3D:

come ottenerli

Modellazione digitale manuale

Lavoro dei modellatori digitali

2D concepts / Sketches 2D concept

artist

3D modeller (modellatore

digitale 3D) 3D low poly mesh

(30)

Modelli 3D:

come ottenerli

Attraverso 3D scanning

Tecnologie per ottenere:

modelli digitali 3D a partire da:

oggetti reali

3D scanning

Modelli 3D:

come ottenerli

3D scanning

A.k.a. automatic 3D model acquisition Molte tecnologie diverse

Laser scanners Time of flight

Structured light (kinect)

Caratteristiche diverse Qualità risultati

Rumore / risoluzione Automatismo Invasività

Markers? Powder?

Real time? (kinect) Costo

Dimensione massima oggetti (full body scanner?)

(31)

Modelli 3D:

come ottenerli

Attraverso 3D scanning

Modello reale Scultore

(fisico)

Hi res model 3D scanning

Modelli 3D:

come ottenerli

(scanned) hi res model 30000 tri (artistic)

manually edited 3D low poly mesh PERFECT for games!

(much easier to: animate, re-edit, uvmap, …)

VS

Dino, scanned by artec3d

(32)

Modelli 3D:

come ottenerli

Modellazione procedurale

Programma che genera la mesh

parametri

Procedural generation:

ottimo per games

Concetto: invece di avere un asset,

avere un programma che lo crea dinamicamente

Modellazione procedurale

AI procedurali, boss procedurali…

Livelli procedurali Terreni procedurali Musica procedurale Scene procedurali

Elite, Acornsoft, 1984

Parentesi:

Left 4 dead, Valve, 2008

Rescue the beagles 16x16, 2008 Minecraft,

Mojang, 2009

(33)

Procedural generation:

ottimo per games

Concetto: invece di avere un asset,

avere un programma che lo crea dinamicamente

Modellazione procedurale

AI procedurali, boss procedurali…

Livelli procedurali Terreni procedurali Musica procedurale Scene procedurali

Vantaggi: varietà, no RAM, … Elite, 1984

Parentesi:

Semplificazione automatica di modelli 3D

automaticamente

mesh semplificata 2K triangles mesh originale

500K triangoli

parametri:

un errore massimo

o un numero di facceobiettivo

(34)

Semplificazione automatica di modelli 3D

p e r f o r m a n c e

q u a l i t y

Semplificazione automatica

LOD 1 LOD 2 LOD 3 LOD 4

Una piramide di Livelli di Dettaglio

usare quando visto da vicino

usare quando visto da lontano

(35)

LoD pyramid

Demo

Semplificazione automatica

Molte tecniche diverse

Adattive oppure no

usare piu' triangoli dove c'e' bisogno (es non nelle zone cmq piatte)

oppure no

Errore massimo introdotto:

misurato e/o limitato oppure no

Topologia:

mantenuta oppure no Streaming

Possibile Oppure no ...

(36)

Texture mapping

geometria 3D

(insieme di quadrilateri)

+

RGB texture 2D (color-map)

=

Altro esempio di color-map

+ =

(37)

Altri esempi di color-map

Notazione

Texture 2D

s t

texel

Texture Space

(o "spazio parametrico" o "spazio s-t" o "spazio u-v")

Una Texutre e' definita nella regione [0,1] x [0,1]

dello "spazio parametrico"

es: 512 texels

es: 1024 texels

1.0 1.0

(38)

Due notazioni

Texture Space in OpenGL (s,t)

s t

1.0

1.0 u

v

1.0

1.0

Texture Space in DirectX (u,v) (0,0)

(0,0)

Task: “u-v mapping” di una mesh

(“u-v” == “s-t”)

Assegnare una coppia di coordinate texutres ad ogni vertice della mesh

In preprocessing

s t

s t

(39)

Problema difficile: “u-v mapping”

(“u-v” == “s-t”)

fatto a mano,

oppure automatizzato

Texture mapping

Ogni texel è…

Un colore RGB (color map, RGB map,diffuse map) Una normale (bump map, o normal map)

Il coefficiente speculare (specular map) Un fattore di trasparenza (alpha map, o

cutout texture) Una scavo dalla superfice

(displacemnt map, oheight texture) Un lighiting precalcolato (light map ,

baked light texture)

(40)

Texture maps come assets

Vari texture «sheets»

associati ad una mesh tipica struttura dati:

mesh divisa in sottomesh

ogni sottomesh associata a un materiale ogni materiale:

1 sheet di diffuse-map 1 sheet bumpmap (se serve) 1 sheet di alphamap (se serve) 1 vertex + fragment shader vari parametri

(es, shininess, …)

Texture maps come assets

Caratteristiche:

Size:

risoluzione

canali (es: alpha?) MIP-maps precalcolati?

Tileable?

A A

B

B

Vincoli ricorrenti:

res come potenze di 2

(richiesto da sempre meno engines) sia in U che in V

(es: 256x256 o 1024x512)

res per lato < max

(es: max = 4096 o 2048)

(41)

Tileable textures

Tileable textures

Tipico utilizzo:

Molto efficiente in spazio!

(42)

Texture maps come assets:

formati files

x immagini generiche

(decomprimere tutta immagine prima di accedere ai pixel)

compressione: ottima loading: pesante:

decomprimere da RAM, (forse) ricomprimere in GPU-RAM

MIP-map lvls etc:

controllato dall’engine

x textures

(random accessibility ai texels senza decomprimere)

compressione: cattiva

loading: leggero

direct copy Disco => RAM =>

GPU RAM

MIP-map lvls etc:

controllato dall’artista

Texture maps come assets:

formati files

x immagini generiche:

.JPG /.JPEG lossy,

> compresisone,

immagini “fotografiche”: best solo 3 canali (no choice) 8 bit x canale (no choice) .PNG

lossless

< compressione

disegni: best

anche canale alpha possibile

anche 16 bits possibile .TIFF e.RAW (rari)

lossless

compressione: vabbe’

max flessibilità canali etc .PNM (davvero raro)

compressione: ahah

x textures:

.DDS

(direct draw surface) lossy

compresisone: poco (a rate fisso)

GPU ready

inlcude MIPmap levels (volendo)

con compressione a scelta (S3TC):

DXT1 DXT2 DXT3 DXT4 DXT5

(diversi compromessi fra qualità, costo, canali…)

“no / 1-bit alpha”

“rough alpha”

“smooth alpha ”

(43)

RGB maps:

come si ottengono

Image first, then UV-mapping

e.g. immagine da fotografie e.g. tileable images

UV-mapping

first, then

paint 2D

paint with 2D app(e.g. photoshop)

UV-mapping

first, then

paint 3D

paint within 3D modelling software, Or: export 3D images,

use e.g. photoshop, reimport images

UV-mapper

UV-mapper 2D painter

UV-mapper 3D painter

RGB maps:

come si ottengono

…or:

first Paint 3D

on hi-res model,

“paint” on vertex attributes e.g. with Z bursh…

then coarsen

build / autobuild final low-poly version

then UV-map

the low-poly model must be a 1:1 mapping!

then auto-texture

auto build texture

more about

this later…

(44)

Alpha mapping

(texels = lvl trasparenza)

Alpha map

RGB map

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2

Alpha mapping

(texels = lvl trasparenza)

es: drappi, barba...

by Micheal Filipowski

tessitura

(45)

Texture mapping e Alpha Test

es: alberi, foliage

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 1 / 1 2 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Texture mapping e Alpha Test

Es: pelo, pellicce

tessitura (ripetuta)

(46)

Bump-Mapping (see demo)

stessa geometria (una sfera) bumpmaps diverse

Normal maps

Memorizzati come immagini

RGB => XYZ

(come?) caratteristico colore RGB

(0.5,0.5,1) - (128,128,255)

(47)

Normal maps

Espressi in spazio tangente

Memorizzare direzioni tangenti Tangente e Bi-tangente

Attributi x vertice!

Computati automaticamente a partire da UV mapping (come?)

Normal maps

Come si ottengono (1/3):

Displacement map come grayscale

Filtro (e.g.

photoshop) 2D texture

painter

Normal map

(48)

Normal maps

Come si ottengono (2/3):

Photometric Stereo

da: N immagini (N>=4) reali Stesso punto di vista

Illuminazione diversa

(e possibilmente controllata e nota)

a Normal Map

Normal maps

Come si ottengono (3/3):

Detail recovery da:

1) mesh Hi-Res

2) mesh Low-res + UV mapping (senza ripetizioni)

a:

Normal map per 2

(che mimica il dettaglio presente in 1)

More about this later…

(49)

Normal maps

Come si ottengono (bonus):

Proceduralmente

Semplificazione automatica

Strategie completamente diverse

Approcci iterativi repeat

compi l'azione di semplificazione atomica meno costosa

(in termini di errore aggiunto) aggiorna costi

until (obiettivo raggiunto)

es: numero faccie, errore

remove vertex

remove face

edge collapse

(50)

Detail preservation

(o "texture for geometry")

Idea:

semplificare una mesh sintetizzare una tessitura

per ripristinare il dettaglio perso durante la semplificazione

M a r c o T a r i n i ‧ [ G A M E - D E V ] ‧ V e r o n a ‧

500mila triangoli

2mila triangoli

semplificazione automatica

sempre duemila triangoli, ma con texture mapping

rendering

TESSITURA fatta apposta (es. BumpMap

normali o RGB map x colori) detail

recover

(51)

M a r c o T a r i n i ‧ [ G A M E - D E V ] ‧ V e r o n a ‧ 2 0 1 3

simplificato

2K triangles

originale

500K triangles

semplificato ma con tessitura

2K triangles

Esempio

(52)

Esempio

Mesh: task tipici nella game industry

Semplificazione automatica

LOD construction

Light baking

Precomputazione Luce

Tipico esempio: Ambient Occlusion

U-V mapping

parametrizzazione

Texturing

creazione tessiture di vario tipo

Rigging / Animation

linear blend skinning

(53)

Una classe di tool utili:

attribute transfer

Attribute transfer

Da mesh A a mesh B Retargeting di:

Animazioni, UV-mapping, tessiture, …

3D assets and memory

Gli asset Mesh + Tessiture sono tenuti in memoria VIDEO

Conseguenze per

Memorizzazione, Gestione

Riferimenti

Documenti correlati

Spiegare, tramite un disegno, come il suo integrale pu` o essere definito tramite le somme di Riemann inferiori e superiori.. Enunciare il teorema fondamentale del

Analisi Matematica 1 (Informatica, Universit` a di Cagliari), 2007/2008 Scritto Generale, 22 Ottobre 2010, Soltanto Studenti Fuori Corso Cognome e nome:... Enunciare il

Spiegare, tramite un disegno, come il suo integrale pu` o essere definito tramite le somme di Riemann inferiori e

Spiegare, tramite un disegno, come il suo integrale pu` o essere definito tramite le somme di Riemann inferiori e

Spiegare, tramite un disegno, come il suo integrale pu` o essere definito tramite le somme di Riemann inferiori e

Fondamenti di Fisica Matematica: Secondo parziale 07.06.2011. Cognome

Fondamenti di Fisica Matematica: Secondo parziale 12.06.2012. Cognome

Fondamenti di Fisica Matematica: Secondo parziale 14.12.2012. Cognome