Počítačové hry a animace Cvičení 7. Notová osnova Shadery – –Phong – –Toon – –Edge detection Hierarchie – –Kostra Animace – –Rigid – –Skinning – –Blending.

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

Stručný přehled OpenGL Jiří Danihelka. Co je OpenGL?  Open Graphics Library  Knihovna pro počítačovou grafiku  Zhruba 120 funkcí  Představuje standard.
Počítačové hry a animace Cvičení 2. (2) Osnova Vstup od uživatele – –Myš – –Klávesnice – –Joystick Content pipeline – –Assety – –Content processory 3D.
Efekty - 2 kontura, čočka, oříznutí, deformace, stín, rastry
Davy v počítačové grafice
Analytické nástroje GIS
Vzhled prezentace - šablony
Michal Neuwirth Partner Technical Readiness Microsoft s.r.o.
RASTROVÁ A VEKTOROVÁ GRAFIKA
Grafický editor GIMP (11) Ještě jednou si pohrajeme s filtrem mapování na objekt. Dostupné z Metodického portálu ISSN: , financovaného.
MS Office PowerPoint 2007 Ing. Jaroslav Parma.
Základy teorie řízení Frekvenční charakteristika
Modelování v prostoru.
Sémantická analýza Jakub Yaghob
SIPVZ – úvodní modul P Počítačová grafika a prezentace metodické poznámky (4 h)
Gymnázium Dr. Emila Holuba, Holice.  Paměti RAM  Grafické karty  Zvukové karty.
MS ACCESS parametrický dotaz
Neuronové sítě na grafických akcelerátorech Ondřej Zicha, Jiří Formánek.
3D modelář – povrchy VY_32_INOVACE_Design1r0116Mgr. Jiří Mlnařík.
Windows Presentation Foundation 2D grafika. 2D tvary Elementy UI stromu Stejné jako jiné ovládací prvky a elementy Mohou mít k sobě připojeny události,
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01C19 Autor Ing. Jiří Kalousek Období vytvoření březen.
C# - Testování a ladění aplikací Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
3D CG. Základy geometrie Vertex A (x,z,y,(w)) Faceta(triangle) F(A,B,C) (polygon) F(A,B,C,D), konvexní, nekonvexní Objekt Většinou (0,1) rozměr.
Gymnázium, Broumov, Hradební 218 Tematická oblast: Informační a komunikační technologie Číslo materiálu: E Název: Počítačová grafika - teorie Autor:
Úvod do 3D geometrie První přednáška mi vyšla na 90 minut po slajd 31 (3D representace modelů). Ten zbytek jsem pak prolítnul tak za pět minut, ale myslím.
Práce se šablonami v MS Word 2007
Vektorová grafika Výpočetní technika. jméno autoraMgr. Petr Jonáš název projektu Modernizace výuky na ZŠ Česká Lípa, Pátova ulice číslo projektuCZ.1.07/1.4.00/
OBRÁZKY Popis karty Grafická karta se stará o grafický výstup na monitor, TV obrazovku či jinou zobrazovací jednotku. V případě, že grafická karta obsahuje.
Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Dagmar Vítková. Obchodní akademie a Střední odborná škola logistická, Opava, příspěvková.
Počítačová grafika Výpočetní technika.
OSNOVA: a)Funkce – úvod b) Hlavičky funkcí c) Rekurze funkcí d)Knihovny funkcí e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
POWER POINT 1 Základní pojmy Power Point - základní pojmy.
Interactive Relighting of Dynamic Refractive Objects Tomáš Šváb & Adam Dominec.
Klikací mapy v GIMPu Tvorba tzv. klikacích (obrázkových) map s pomocí grafického editoru GIMP Dostupné z Metodického portálu ISSN: ,
MS Excel 2 Martin Kotlík Brno, 20. ledna 2015 Obsah předchozího semináře 1 1.Popis programu Excel 2.Základní dovednosti 3.Typy vkládaných dat 4.Formát.
Disk Google. Google disk umožní uložení až 15 GB souborů zdarma, přístup k nim odkudkoliv, a spolupracovat s ostatními soubory můžeme na disk nahrát 0tevře.
Adobe Flash CS5.5 – seznámení s programem Název školyGymnázium Zlín - Lesní čtvrť Číslo projektuCZ.1.07/1.5.00/ Název projektuRozvoj.
Moderní Grafické karty.
Příklad 3 Stabilita svahu 2D. Kroky k řešení úlohy Modelování geometrie Definice atributů (vlastnosti a materiál) Zavedení vlastní tíhy Generování sítě
Jednoduché programování
POČÍTAČOVÉ HRY CVIČENÍ 9. Shadery Z „Shading“ = „stínování“ Logika vykreslování Vertex data >> obraz Implementováno na GPU PHA cvičení 9 2.
Renderování vlasů. Kajiya – Kay model Rok 1989, článěk [1] Renderování srsti a krátkých vlasů 3D texely s parametry Texel je bod textury. V [1] se pojmem.
Kartografie v ArcGIS.
Počítačové hry a animace Cvičení 3 – Ttransformace, Camera, 3DModely.
Počítačové hry a animace Cvičení 2. (2) Notová osnova Transformace Kamera Viewporty Quaterniony
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Registrační číslo projektu: CZ.1.07/1.1.32/ Počítačová.
2D grafika Jak pracuje grafik s 2D daty Fotografie Statické záběry
Rastrová grafika (bitmapová) Obrázek poskládaný z pixelů Televize, monitory, fotoaparáty Kvalitu ovlivňuje barevná hloubka a rozlišení Barevná hloubka.
Grafický editor GIMP (12) Reliéf pomocí mapy vyvýšení, logo… Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního.
Číslo projektu: CZ.1.07/1.4.00/ Název DUM: MS PowerPoint Číslo DUM: III/2/VT/2/2/32 Vzdělávací předmět: Výpočetní technika Tematická oblast: Software.
Pokročilé osvětlovací techniky © 2005 Josef Pelikán, MFF UK Praha
Tisky parametry tisku tisk z modelu tisk z rozvržení.
Programování GPU („shaders“) © Josef Pelikán, MFF UK Praha
ČVUT FEL Katedra počítačů Matematické a fyzikální výpočty na grafických kartách (DirectX 9 + DirectX 10) Bc. Jindřich Gottwald vedoucí: Ing. Ivan Šimeček,
3D MODELOVÁNÍ - teorie „HIGH TECHNOLOGY – další vzdělávání v 3D technologii“, registrační číslo projektu CZ.1.07/3.2.10/ Ing. Jiří Bukvald.
Grafické systémy II. Ing. Tomáš Neumann Interní doktorand kat. 340 Vizualizace, tvorba animací.
Algoritmizace a programování Algoritmy 1 - Úvod. Základní pojmy Počítačový program Počítačový program zápis zdrojového kódu, kterému rozumí počítač zápis.
Hardware pro počítačovou grafiku © Josef Pelikán, MFF UK Praha PGR019
Rastrová grafika Základní termíny – Formáty rastrové grafiky.
Grafické programy - opakování
Grafická karta
WORDPAD Textový dokument.
Grafický editor GIMP (8)
Grafický editor GIMP (12)
Barevné prostory v Adobe Photoshop
VY_32_INOVACE_09_ICT_538_Jnc
Počítačová grafika Mgr. Petra Toboříková.
Počítačová grafika.
ArchiCAD nástroj Dveře
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
Transkript prezentace:

