sujets spÉciaux - lacimblondin/files/inf5071/aut2015/... · ibn al-haytham au 10e sièce, ibn...

32
CHAPITRE 11 SUJETS SPÉCIAUX Alexandre Blondin Massé Département d'informatique Université du Québec à Montréal 25 novembre 2015 INF5071 - Infographie

Upload: others

Post on 24-Aug-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

CHAPITRE11SUJETSSPÉCIAUX

AlexandreBlondinMasséDépartementd'informatique

UniversitéduQuébecàMontréal25novembre2015INF5071-Infographie

Page 2: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

COURBESEN3D

Page 3: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

PARAMÉTRISATIONRappel

Courbe2D:

Surfacesparamétrées:

Onpeutfacilementgénéraliserauxcourbesen3D:

P(t) = (x(t), y(t)), t ∈ D.

P(u, v) = (x(u, v), y(u, v), z(u, v)), (u, v) ∈ D.

P(t) = (x(t), y(t), z(t)), t ∈ D.

Page 4: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

SEGMENTDEDROITE

Soit et deuxpointsdel'espace.

Alorsuneparamétrisationdusegmentdedroiteorienté est

Lavitesseestdonnéeendérivantchaquecomposante:

Onconstatequeladérivéeainsiquesanormesontconstantes.

Commentpeut-onreparamétrisercesegmentetobtenirunevitesseégaleàunnombrefixé ?

P0 P1

P0P1⎯ ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

P(t) = (1 − t) + t, t ∈ [0, 1].P0 P1

(t) = − + = , t ∈ [0, 1].P′ P0 P1 P0P1→

v0

Page 5: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

COURBESDEBÉZIER

Toutcommeen2D,lescourbesdeBézieren3Dontlaparamétrisationsuivante:

où , , et sontlespointsdecontrôle.

Ilspermettentdedécrirefacilementdestrajectoireslissesdansl'espace.

Attention:lavitessedeparcoursn'estpasconstante:

P(t) = (1 − t + 3(1 − t t + 3(1 − t) + , t ∈ [0, 1].)3P0 )2 P1 t2P2 t3P3

P0 P1 P2 P3

P(t) = 3 [(1 − t + 2t(1 − t) + ] , t ∈ [0, 1].)2P0P1→

P1P2→

t2P1P2→

Page 6: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

HÉLICEUnautreexemplecélèbreestceluidel'hélice.Uneparamétrisationest

P(t) = (cos t, sin t, t), t ∈ ℝ,

Page 7: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

VITESSED'UNEHÉLICEEndérivantlaparamétrisationprécédente,onobtient

Onconstatequeladérivéen'estpasconstante.Enrevanche,sanormel'est:

(t) = (− sin t, cos t, 1), t ∈ ℝ,P′

.∥ (t)∥P′ =

==

(− sin t + t + 1)2 cos2‾ ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√1 + 1‾ ‾‾‾‾√2‾√

Page 8: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

ACCÉLÉRATIONEndérivantunesecondefois,onobtientl'accélération!Parexemple,pourl'hélice,nousavions

et

Ladérivéesecondeest

Dansquelledirectionpointel'accélération?

P(t) = (cos t, sin t, t), t ∈ ℝ,

(t) = (− sin t, cos t, 1), t ∈ ℝ.P′

(t) = (− cos t, − sin t, 0), t ∈ ℝ.P′

Page 9: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

ANIMATIONSENBLENDEREnBlender,ilestégalementpossibledeconcevoirdesanimations.Cesanimationspeuventêtreexportées,parexemplesousformatJSON.Ellespeuventégalementêtreenregistréesdansdesvidéossouslesformatssuivants:AVI(avecousanscompression);MPEG,OGG,QuickTime,XVid,etc.

Ilestmêmepossibled'ajouterduson,maiscesujetneserapascouvertdanslecours.

Page 10: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

EXEMPLEYourbrowserdoesnotsupportthevideotag.

Page 11: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

SCÈNEToutd'abord,ilfautévidemmentconcevoirlesmodèles,ajouterlalumière,lestextures,etc.Danslevidéoprécédent,ilyaUnevoiture(corps+4roues);Unplanavecunetexturedepistedecourse;Unelampedetypesoleil.

Pourquelesobjetssedéplacentenmêmetemps,lecorpsdelavoitureestunparentdesroues.

Page 12: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

ANIMATIONLELONGD'UNCHEMIN

Ensuite,onajouteunecourbe(parexempledetypeNURBS)quipermetdedécrirelatrajectoiredelavoiture.

Page 13: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

CONTRAINTES

Pouranimerlavoiturelelongdelacourbe,ilsuffitd'insérerunecontrainte.

