Computer Graphics

Transcript

Computer Graphics
Virtual Humans
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Virtual Humans
La simulazione virtuale di ambienti non può
prescindere dal rappresentare figure umane
Virtual humans come:
Attori virtuali per entertainment
Manichini per studi ergonomici
Manichini per industria della moda
Training per task fisici
Simulazione medica
Nuovi paradigmi per HCI
Avatar in ambienti condivisi
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Avatar
“Icona o rappresentazione interattiva di un
utente in un ambiente condiviso”
 La parola avatar viene dall’Hindu e descrive la manifestazione del
terrena dio Vishnu nel mondo
 Nel cyberspazio, un avatar è
un’”istanza” del corpo di un utente
nel mondo sintetico.
 Ad esempio nella text-based VR
(come i MUD) l’avatar di un utente
consiste in una breve descrizione
che è mostrata agli altri utenti
i cui avatar guardano l’utente stesso
 Nella VR grafica, un avatar è una
rappresentazione tridimensionale
che rappresenta l’essenza dell’utente
in relazione al resto del mondo virtuale
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Agenti
Un agente è un VH autonomo, le cui azioni
non sono guidate da un essere umano ma
direttamente dal computer
Le azioni di un VH possono:
essere guidate da un sistema “sensoriale”
autonomo
essere guidate da un vero e proprio
comportamento (behaviour)
essere guidate da semplici comandi predefiniti
(script)
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Virtual Humans: requisiti
Requisiti comunemente richiesti:
Simulazione grafica del corpo
Rigido
Deformazioni
Simulazione fisica del corpo
Modellazione basata sulla fisica
Cinematica inversa e diretta
Simulazione del comportamento
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Rappresentazione grafica dei VHs
 Modellazione stratificata di un personaggio
 Caso più semplice: gerarchia di corpi rigidi (no
deformazioni)
 Solitamente modellati da almeno due strati: scheletro
e pelle.
 Approccio basato sull’anatomia
• Animazione di VH
– Moto della struttura
gerarchica scheletrica (skeleton)
– Deformazione (blending) dello
strato della pelle (skinning)
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Rappresentazione grafica dei VHs
 Skeleton + skinning
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Skinning
 E’ un algoritmo di deformazione che permette ad una struttura
scheletro di muoverne una mesh associata (skin) in modo continuo
 Ogni vertice della skin è influenzato da uno o più segmenti (bones) dello
scheletro (skeleton) in base ad un sistema di pesi
 Per collegare la mesh alle bones (rigging) si usano involucri di
determinata forma e dimensione, con un limite interno e uno esterno
 Ai vertici situati entro il limite interno viene dato peso = 1
 Ai vertici al di fuori del limite esterno viene dato peso = 0
 A quelli tra i due limiti viene dato un
peso compreso tra 0 e 1
 Se più involucri contengono un vertice,
questo assumerà una posizione intermedia data dalla media pesata (fusione)
delle posizioni
vblend = v1w1 + … + vn-1 wn-1 + vn (1-Σiwi)
Formula di blending
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Rigid bodies vs. skinning
 Gerarchia di corpi rigidi:
 V: Semplice, poco onerosa
 S: Imprecisa: i vertici seguono rigidamente i movimenti dei corpi
rigidi a cui sono attaccati
Può essere considerato un caso limite di blending in cui ogni vertice è
collegato ad una sola bone, con peso 1
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Skinning – Bind Pose
 Quando la skin viene associata allo skeleton, si salva la
“Bind pose”, ovvero lo stato, in world-space, delle
matrici di trasformazioni delle bones e della skin.
Queste matrici verranno poi usate in fase di blending.
Ogni vertice della skin:
 Viene trasformato dallo skin
local-space in world-space
 Dal world-space viene trasformato
nel local-space di ogni bone a cui
è associato
 Subisce le animazioni di ognuna delle
bones associate, e per ognuna di esse
si calcola la nuova posizione.
 Tutte le “nuove posizioni” vengono
portate in world-space e pesate
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Skinning – Vertex shader
 L’operazione di blending, per skin complesse e
legate a molte bones, può essere onerosa per
la CPU
 Oggi la stessa operazione può essere affidata