Počítačové hry a animace Cvičení 7

Notová osnova Shadery – –Phong – –Toon – –Edge detection Hierarchie – –Kostra Animace – –Rigid – –Skinning – –Blending – –Per-vertex (2)

(3) Programovatelná pipeline

(4) Vertex a pixel(fragment) shader Vertex shader – –Transformace normál/vrcholů – –Výpočet texturovacích souřadnic – –Nemá informace o primitivu – –Nemůže rušit ani přidávat vrcholy Pixel shader – –Výstup VS je interpolován a poslán na vstup PS – –Výpočet finální barvy fragmentu (pixelu) – –Může měnit hloubku fragmentu – –Může fragment zahodit – –Nemůže měnit jeho souřadnice

(5) Anatomie HLSL Zakladni typy – –int, float, bool … Vektory, barvy – –float3, float4 = float4(1,0,0,1) Matice – –floatRxC – –Float4x4 – 4x4 matice Structs – –struct myStruct { – –float4 position; – –… – –} Matematické fce – –mul, pow, normalize, dot, cross,... OUT VS( float4 Pos: POSITION, float3 N: NORMAL ) float4 PS( float3 L: TEXCOORD0, float3 N: TEXCOORD1 ) : COLOR technique DiffuseLight { pass P0 { VertexShader = compile vs_1_1 VS(); PixelShader = compile ps_2_0 PS(); }

(6) Přenos dat z/do HLSL shaderu Globální proměnné – –Stejné pro celý model/část modelu – –HLSL: float4x4 World; – –XNA: Effect.Parameters[“World”].SetValue(Matrix.Identity); vertex/fragment proměnné – –POSITION, TEXCOORD0, NORMAL, COLOR0 – –Specifikace HLSL – –Např. POSITION: pozice aktuálně zpracovávaného vertexu COLOR: výsledná barva aktuálního fragmentu

(7) Použití XNA Effect Nahrát shader přes Content – –Content.Load (“EffectAssetName”); Zvolit techniku z shaderu – –Pokud je jenom jedna, tak není nutné – –Effect.CurrentTechnique = effect.Techniques[“technique name”] Nastavit globální proměnné – –Effect.Parameters[“World”].SetValue(Matrix.Identity); Vykreslit (XNA 4.0) foreach (EffectPass pass in effect.CurrentTechnique.Passes) { pass.Apply();... Draw geometry … }

(8) Shader 1+2: Phong

(9) Shader 1: Ambient + Diffuse RenderDiffuse() Code1: DiffuseShader.fx – –VS( float4 Pos: POSITION, float3 N: NORMAL ) – –PS_DIFFUSE(float3 L: TEXCOORD0, float3 N: TEXCOORD1) – –Hotový ambient Ka * Ia – –Přidat diffuse pomoci upravy fce getDiffuse a PS_DIFFUSE Kd * Id * dot(L,N) Pro tento případ Kd = 0.8

(10) Shader 2: Specular + Textura RenderTexturedSpecular() SpecularShader.fx Data z textury – –definice texture ColorMap; Sampler ColorMapSampler = sampler_state { } – –získání dat tex2D(sampler,coords)

(11) Shader 2: Specular + Textura Code2: Přidat do shaderu barvu z textury α – záleží na materiálu, zkuste např 20,5,1... tex2D(sampler,coords) = barva z textury – –Sampler je ColorMapSampler – –Texturovaci koordinaty jsou ulozeny v parametru predanem TEXCOORD3 kanalem Nahraďte barvou textury difuzní barvu, ktera je definovaná natvrdo

(12) Shader 3: Toon shader Code3: RenderToon() – –Přemapovat barvu do rozsahů textury (Toon.bmp) ToonShader.fx – –Podle barvy vybrat texel z textury CelMap Použijte funkci getGray pro přemapování 3D barvy do 1D grayscale Saturate omezí vstupní hodnotu na 0 až 1 – –Vrátit tuto hodnotu z pixel shaderu přenásobenou difůzní barvou materiálu

Shader 3: Toon shader Rešení – –Tex.y = 0.0f; – –Tex.x = saturate(getGray(Color)); – –float4 Remapped = tex2D(CelMapSampler, Tex) * DiffuseColor; – –return Remapped; (13)

(14) Shader 4: Edge detection filter RenderEdge() – –SetRenderTarget – výstup toon shaderu místo do framebufferu uložíme do textury RenderTarget2D renderTarget1 – vytvořen v LoadContent – –Vykreslíme znovu jako sprite a zpracujeme filtrem, který v obrázku vyhledá a označí hrany EdgeShader.fx – –getScharr(sampler,float2) vrátí 1 pokud je pixel součástí hrany, vrátí jedna pokud není Scharr filter

(15) Shader 4: Edge detection filter Code4: edge detection jen pro „vnější“ hrany objektu – –Uložit do textury obrázek vykreslený toon shaderem a zároveň jen ambientí barvu – –Na ambientní texturu aplikovat edge detection – –Sečíst s toon shaded texturou Jak na to – –Multiple render target = pixel shader může ukládat výstup do více bufferu najednou – –Jedním průchodem tedy můžeme spočítat jak toon shaded hodnotu tak si do druhé textury uložit ambientí barvu XNA: SetRenderTarget(1, renderTarget2); HLSL: ToonShader.fx: PixelShaderMRT návratová hodnota – –Pro edge detection Jednu texturu vykreslit přes spriteBatch Druhou přidat jako Sampler

Notová osnova Shadery – –Phong – –Toon – –Edge detection Hierarchie – –Kostra Animace – –Rigid – –Skinning – –Blending – –Per-vertex (16)

(17) Hierarchie Hierarchie objektu – –Uzel je transformace – –List je objekt Finální transformace objektu – –Tf = T0*T1*T2*…*Tn*Tlocal SceneGraph

(18) Hierarchie kostry Hierarchie kloubů V uzlech jsou transformace (rotace) kloubů Objekty jsou kosti

(19) Model pro skeletální animaci Musí mít kostru Povrch je hierarchií navázan na kostru Bez skinningu (základ) – –Každý mesh je navázaný na právě jednu kost – –Vertex každého meshe je ovlivněn právě jednou kostí Se skinningem (pokročilé) – –Vertex každého meshe může býto ovlivněn více kostmi s různou váhou

(20) Vykreslovací kód v XNA foreach (ModelMesh mesh in tankModel.Meshes) { foreach (BasicEffect effect in mesh.Effects) { effect.World = boneTransforms[mesh.ParentBone.Index]; effect.View = view; effect.Projection = projection; effect.EnableDefaultLighting(); } mesh.Draw(); }

(21) Code 1: XNA Animation Sample sample/simple_animation

(22) Skinning Každý vertex je ovlivněn více kostmi s určitou váhou – –Reálnější a hladší animace – –Časově náročné nastavení kostí a jejich vah v 3D editoru Váha, indexy kostí a jejich transformace jsou uloženy v tzv. vertex kanálu – –Předá se společné s ostatními daty o modelu pro GFX Posun vertexů proběhne na grafické kartě ve vertex shaderu

(23) Skinning v Maye Skin Weight Tool – –Kreslit black/white váhovou mapu

(24) Vertex format Data specifická pro každý vertex HLSL – –POSITION0,TEXCOORD0, BLENDWEIGHT0,,... XNA: VertexDeclaration, VertexBuffer, VertexElement – –VertexElementUsage.Position,TextureCoordinate,BlendWeights,... Vykreslení device.VertexDeclaration = vertexDeclaration; device.Vertices[0].SetSource(vertexBuffer, 0, MyOwnVertexFormat.SizeInBytes); device.DrawPrimitives(PrimitiveType.TriangleList, 0, 1);

(25) Code 2: Skinning sample WEB: BASE2

(26) Skinning Vertex Shader VS_OUTPUT VertexShader(VS_INPUT input) { VS_OUTPUT output; // Blend between the weighted bone matrices. float4x4 skinTransform = 0; skinTransform += Bones[input.BoneIndices.x] * input.BoneWeights.x; skinTransform += Bones[input.BoneIndices.y] * input.BoneWeights.y; skinTransform += Bones[input.BoneIndices.z] * input.BoneWeights.z; skinTransform += Bones[input.BoneIndices.w] * input.BoneWeights.w; // Skin the vertex position. float4 position = mul(input.Position, skinTransform); output.Position = mul(mul(position, View), Projection); // Skin the vertex normal, then compute lighting. float3 normal = normalize(mul(input.Normal, skinTransform)); float3 light1 = max(dot(normal, Light1Direction), 0) * Light1Color; float3 light2 = max(dot(normal, Light2Direction), 0) * Light2Color; output.Lighting = light1 + light2 + AmbientColor; output.TexCoord = input.TexCoord; return output; }

(27) Blending animací Plynulý přechod z jedné animace do druhé Suma transformací s váhami Na úrovni transformace kostí Skeletální profily – –Seznam vah pro každou kost – –Možnost rozdělit animaci na části a aplikovat je separátně Blending např. běhu (nohy) a střílení (torzo a ruce)

(28) Per-vertex animace Bez kostry Každý keyframe ma pozice všech vertexů Vertex morph – –Interpolace mezi keyframy Vhodné na animaci látky a výrazu tváře – –Prakticky nemožné pomocí kostí

(29) V praxi Několik úrovní abstrakce – –Mesh – –Skeleton – –Animace – –Kontroler animace – –Konkrétní stav animace – –Mixer animací Kontroler → update transformací skeletonu podle keyframu animace Stav animace → výstup kontroleru Mixer → blending stavu animace

(30) SkinnedModel.fx Vyzkoušejte si: – –Vizuálně zobrazit jednotlivé váhy output.Lighting = input.BoneWeights.xxxx output.Lighting = input.BoneWeights.wzyx atd.. V pixel shaderu vypněte texturu – –Vliv jednotlivých kostí output.Lighting = input.BoneIndices / 59 – –Vypnout vliv některých kostí Zakomentovat jejich přičtení ke skinTransform

(31) Links – –XNAnimation + samples