• Non ci sono risultati.

I Modelli 3D più comuni:

N/A
N/A
Protected

Academic year: 2021

Condividi "I Modelli 3D più comuni:"

Copied!
46
0
0

Testo completo

(1)

Game Engines Master Game Dev Verona, 2014-2015

Assets: 3D Mesh

Marco Tarini

I Modelli 3D più comuni:

Mesh poligonali

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à (a volte: “topologia”) 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 (Spazio Oggetto)

V2

V3

V5 V4

V1

Mesh: connettività

(o topologia)

Triangoli (o quads, o edges…)

che connettono fra loro i vertici

Come nodi connessi da archi, in un grafo

V2

V3

V5 V4

V1

T1

T2

T3

(4)

Mesh: attributi

Quantità che variano sulla superficie

Campionati per vertice, interpolati nei poly

V2

V3

V5 V4

V1

T1

T2

T3

RGB3 RGB2

RGB5 RGB4

RGB1

Mesh: attributi

Proprietà che variano sulla superficie 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

(5)

Meshes: complessità crescente

70.000 △

1994 1994 1994 1994

Meshes: complessità crescente

1.200.000 △

1997

1997

1997

1997

(6)

Meshes: complessità crescente

2.000.000.000 △

2002 2002 2002 2002

Low Poly Meshes

(7)

Come rappresento una mesh?

(quali strutture dati) Modo

indexed in C++ :

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’ */

};

Come rappresento una mesh?

(quali strutture dati) indexed mesh

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

vert X Y Z R G B

V1 x1 y1 z1 r1 g1 b1 V2 x2 y2 z2 r2 g2 b2 V3 x3 y3 z3 r3 g3 b3 V4 x4 y4 z4 r4 g4 b4 V5 x5 y5 z5 r5 g5 b5 GEOMETRIA + ATTRIBUTI

CONNETTIVITA’

(8)

Ma… in ambiente games

LOW POLY MODELLING!

Low-poly modelling

(9)

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 ...

(10)

Anche nei games

800 △ Unreal Torunement (1999)

Anche nei games

800 △ Unreal Torunement (1999)

Unreal Torunement 2K3 (2002)

3000 △

(11)

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)

(12)

Anche nei games

230 △ (1996)

300 △ (1998)

30.000 △ (2008)

48.000 △ (2012) 4.000 △

(2002)

Tasks of the Game Engine for Meshes

Import (from disk)

Simple Pre-processing

e.g.: Compute Normals (if needed, i.e. rarely) e.g.: Compute Tangent Dirs

e.g.: Bake Lighting (sometimes)

Render

GPU based (+ animate)

(13)

Rendering of a Mesh in a nutshell

Load…

store all data on GPU RAM Geometry + Attributes Connectivity

Textures Shaders

…and Fire!

send the command: do it !

THE MESH

THE MATERIAL

Simplified schema of: “PC + Video Card”

BUS

26

CPU

ALU

(main)

RAM

Disk Video Card

Internal bus Internal bus

(of video card)

RAM(GPU)

GPU

(14)

Mesh GPU Object

LOAD

Mesh in the Game Engine

DISK CENTRAL RAM GPU RAM

(PREPROCESS) Mesh Object

IMPORT

Mesh File

Mesh FileMesh

FileMesh FileMesh

FileMesh FileMesh

FileMesh File

Mesh GPU Object

Memory Management !

DISK CENTRAL RAM GPU RAM

Mesh Object Mesh

File

Mesh GPU Object Mesh

Object Mesh

File

Mesh GPU Object Mesh

Object Mesh

FileMesh FileMesh

FileMesh FileMesh

File Mesh

ObjectMesh ObjectMesh

ObjectMesh ObjectMesh

Object

(15)

Mesh File

A file of a given format sitting on the disk

Choices for the game engine:

which formats(s) to import?

proprietary, standard…

storing which attribute?

Issues:

storage cost loading time

Mesh Object

A (C++ / Javascript / etc) structure in main RAM

Choices for the game engine:

which attribute to store?

storage formats… (floats, bytes, double…) which preprocessing to offer

(typically at load time)

(16)

Mesh GPU Object

VBO / Vertex Arrays / etc Sitting in GPU RAM

The most precious one !!!!

Ready to render!

Choices for Game Engine:

which GPU mechanism storage formats

balance storage cost / precision / computatuion

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

(17)

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à: (a volte anche: “topologia”) Array di triangoli

Per ogni triangolo:

tripletta di indicia vertice

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

(18)

Come rappresento una mesh?

(quali strutture dati) Modo

indexed in C++ :

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’ */

};

Come rappresento una mesh?

(quali strutture dati) indexed mesh

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

vert X Y Z R G B

V1 x1 y1 z1 r1 g1 b1 V2 x2 y2 z2 r2 g2 b2 V3 x3 y3 z3 r3 g3 b3 V4 x4 y4 z4 r4 g4 b4 V5 x5 y5 z5 r5 g5 b5 GEOMETRIA + ATTRIBUTI

CONNETTIVITA’

(19)

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 --

CONNETTIVITA’

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

(20)

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.)

Mesh processing

aka Geometry Processing

Un buon manuale

x programmare

mesh processing:

(21)

Attributi comuni: normale

Vettore direzione unitario Orientamento della superficie Usato per il lighting

A volte, calcolate automaticamente dalla geometria

Ma l’artista decide quali edges sono

soft

e quali hard

(1)