alla GPU programmando un opportuno vertex
shader
 Importante: se si vuole un lighting corretto, è
necessario effettuare il blending anche delle
normali!
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Tecniche di animazione
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Tecniche di animazione dei VHs
•
•
•
•
•
•
Shape Interpolation
Keyframe Interpolation
Basata sulla fisica
Cinematica diretta
Cinematica inversa
Motion Capture
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Cinematica diretta
 Il corpo umano è schematizzabile come insieme connesso di:
 Segmenti o link (avambraccio, braccio, etc.)
 Giunti (connettono i segmenti: gomito, spalla,
polso etc.)
 Per animare un corpo umano è necessario
alterare i valori degli angoli sui giunti.
 Nel caso di rappresentazione a strati, ad es. bones
e skin, vengono animate solo le ossa, disposte frame
per frame in una determinata postura, corrispondente
ad una configurazione particolare del vettore degli
angoli ai giunti.
 La mesh collegata alle ossa viene deformata in base
alle informazioni di skinning e alla particolare
postura dello scheletro
 Info necessarie:
 Limiti sui giunti
 Masse dei link (solo per PBM)
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Motion Capture




Gli angoli ai giunti possono essere passati mediante la FK
(Forward Kinematics) esplicitamente specificati in un vettore
Tale vettore può essere il risultato di calcoli (Motion Synthesis),
o provenire da un sistema di sensori applicato ad un essere
umano (Motion Capture)
I benefici del motion capture sono:
 Animazioni realistiche
 Poco lavoro per i modellatori
(rifinitura e collegamento)
 Può catturare dettagli di
animazione indistinguibili a
occhio o difficili da
sintetizzare (es. movimenti
a catena su più segmenti)
Svantaggi
 Meccanismi abbastanza costosi
 I dati sono campioni, dunque
difficili da trattare e manipolare.
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Cinematica Inversa
 La cinematica di una struttura connessa è il processo di calcolo della
posizione nello spazio del punto terminale (end-effector) di tale
struttura, dati gli angoli ai giunti.
 La cinematica inversa (IK) è esattamente il processo
opposto: data la posizione (goal o target) dell’
end-effector, si ricava la configurazione degli angoli
ai giunti. E’ un processo molto usato in robotica.
 Vantaggi:
 È possibile ricavare gli angoli a partire solo da alcune
posizioni di interesse (tipicamente: mani, piedi, bacino), specificate direttamente o da un parziale motion
capture
 Svantaggi:
 Esistono punti di “singolarità”, in cui sono possibili più
soluzioni. Non sempre è possibile trovare quella giusta
(i limiti della fisiologia umana possono aiutare a
scegliere)
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Shape Interpolation
 Viene effettuato il morphing tra due o più mesh 3D di
riferimento che rappresentano il corpo in varie posture
 I passi da effettuare, in generale, sono:
 1 - Morphing dello scheletro e della pelle (skin)
 2 - Morphing delle texture coordinates
 3 - Morphing delle texture maps
 Se le mesh sono relative alla stessa figura, i passi 1 e 2 sono
semplici interpolazioni lineari. Il
passo 3 è inutile, se non per
particolari effetti visuali
 Se non ci sono tecniche di gestione
addizionale, può bastare il morphing
dei vertici dell’involucro (skin), ma i
risultati possono essere scarsamente
appaganti se non si hanno numerose
mesh di riferimento
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Keyframe Interpolation
 A volte in letteratura è sinonimo di Shape Interpolation
 La nostra definizione è riferita alla Skeletal Animation
 I valori di riferimento non sono mesh, ma posture dello
scheletro, intese come configurazioni di angoli ai giunti,
relative ad alcuni fotogrammi chiave (keyframes)
 L’interpolazione avviene tra tali valori, determinando nuove
posture dello scheletro
 La mesh poligonale associata allo scheletro viene generata di
volta in volta con gli algoritmi di skinning, in base alle nuove
posture dello scheletro calcolate con l’interpolazione
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Modellazione basata sulla fisica
 Le animazioni basate sulla cinematica non tengono in
considerazione effetti fisici fondamentali, come la
gravità o l’inerzia
 Possiamo impostare un problema di dinamica,
tenendo in considerazione le masse e l’azione di forze
 E’ possibile anche un problema di dinamica inversa,
