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
Documenti analoghi
XVR: Primo Progetto Il wizard “Hello world” La camera La scena
Possibilità di incorporare vertex e pixel shaders