v3 v1

v2

(2)

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

(22)

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

Coherently oriented faces:

can you check it?

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

vert X Y Z R G B

V1 x1 y1 z1 r1 g1 b1 V2 x2 y2 z2 r2 g2 b2 V3 x3 y3 z3 r3 g3 b3 V4 x4 y4 z4 r4 g4 b4 V5 x5 y5 z5 r5 g5 b5 GEOMETRIA + ATTRIBUTI

CONNETTIVITA’

(23)

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”)

(24)

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”

Vertex seams

Necessari per ogni discontinuità di attributo Replicazione dati… un male necessario)

Tri:

Wedge 1:

Wedge 2:

Wedge 3:

T1 V4 V1 V2

T2 V4 V2 V5

T3 V5 V2 V3

vert X Y Z R G B

V1 x1 y1 z1 r1 g1 b1 V2 x2 y2 z2 r2 g2 b2 V3 x3 y3 z3 r3 g3 b3 V4 x4 y4 z4 r4 g4 b4 V5 x5 y5 z5 r5 g5 b5

GEOMETRIA + ATTRIBUTI

CONNETTIVITA’

(25)

Attributi Comuni: colore

Utile per:

Differenziare modelli Baked global lighting

(per vertex ambient occlusion)

…e molto altro

Attributi Comuni:

texture coords

Legano la mesh ad un’immagine tessitura (vedremo presto)

Tipicamente,

necessitano Texture seams

(piu’ di ogni altro attributo)

(26)

Attributi Comuni: recap

Posizione

(“geometria” della mesh)

Normale Colore

Texture Coords

(“UV-mapping” della mesh)

Tangent Dirs

per tangent space narmal mapping (vedi texturing, dopo)

Attributi Comuni: recap

Posizione

(“geometria” della mesh)

Normale Colore

Texture Coords

(“UV-mapping” della mesh)

Tangent Dirs

Bone assignments

(“skinning” della mesh) vedremo nella lezione

sull animazione

(27)

Attributi Comuni: recap

Posizione Normale Colore

Texture Coords Tangent Dirs Bone assignments

Tri:

W1: W2: W3:

T1 T2 T3

vert X Y Z Nx Ny Nz R G B A U V Tx Ty Tz Bx By Bz

V1 V2 V3 V4 V5

GEOMETRIA + ATTRIBUTI

CONNETTIVITA’

Mesh GPU Object

LOAD

Life of a Mesh in a Game Engine

DISK CENTRAL RAM GPU RAM

(PREPROCESS) Mesh Object

IMPORT

Mesh File

(and, basically, any 3D assets)

(28)

Formati files per mesh …

(daxkcd.com)

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.

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

(29)

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

semplici complessi

p diffusimeno diffusi

Modelli 3D:

come ottenerli

Come tutti gli asset, possible aquistarli

(30)

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

(31)

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)

(32)

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”

(33)

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

(34)

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”)

(35)

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

(36)

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

recente aumento di popolarità (GPU friendliness)

(37)

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

(38)

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

(39)

Modelli 3D:

come ottenerli

Attraverso 3D scanning

Tecnologie per ottenere:

modelli digitali 3D a partire da:

oggetti reali

3D scanning (e.g. laser scanning)

Modelli 3D:

come ottenerli

Attraverso 3D scanning

Tecnologie per ottenere:

modelli digitali 3D a partire da:

oggetti reali

3D scanning (e.g. contact scanning)

(40)

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?)

Modelli 3D:

come ottenerli

Attraverso 3D scanning

Modello reale Scultore

(fisico)

Hi res model 3D scanning

(41)

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

Modelli 3D:

come ottenerli

Modellazione procedurale

Programma che genera la mesh

parametri

(42)

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, Acornsoft, 1984

Parentesi:

Left 4 dead, Valve, 2008

Rescue the beagles 16x16, 2008 Minecraft,

Mojang, 2009

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, 1984

Parentesi:

(43)

Semplificazione automatica di modelli 3D

automaticamente

mesh semplificata 2K triangles mesh originale

500K triangoli

parametri:

un errore massimo

o un numero di facceobiettivo

Semplificazione automatica di modelli 3D

p e r f o r m a n c e

q u a l i t y

(44)

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

LoD pyramid

Demo

(45)

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 ...

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

(46)

Una classe di tool utili:

attribute transfer

Attribute transfer

Da mesh A a mesh B Retargeting di:

Animazioni, UV-mapping, tessiture, …

Riferimenti

Documenti correlati

all’oggetto-tutto, allora siamo di fronte a una relazione compositiva (la cancellazione del rombo pieno che la rappresenta graficamente richiede la cancellazione del bordo

For dynamic graphics applications, two of the most important types of operations are implementing the visual appearance and dynamic behavior of the different graphical objects..

 una classe una classe senza metodi astratti è detta senza metodi astratti è detta concreta concreta..

questo è chiamato costruttore e è quello chiamato quando un oggetto di questa classe

• The member objects of your new class are typically private, making them inaccessible to the client programmers who are using the class. • This allows you to change those

Lipari (Scuola Superiore Sant’Anna) OOSD September 23, 2010 4 / 37G. Example

public void setSender(String sender) { /* set sender;*/ } public void setReceiver(String receiver) { /* set receiver;*/ } public void setContent(String content) { /* set content;*/

Lipari (Scuola Superiore Sant’Anna) OO Design Principles October 28, 2011 1 /