ovvero: trovare per ogni giunto le forze e le coppie
che generano un movimento desiderato
 La modellazione dinamica è necessaria per la corretta
interazione tra il VH e l’ambiente virtuale (es.
rilevamento di collisioni, gestione della collisione,
urti, etc.)
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Modellazione del comportamento
 Un VH, in particolare un agente, deve avere la
possibilità di agire nell’ambiente virtuale, non solo
reagendo agli stimoli ma anche entrando nel flusso di
informazioni che vanno e provengono da esso.
 Ad esempio un VH deve poter conoscere la posizione
degli oggetti nel VE. Questo può avvenire:
 Direttamente (funziona solo per piccoli mondi e
non è realistico)
 Mediante sensori virtuali: si dà la possibilità ad un
VH di percepire gli oggetti e gli altri attori del VE
mediante canali (virtuali) ottici, auditivi ed
eventualmente aptici
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Modellazione del comportamento - II
 Le informazioni che il VH riceve influenzeranno le
sue azioni (behavioural modeling)
locomozione guidata dalla vista
manipolazione di oggetti
risposta a stimoli sonori etc.
 E’ possibile codificare alcuni comportamenti in
maniera predefinita (script) o fornire un insieme
di procedure che, a partire da alcuni parametri,
generino le azioni corrispondenti
 Altri problemi relativi al comportamento:
Interazione tra VH
Interazione tra VH e uomini reali
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Modellazione del comportamento - III
 Proprietà desiderabili in un VH (agente):
 Intelligenza: capacità di imparare da
situazioni nuove
 Percezione: consapevolezza dell’ambiente
esterno
 di oggetti
 di azioni
 di eventi
 Memoria: capacità di riprodurre o
richiamare ciò che è stato acquisito
 Autonomia: possibilità di autogoverno
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Standard ed esempi notevoli
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
H-Anim
 Humanoid Animation:
 Specifica di uno standard per la rappresentazione di
esseri umani in ambienti virtuali online
 Creazione di una libreria di umanoidi intercambiabili e di
tool di authoring per la creazione di nuovi umanoidi e di
nuove animazioni
 Animazione con keyframe, IK, FK etc.
 http://www.h-anim.org/Specifications/H-Anim1.1/
 Scopi:
 Compatibilità con VRML 97
 Flessibilità, nessun’assunzione sul tipo di applicazione
 Semplicità delle specifiche (solo umanoidi e non qualsiasi
figura articolata)
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
H-Anim – File format
 Un file H-Anim è composto da una gerarchia di nodi
Joint
 Ogni nodo Joint può contenere altri nodi Joint o un
nodo Segment, che descrive la parte del corpo
associata al giunto
 Ogni segmento può contenere più nodi Sites, che
definiscono locazioni relative a segmenti (utile per
vestiti, oggetti, ma anche per definire gli endeffector della IK)
 Ogni segmento può contenere più nodi Displacer,
che specificano la geometria collegata al segmento
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
H-Anim – File format esempio
...
DEF hanim_l_shoulder Joint { name "l_shoulder"
center 0.167 1.36 -0.0518
children [
DEF hanim_l_elbow Joint { name "l_elbow"
center 0.196 1.07 -0.0518
children
[
DEF hanim_l_wrist Joint { name "l_wrist"
center 0.213 0.811 -0.0338
children [
DEF hanim_l_hand Segment { name "l_hand“
...
}
]
}
.
..
DEF hanim_l_forearm Segment { name l_forearm"
...
}
] }
DEF hanim_l_upperarm Segment { name "l_upperarm"
} ] } ...
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
H-Anim - Gerarchia
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
MPEG-4
 Standard per la codifica efficiente di scene
multimediali
 Gestione di oggetti:
Video (dotati di forma)
Faccia (per teleconferenze)
Mesh (poligonali)
Texture
Corpo
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
MPEG-4 e VRML
 La gestione degli oggetti 3D in Mpeg-4 è molto
