Plakátok, részecskerendszerek. Szécsi László



Hasonló dokumentumok
Transzformációk. Grafikus játékok fejlesztése Szécsi László t05-transform

Transzformációk. Szécsi László

Direct3D pipeline. Grafikus játékok fejlesztése Szécsi László t03-pipeline

HLSL programozás. Grafikus játékok fejlesztése Szécsi László t06-hlsl

Textúrák. Szécsi László

HLSL programozás. Szécsi László

1. Bevezetés 1. Köszönetnyilvánítás A számítógépes játékfejlesztésről 3

2D képszintézis. Szirmay-Kalos László

D3D, DXUT primer. Grafikus játékok fejlesztése Szécsi László t01-system

Merev testek mechanikája. Szécsi László

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Geometriai modellezés. Szécsi László

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

SZE, Doktori Iskola. Számítógépes grafikai algoritmusok. Összeállította: Dr. Gáspár Csaba. Felületmegjelenítés

Számítógépes grafika

Mesh from file, OrthoCamera, PerspectiveCamera. Szécsi László 3D Grafikus Rendszerek 3. labor

Játékfejlesztés. Szirmay-Kalos László

3D koordináta-rendszerek

Bevezetés a CGI-be. 1. Történelem

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.

Technikai áttekintés SimDay H. Tóth Zsolt FEA üzletág igazgató

Grafikus csővezeték és az OpenGL függvénykönyvtár

Ütközések. Szécsi László

Robotika. Kinematika. Magyar Attila

2. Generáció ( ) 3. Generáció (2001) NVIDIA TNT2, ATI Rage, 3dfx Voodoo3. Klár Gergely

x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs mátrixa 3D-ben?

Tartalomjegyzék. Köszönetnyilvánítás... xv. Előszó... xvii. 1. Bevezető D-történelem Matematikai alapok... 7

Direct3D interface. Grafikus játékok fejlesztése Szécsi László t04-pipecontrol

Tárgy. Forgóasztal. Lézer. Kamera 3D REKONSTRUKCIÓ LÉZERES LETAPOGATÁSSAL

Mesh generálás. IványiPéter

Termék modell. Definíció:

Klár Gergely 2010/2011. tavaszi félév

KOORDINÁTA-GEOMETRIA

Számítógépes Graka - 4. Gyak

Mechatronika segédlet 3. gyakorlat

A játékfejlesztés több területből áll. A kódolás csupán egy része a munkáknak.

1. A komplex számok ábrázolása

2014/2015. tavaszi félév

OpenGL és a mátrixok

Programozási nyelvek 1. előadás

Klár Gergely 2010/2011. tavaszi félév

Farkas Gyula Szakkollégium Bit- és számtologatók. DirectX9 1. Szín, fény, textúra 2. Stencil buffer használata (tükörkép, hamis árnyék)

Párhuzamos és Grid rendszerek

Eredmények, objektumok grafikus megjelenítése 3D felületek rajzoló függvényei


Grafikus csővezeték 1 / 44

GPGPU alapok. GPGPU alapok Grafikus kártyák evolúciója GPU programozás sajátosságai

Máté: Számítógépes grafika alapjai

Néhány fontosabb folytonosidejű jel

A 3D megjelenítés elmélete

Árnyalás, env mapping. Szécsi László 3D Grafikus Rendszerek 3. labor

A Hamilton-Jacobi-egyenlet

BME MOGI Gépészeti informatika 15.

Geometria brute force tárolása

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./0. 3D grafika programozása OpenGL támogatással Transzformációk

Négycsuklós mechanizmus modelljének. Adams. elkészítése, kinematikai vizsgálata,

ARM Cortex magú mikrovezérlők

Fraktálok és káosz. Szirmay-Kalos László

Kvantumszimulátorok. Szirmai Gergely MTA SZFKI. Graphics: Harald Ritsch / Rainer Blatt, IQOQI

Számítógépes grafika

Virtuális Valóság. Működése és használata

Differenciálegyenletek numerikus integrálása április 9.

Revit alapozó tanfolyam

Véletlen szám generálás Labirintus felépítése 1x1-es felbontástól a teljes méretig

Láthatósági kérdések

Revit alaptanfolyam szerkezettervezőknek

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Képernyő. monitor

Forgattyús mechanizmus modelljének. Adams. elkészítése, kinematikai vizsgálata,

Számítógépes Grafika mintafeladatok

Lin.Alg.Zh.1 feladatok

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

Matematika 11 Koordináta geometria. matematika és fizika szakos középiskolai tanár. > o < szeptember 27.