Page 14: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

TRAJECTOIREDELACAMÉRA

Pourlacaméra,ondéfinitégalementunetrajectoireàl'aided'unecourbe.Ensuite,pourquelacourbesuivel'objetprincipal,onfaitensortequelavoituresoitleparentdelacourbe.

Page 15: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

CONTRAINTESDELACAMÉRA

Onutiliseunepremièrecontraintequiforcelacaméraàsuivrelatrajectoiredécrite;Unedeuxièmecontrainteindiquequelacaméradoitregarderlavoitureentouttemps.

Page 16: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

RENDUVIDÉO

Page 18: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

BLENDERETTHREE.JSDeslogicielscommeBlenderpermettentdemodifierfacilementdesmaillagespourlesanimer.Cetteopérations'appellerigging.Plusprécisément,onajoutedesosànotremaillage,puisonétablitunlienentrecesosaveclessommetsdumaillage.Ilestmêmepossibled'exporterunmaillageavecsonarmaturepourl'utiliserdansthree.js.Remarque:lesanimationsdansthree.jsontsubidestransformationsimportantesàl'automne2015etcontinuentd'évoluer.

Page 19: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

LEMODÈLE{ "bones": [{ "rotq": [0.502887,0.497096,0.497096,0.502887], "parent": -1, "pos": [2,0,-0], "name": "Bone", "scl": [1,1,1] },{ "rotq": [-0.007989,0.007902,-0.710902,0.703201], "parent": 0, "pos": [0,0,-0.988617], "name": "Bone.001", "scl": [1,1,1] },{ "rotq": [0.005446,3e-05,0.005446,0.99997], "parent": 1, "pos": [-0,0,-1.99448], "name": "Bone.002", "scl": [1,1,1] },{ "rotq": [0.010202,-0.000104,0.010202,0.999896], "parent": 2, "pos": [0,-0,-2.01378], "name": "Bone.003", "scl": [1,1,1] }], "faces": [35,0,1,2,3,0,0,1,2,3,35,4,7,6,5,0,4,5,6,7,35,0,4,5,1,0,0,4,7,1,35,1,5,6,2,0,1,7,6,2,35,7,3,9,11, "uvs": [], "influencesPerVertex": 2, "materials": [{ "DbgName": "Material", "wireframe": false, "colorEmissive": [0,0,0], "visible": true,

Page 20: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

LECODESOURCE// Variables globalesvar scene;var camera;var mixer;var distance = 15;

// Initialisation de la scèneinitializeScene();

// Animation de la scèneanimateScene();

function initializeScene(){ // Initialisation du canvas renderer = new THREE.WebGLRenderer({antialias: true}); renderer.setClearColor(0x000000, 1); canvasWidth = 800; canvasHeight = 600; renderer.setSize(canvasWidth, canvasHeight); document.getElementById("canvas").appendChild(renderer.domElement);

// Initialisation de la scène et de la caméra scene = new THREE.Scene(); camera = new THREE.PerspectiveCamera(45, canvasWidth / canvasHeight, 1, 1000); camera.position.set(0, distance / 2, distance); camera.lookAt(scene.position); scene.add(camera);

// De la lumière var directionalLight = new THREE.DirectionalLight(0xffffff, 0.5); directionalLight.position.set(0, 100, 0); scene.add(directionalLight); var ambientLight = new THREE.AmbientLight(0xf0f0f0); scene.add(ambientLight);

Voirlerésultat

Page 21: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

LANCERSDERAYON

Page 22: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

IBNAL-HAYTHAM

Au10esièce,Ibnal-Haythamaobservéquedespetitesparticulessedéplaçaientdansl'espaceetétaientréfléchisversnosyeux.Lesobjetsnesontvisiblesqueparcequ'ilyadelalumière;Réciproquement,onnevoitlalumièrequeparcequ'ilyadesobjets.

Page 23: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

LUMIÈREVERSOEIL

Poursimuler,onpeutdoncémettreplusieursrayonsàpartirdelasourcelumineuse;Ensuite,selonqu'ilyadesobstacles,desmilieuxavecréfraction,desmiroirs,etc.,onidentifiequelssontlesrayonsquiatteignentlacible.Inconvénient:beaucoupdecalculsinutiles!

Page 24: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

OEILVERSLUMIÈRE

Eninfographie,onprocèdeàl'envers!Oncalcule,àpartirdel'oeil(ouplutôtl'écran)verslessourceslumineuses,defaçondirecteouindirecte.

Page 25: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

LUMIÈRE/OMBRE

Ondétecteleszonesombréess'ilyaintersectionavecunobstaclelorsdulancer;Selonlecas,lepixelestilluminéounon.

Page 26: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

PSEUDOCODE

Supposonsquelascènecontient objets,lahauteuretlalargeurdel'imagesoient et etquelecoûtmoyenpourdécidersiunrayonintersecteunobjetest .

Quelleestlacomplexitédecetalgorithme?

POUR CHAQUE pixel DANS image Soit R un rayon primaire Soit P le point d'intersection de distance minimale du rayon avec un objet ombre <- VRAI SI P existe ALORS Soit S un rayon émanant de P vers la source lumineuse ombre <- VRAI si et seulement si S intersecte un objet FIN SI SI ombre ALORS RETOURNER RGB(0,0,0) SINON RETOURNER pixel * lumière.intensité FIN SIFIN POUR

nh w

c

Page 27: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

RÉFLECTIONETRÉFRACTION

Bienqueleslancersderayonsoientcoûteux,ilspermettentdeprendreencomptedesphénomènescommelaréflectionetlaréfraction.L'équationdeFresneldécritl'interactionentrecesdeuxnotions.

Page 28: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

RÉSULTAT

Enplusdedevoireffectueruncalculpourchaquepixel,l'algorithmeestrécursif.Eneffet,lesrayonspeuventsubirdestransformationsenpercutantlesobjetsàl'infini.Enpratique,onfixeunseuilderécursionpourqueleprocessusarrête.

Page 29: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

CODEMINIMALCarted'affairede :AndrewKensler

#include <stdlib.h> // card > aek.ppm#include <stdio.h>#include <math.h>typedef int i;typedef float f;struct v{f x,y,z;v operator+(v r){returnv(x+r.x,y+r.y,z+r.z);}v operator*(f r){return v(x*r,y*r,z*r);}f operator%(vr){return x*r.x+y*r.y+z*r.z;}v(){}v operator^(v r){returnv(y*r.z-z*r.y,z*r.x-x*r.z,x*r.y-y*r.x);}v(f a,f b,f c){x=a;y=b;z=c;}voperator!(){return*this*(1/sqrt(*this%*this));}};iG[]={247570,280596,280600,249748,18578,18577,231184,16,16};fR(){return(f)rand()/RAND_MAX;}i T(v o,v d,f&t,v&n){t=1e9;i m=0;fp=-o.z/d.z;if(.01<p)t=p,n=v(0,0,1),m=1;for(i k=19;k--;)for(ij=9;j--;)if(G[j]&1<<k){v p=o+v(-k,0,-j-4);f b=p%d,c=p%p-1,q=b*b-c;if(q>0){fs=-b-sqrt(q);if(s<t&&s>.01)t=s,n=!(p+d*t),m=2;}}return m;}v S(v o,v d){f t;vn;i m=T(o,d,t,n);if(!m)return v(.7,.6,1)*pow(1-d.z,4);vh=o+d*t,l=!(v(9+R(),9+R(),16)+h*-1),r=d+n*(n%d*-2);fb=l%n;if(b<0||T(h,l,t,n))b=0;fp=pow(l%r*(b>0),99);if(m&1){h=h*.2;return((i)(ceil(h.x)+ceil(h.y))&1?v(3,1,1):v(3,3,3))*(b*.2+.1);}returnv(p,p,p)+S(h,r)*.5;}i main(){printf("P6 512 512 255 ");vg=!v(-6,-16,0),a=!(v(0,0,1)^g)*.002,b=!(g^a)*.002,c=(a+b)*-256+g;for(iy=512;y--;)for(i x=512;x--;){v p(13,13,13);for(i r=64;r--;){vt=a*(R()-.5)*99+b*(R()-.5)*99;p=S(v(17,16,8)+t,!(t*-1+(a*(R()+x)+b*(y+R())+c)*16))*3.5+p;}printf("%c%c%c",(i)p.x,(i)p.y,(i)p.z);}}

Page 30: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

RÉSULTAT

Page 31: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

EXEMPLEPLUSCOMPLEXE// [header]// A very basic raytracer example.// [/header]// [compile]// c++ -o raytracer -O3 -Wall raytracer.cpp// [/compile]// [ignore]// Copyright (C) 2012 www.scratchapixel.com//// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.// [/ignore]#include <cstdlib>#include <cstdio>#include <cmath>#include <fstream>#include <vector>#include <iostream>#include <cassert>

#if defined __linux__ || defined __APPLE__// "Compiled for Linux#else// Windows doesn't define these values by default, Linux does

Page 32: SUJETS SPÉCIAUX - LACIMblondin/files/inf5071/aut2015/... · IBN AL-HAYTHAM Au 10e sièce, Ibn al-Haytham a observé que des petites particules se déplaçaient dans l'espace et étaient

RÉSULTAT