simile al VRML, con alcune differenze:
Supporto (Mpeg-4 ha più profili, VRML deve
funzionare su ogni piattaforma)
Presenza di alcuni nodi:
VRML: anchor, fog, background
MPEG-4: timing, audio3d, facial animation
Requisiti di performance (assenti in VRML)
Altre differenze:
http://www.web3d.org/WorkingGroups/vrmlmpeg4/differences.html
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
MPEG-4: body animation
 Animazione corporale (FBA: Facial Body Animation) in Mpeg-4
 Un corpo Mpeg-4 è una collezione di nodi
 La root, BodyNode, contiene 3 nodi:
- BAP (Body Animation Parameter): 296 parametri che descrivono la topologia dello
scheletro e la sua postura
- Rendered Body: contiene lo scene-subgraph contenente i dati geometrico descrittivi di DEFAULT del corpo da visualizzare
- Se si vuole renderizzare un
corpo specifico, si aggiunge il
BDP (Body Definition Parameters),
che rimpiazza il modello di default
del Rendered Body. Si possono
specificare anche tabelle di
deformazione per visualizzare
correttamente le intersezioni
 Il gruppo H-Anim, formato all’interno del
consorzio VRML, coordinato con il gruppo
FBA di Mpeg-4 ha standardizzato le
specifiche dei VH per produrre risultati
consistenti in entrambi gli ambienti
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
BVH
 File format ASCII sviluppato da Biovision (BVH:
BioVision Hierarchy), per distribuire dati di
motion capture
 Fornisce informazioni sulla struttura della
gerarchia (skeleton) e sui motion data
 Largamente usato come formato di interscambio
per dati di motion capture da molti SW di
modellazione e di rendering real-time
 Svantaggi: non c’è una chiara definizione della
posa base
 sampleBVH.txt
 Viewer
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
FBX
 Nato come file format per Kaydara Filmbox, un
SW dedicato all’animazione real-time 3D, con
supporto di numerosi device di motion-capture
 Dopo l’acquisizione di Autodesk, è diventato il
formato di interscambio dei prodotti Autodesk e
ottimo candidato a diventare standard de-facto
 Disponibile come binario
Disponibile documentazione e SDK su:
http://www.autodesk.com/fbx
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
BIPED
 E’ un plugin di 3dStudio MAX, fornisce una
struttura per la creazione e la messa in
posa di un VH
 Il Biped è una sorta di scheletro, anch’esso
fornito di giunti e segmenti, e dotato di
default di un algoritmo di IK
 L’orientazione e la posizione del Biped sono
stabilite dai rispettivi valori del centro di
massa, situato nell’area del bacino
 Esiste un meccanismo di calcolo
degli effetti fisici:
 Gravità (stacco e atterraggio sul suolo)
 Equilibrio (in determinate posizioni, lo
spostamento di una parte del corpo è seguito da
una catena di spostamenti per mantenere
l’equilibrio)
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Biped + Phisique (Skinning)
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
POSER
 Software di Smith Micrographics specializzato per
la modellazione e il rendering di figure umane e in
generale animate
 Vastissima libreria
di personaggi, pose,
espressioni,
accessori etc.
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Virtual Humans e XVR
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
XVR Scene Graph: Mesh
Scene
CVmMesh/NewMesh
 Polygonal meshes loaded
from VRML/AAM files.
 Bounding box
 Material list
 Subset list
 Vertex animation