Tartalom. Hajder Levente 2016/2017. I. félév

Eredmények, objektumok grafikus megjelenítése 3D felületek rajzoló függvényei.. Beépített 3D felületek rajzoló függvényei

A PowerMill egy hatékony alámarásmentes CAM rendszer, amellyel 3D-s szerszámpályákat tudunk generálni, importált CAD modellek alapján.

Farkas Gyula Szakkollégium Bit- és számtologatók. DirectX9 felhasználása számítógépes grafikában (bevezető egy primitív keretrendszer)

Számítógépes grafika

Hajder Levente 2016/2017.

MATEMATIKA HETI 5 ÓRA. IDŐPONT: Június 4.

10. Koordinátageometria

Egyenes mert nincs se kezdő se végpontja

Számítási feladatok a Számítógépi geometria órához

Pontfelhő létrehozás és használat Regard3D és CloudCompare nyílt forráskódú szoftverekkel. dr. Siki Zoltán

SZIMULÁCIÓ ÉS MODELLEZÉS AZ ANSYS ALKALMAZÁSÁVAL

PTE PMMIK Infrastruktúra és Mérnöki Geoinformatika Tanszék

A számítógépes grafika inkrementális képszintézis algoritmusának hardver realizációja Teljesítménykövetelmények:

T201W/T201WA 20 -os szélesvásznú LCD monitor Felhasználói kézikönyv

100% BIO Natur/Bio kozmetikumok és testápolás

Lényege: valamilyen szempont szerint homogén csoportok képzése a pixelekből. Amit már ismerünk:

Párhuzamos programozási feladatok

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

Lin.Alg.Zh.1 feladatok

GPU Lab. 14. fejezet. OpenCL textúra használat. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

T52WA 15 -os szélesvásznú LCD monitor Felhasználói kézikönyv

GRAFIKA PROGRAMOZÁSA OPTIMALIZÁLT MEGJELENÍTÉS ALAPJAI GYAKORLATI 2D GRAFIKA II. RÉSZ. Dr. Mileff Péter

TARTALOM: TEMPLOM, KÉPEK, GÖRÖGTEMPLOM T E M P L O M

Programozási nyelvek 2. előadás

Számítógépes látás alapjai

1. Szimmetriák. Háromszög-szimmetria. Rubin Zafir Kalcit aluminium-oxid: Al 2 O 3 kalcium-karbonát: CaCO 3

Átírás:

Plakátok, részecskerendszerek Szécsi László

Képalapú festés Montázs: képet képekből 2D grafika jellemző eszköze modell: kép [sprite] 3D 2D képével helyettesítsük a komplex geometriát Image-based rendering

A sprite evolúciója C64 2D grafika hardver támogatás: 8db 24x21-es bitmap kirakása adott pixelkoordinátákra nincs elforgatás, skálázás blitter: bit block transfer sprite mem frame buffer

A sprite evolúciója modern grafikus pipelineban pont primitívek rajzolása [point sprite] pont mérete [p p pixeles négyzet]: D3DRS_POINTSIZE pixel shaderben olvasható a kép mint textúra Shader Model 4.0 point sprite már nincs, mivel háromszögekkel is megoldható (minek foglalja a tranzisztorokat)

A sprite evolúciója 3D grafikában a 2D sprite 3D geometriát helyettesít [impostor] képernyőtérbeli quad, de skálázható, mérete a távolság függvényében változhat rendelhető hozzá mélység, z-teszt használható rá világkoordinátákban adott pozíció, méret, de mindig a kamera felé fordul

Sprite rajzolása klasszikus trafókkal a sprite modellje egy z irányba néző quad a világban úgy forgatjuk a quadot, hogy a kamera fele nézzen a kamera trafó forgatás részét ki kell iktatni kamera trafó inverz transzponáltjával kell a quad vertexeit transzformálni utána jöhet a kamera trafó és projekció csak akkor van értelme ha a kamera trafó végrehajtásába nem tudunk belenyúlni

Sprite rajzolása klasszikus trafókkal modell trafóban nincs elforgatás mert a spritenak nincs orientációja view elforgatás kiiktatása ez változatlan maradhat sprite model trafó model eltolás inverz tr. view trafó view trafó proj trafó modellezési koordináták model space temp. világkoordináták world space világkoordináták world space kamera koordináták camera space norm. képernyő koordináták clip space norm. device space z irányba néző quad z irányba néző quad kamera felé néző quad z irányba néző quad 2D quad