Obj
Mesh
Subset
Material
Subset
Material
Subset
Material
Shader
Texture
Texture
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Exporting animated meshes
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Sample code
Drawing Multiframe Meshes
function OnInit()
{
my_mesh = CVmNewMesh(“animmesh.aam");
n_frames =
my_mesh.GetFrames();
current_frame = 0;
my_obj = CVmObj(my_mesh);
…
}
function OnFrame()
{
SceneBegin();
my_obj.Draw (VR_ANIMATION_FRAME,current_frame);
current_frame = (current_frame+1)%n_frames;
SceneEnd();
}
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
XVR Scene Graph: Character
Scene
Obj
Character
Obj
Obj
CVmCharacter
(Compound object)
 Complessa gerarchia di oggetti (Rootcomponents)
 Geometria caricata da VRML/AAM
 Skeletal animation (keyframes/full
frames)
 Metodi anche per singoli components
Mesh
Material
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Exporting animated characters
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Sample code
Drawing animated characters
function OnInit()
{
my_char = CVmCharacter(“charfile.aam”);
nframes = my_char.GetFrames();
…
}
function OnFrame()
{
static var frame_number = 0;
SceneBegin();
my_char.DrawAbs(frame_number);
SceneEnd();
frame_number = (frame_number + 1) % nframes;
}
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
XVR Scene Graph: Avatar
CVmAvatar (beta)
Scene
Character
Avatar
Support to IK, FK
Skeletal animation
Skinning deformation
 Personaggi animati, di solito umani
(avatar/agenti)
 Formati da uno skeleton di bones unite
da joints e da una mesh (skin) collegata
allo skeleton.
 RT deformation weight-based
 Skeletal animation
 Supporto alla IK
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Exporting avatars
Al momento (in futuro ci sarà un’opzione esplicita) se ci sono
informazioni di skinning, esportando come character il file è
caricabile anche dalla classe CVmAvatar
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Sample code
Avatar joint manipulation
function OnInit()
{
my_avatar = CVmAvatar("avatar.aam");
my_avatar.SetScale (0.016);
my_avatar.SetPosition (0, -15, 5);
…
}
function OnFrame()
{
my_avatar.JointRotate (palm_joint_id,
-1, 1, 0, 0);
my_avatar.JointRotate (fingers_joint_id, -1, 1, 0, 0);
SceneBegin();
my_avatar.Draw (0, VR_NO_DISPLAYLISTS);
SceneEnd();
}
NOTE:
Non necessario con XVR Engine # 0005
NOTE:
<n_anim_frame, flag>
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Sample code
Avatar joint manipulation
function OnInit()
{
my_avatar = CVmAvatar("avatar.aam");
my_avatar.SetScale (0.016);
my_avatar.SetPosition (0, -15, 5);
…
}
function OnFrame()
{
my_avatar.JointRotate (palm_joint_id,
-1, 1, 0, 0);
my_avatar.JointRotate (fingers_joint_id, -1, 1, 0, 0);
SceneBegin();
my_avatar.Draw (0, VR_NO_DISPLAYLISTS);
SceneEnd();
}
NOTE:
Non necessario con XVR Engine # 0005
NOTE:
<n_anim_frame, flag>
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
HALCA Avatars
 Developed at EVENT Lab, Barcelona
 Available XVR Wrapper DLL
 Interface to Cal3D, extended with:




GLSL shaders
HW accelerated skinning
Morph animation
HW accelerated morph targets
Exporters for 3DSMax
6/19/2012
http://www.lsi.upc.edu/~bspanlang/animation/avatarslib/doc/
47
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Virtual Crowds
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Virtual Crowds
 I VH servono per popolare ambienti virtuali
 Alcuni ambienti (città etc.) necessitano di un elevato
numero di VH per una rappresentazione realistica
 La simulazione di folle (crowds) per la sua complessità
non può essere trattata semplicemente come gestione
della somma di VH
 Applicazioni: intrattenimento, studio di situazioni di
panico, dislocazione di uscite di emergenza, studio dei
flussi etc.
 Come per i singoli VH i requisiti sono:
Modellazione grafica e fisica dei VH
Modellazione del comportamento della folla
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Virtual Crowds
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Virtual Crowds – 3dsMax
 Aggiunge comportamenti a gruppi di entità Max (bipedi, o
altro)
 Strumenti forniti:
 Dispersione (clonazione + posizionamento
pseudorandom)
 Collision avoidance
 Path following
 Locazione
respingente/attrattiva
 Comportamento user defined
 Ricerca locazione
 Variazione di velocità
per miglior realismo
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Virtual Crowds – UCL/Percro
 Orientato al real-time
 Possibile visualizzare centinaia
di migliaia di entità differenti in tempo reale
 VH visualizzati come
impostori precalcolati
 Più tipi di VH, modulabili
nel colore e texture
 Shading in tempo reale con
uso di shadow maps
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans
Virtual Crowds – UCL/Percro
 Algoritmi di comportamento:
 Collision avoidance
 Height check (riconoscimento di gradini etc.)
 Interest attractor
 Panico, ricerca delle uscite, visibilità, inerzia etc.
Crowd Simulation
Realtà Virtuale: il presente, il passato,
futuro
VirtualilHumans