Sprite rajzolása saját trafóval a modellezési origót [sprite középpontjának a pozícióját] transzformáljuk a kamera koodinátarendszerbe kamera koordinátákban adjuk hozzá a csúcsok (spriteon belüli) pozícióit utána jöhet a proj trafó

Sprite rajzolása saját trafóval kamera koordináták camera space vertex shaderben a view trafó után adjuk hozzá a quad vertex pozíciókat z irányba néző quad model trafó view trafó proj trafó Σ modellezési koordináták model space világkoordináták world space kamera koordináták camera space norm. képernyő koordináták clip space norm. device space 0,0,0 sprite pozíció sprite pozíció 2D quad

Vertex shader sprite rajzolásra struct vsspriteinput { float4 quadvertexpos: TEXCOORD0; float2 tex : TEXCOORD1; float3 spritepos : POSITION; float age : TEXCOORD2 }; struct vsspriteoutput { float4 pos float2 tex float age } : POSITION; : TEXCOORD0; : TEXCOORD1;

Vertex shader sprite rajzolásra vsspriteoutput vssprite(vsspriteinput input) { float3 cameraspritepos = mul(input.spritepos, viewmatrix); float3 cameravertexpos = cameraspritepos + input.quadvertexpos; output.pos = mul( float4(cameravertexpos, 1), projmatrix); output.tex = input.tex; output.age = input.age; }

Plakát [billboard] sprite mindig teljesen a kamera fele néz a plakát is egy textúrázott quad lehet statikus foroghat 1 tengely körül illeszkedhet felületre stb. billboard általánosabb, mint a sprite

Statikus plakát 3D objektumok megjelenítésére önmagában gyenge, ha rossz irányból nézünk rá sok felületből már meggyőző modell lehet plakátfelhő [billboard cloud]

Tengely körül forgó plakát tipikus alkalmazás: fák

Részecske-rendszer térfogati jelenségek pl. tűz, füst, köd, por, sugárhajtómű bonyolult fizika, áramlás-szimuláció, Navier- Stokes difegyenlet helyett szimuláljuk néhány részecske útját az áramlásban egyszerű szabályok alapján jelenítsük meg őket mint felhőcskéket áttetsző, textúrázott plakátokkal billboard + blending + instancing [sok ugyanolyan geometria]

Részecskék életciklusa születés emitter: pontszerű, vonalas, sík, térfogat jellemzők pozíció, sebesség, életkor, méret, szín, átlátszóság hatások effector: szél, felhajtóerő, turbulencia, gravitáció halál

Bufferek LPDIRECT3DINDEXBUFFER9 billboardindexbuffer; LPDIRECT3DVERTEXBUFFER9 billboardvertexbuffer; alap geometria LPDIRECT3DVERTEXBUFFER9 particleinstancebuffer; példány adatok LPDIRECT3DVERTEXDECLARATION9 particlesystemvertexdecl; vertex layout

Részecske osztály class Particle { D3DXVECTOR3 pos; D3DXVECTOR3 velocity; float age; }; void move(double dt);...

Vertex layout D3DVERTEXELEMENT9 particlesystemvertexelements[] = { {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 3}, {0, 12, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 4}, {1, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0}, {1, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1}, {1, 24, D3DDECLTYPE_FLOAT, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 2}, D3DDECL_END() }; quad particle device->createvertexdeclaration( particlesystemvertexelements, &particlesystemvertexdecl);

Quad összerakása vertex buffer, index buffer létrehozása lock feltöltés unlock

Instance buffer device->createvertexbuffer( sizeof(particle) * nmaxparticles, D3DUSAGE_WRITEONLY, 0, D3DPOOL_DEFAULT, &particleinstancebuffer, NULL);

Rajzolás instancinggel device->setstreamsourcefreq( 0, D3DSTREAMSOURCE_INDEXEDDATA nparticles); device->setstreamsource(0, billboardvertexbuffer, 0, sizeof(float) * 5); device->setindices(billboardindexbuffer); ennyi példány ebből device->setstreamsourcefreq( 1, (unsigned)(d3dstreamsource_instancedata 1)); device->setstreamsource(1, particleinstancebuffer, 0, sizeof(particle)); device->setvertexdeclaration(particlesystemvertexdecl); példányonkénti adatok device->drawindexedprimitive(d3dpt_trianglelist, 0, 0, 4, 0, 2); device->setstreamsourcefreq(0, 1); device->setstreamsource(1, NULL, 0, 0); vertex shaderbe melyik bufferből honnan jön a paraméter