lek 6 Flashcards
(34 cards)
zakaj def oblike
Deformiranje oblik je ključno v 3D modeliranju in animaciji, ker nam omogoča, da osnovne geometrijske oblike (npr. krogla, kocka) spremenimo v kompleksnejše, zanimivejše ali bolj realistično zgledajoče objekte. S tem lahko ustvarjamo npr. animirane like, naravne objekte ali abstraktne umetnine.
*Ali Cinema dovoli premikanje posameznih točk?
Premikanje posameznih točk:
V nekaterih programih lahko ročno izberemo in premaknemo določene točke (vertex-e) mreže (mesh-a). Tako neposredno vplivamo na obliko objekta, kar vidimo na primerih slik (a) in (b) – pri (b) je nekaj točk premaknjenih, kar povzroči lokalno deformacijo.
Kako lahko deformiramo oblike?
a) Premikanje kontrolne lomljenke (control points, splines)
Pri bolj kompleksnih objektih uporabljamo t.i. kontrolne točke ali lomljenke. Z njihovo premikanjem neposredno določamo krivulje in površine modela (npr. NURBS površine). Premik kontrolne točke vpliva na večji del modela in omogoča gladko deformacijo.
b) Geometrijske transformacije
To so osnovne matematične operacije, kot so premik (translacija), rotacija in skaliranje dela ali celotnega objekta. Z njimi hitro spremenimo splošen izgled, ne da bi vplivali na detajle površine.
c) Deformerji (deformers)
To so posebna orodja ali modifikatorji znotraj 3D programov, ki na določen način avtomatizirano deformirajo objekte – na primer bend (upogibanje), twist (sukanje), taper (zožanje). Z uporabo deformerjev lahko ustvarimo zapletene učinke brez ročnega premikanja točk.
d) Kosti (skeleti) in inverzna kinematika
Posebno pomembno pri animaciji likov: modelu dodelimo “skelet” s sklepi (bones/joints). Premik ali rotacija sklepa povzroči gibanje pripadajočega dela modela, kar omogoča naravne animacije (npr. hoja). Inverzna kinematika omogoča, da končni del (npr. dlan) premaknemo, program pa sam izračuna, kako se morajo zavrteti ostali sklepi, da bo gibanje pravilno.
nacini def oblik, slika s 3 kruga
Na sliki vidimo kroglo obdano s kontrolno mrežo (lomljenko), kjer se položaj enega izmed vogalov (kontrolnih točk) spreminja skozi več korakov (f1, f50, f100). Ob vsakem premiku te kontrolne točke se tudi površina sfere temu prilagodi — spreminja se oblika sfere, kot jo določa kontrolna lomljenka.
Povezava s tekstom:
Premikanje kontrolne lomljenke pomeni, da z ročnim premikanjem ene ali več kontrolnih točk (vozlišč mreže) spremenimo obliko celotnega modela.
Na sliki desno točno to vidimo:
Pri f1 je kontrolna točka (10,0,0),
pri f50 (15,0,0),
pri f100 (20,0,0).
S tem, ko kontrolno točko premikamo vedno bolj desno, se del sfere raztegne v smeri te točke in posledično deformira obliko modela.
skupki točk
Objekt se sestoji iz stevilnih točk oz VERTEX, ki jih lahko premikamo, da spremenimo obliko ali ustvarimo animacijo. Točke lahko organiziramo.
1. v množice-point sets- to pomeni, da izberemo določeno število točk, ki jih bomo skupaj premikali ali transformirali
2. v skupke ali grozde- point clusters-manjše skupine točk, pogosto sosednjih, ki jih lahko še bolj lokalno nadzorujemo.
Slika (a): prikazuje osnovni model glave, kjer so jasno vidni grozdi – posamezne večje točke na nosu, ušesu, obrvi in licu, ki predstavljajo skupine točk (grozde).
Slika (b): prikazuje enak model po premiku nekaterih grozdov — opazimo, da so se deli modela (npr. nos, ustnice) deformirali, ker smo premaknili celoten grozd točk, ne le posameznih vertexov.
Zakaj uporabljamo skupke/grozde?
Premikanje posameznih točk bi bilo zamudno in nepraktično, zato jih združujemo v grozde, ki jih lahko premikamo kot celoto.
Grozde lahko nato povežemo s kontrolnimi strukturami (npr. kontrolnimi točkami ali kostmi), ki omogočajo bolj naravno in učinkovito animacijo ali deformacijo kompleksnih oblik, kot je obraz.
Hierarhija pomeni, da imamo več nivojev nadzora nad točkami:
1.Najprej točke krmilne strukture (npr. kontrolne točke ali kosti)
2.Potem skupki/grozdi (ki so podrejeni tem kontrolnim točkam)
3.In na koncu posamezne točke modela (ki so podrejene grozdom)
Ta pristop omogoča bolj organizirano in enostavno animiranje kompleksnih oblik, kot so obrazi likov v animaciji ali igrah.
Premikanje oglišč
Gre za premikanje enega oglišča (vertexa) v mreži (mesh-u).
Ostala oglišča se ne premikajo neposredno, temveč se njihova nova pozicija izračuna interpolirano — torej na podlagi razdalje do izvornega, premaknjenega oglišča.
To pomeni, da oglišča, ki so bližje premaknjenemu oglišču, bolj sledijo premiku, tista bolj oddaljena pa manj (ali sploh ne). Za določanje vpliva premika lahko uporabimo:
1.Evklidsko razdaljo (najkrajša pot v 3D prostoru)
2.Topološko razdaljo (število povezav v mreži)
Kako deluje DISPLACE DEFORMER?
-modifikator, ki premika oglišča na podlagi vrednosti v teksturi ali funkciji (npr. svetlost v sliki pomeni višji premik površine).
Displace deformer je pogosto uporabljen za ustvarjanje podrobnosti na površini brez potrebe po ročnem premikanju vsake točke.
Poljubno deformiranje FFD
Namesto da bi premikali vsako točko posebej, okoli objekta ustvarimo mrežo (koordinatni sistem), ki ga lahko prosto upogibamo in transformiramo.
Objekt, ki je “ujet” v to mrežo, se bo avtomatsko deformiral skupaj z mrežo.
Definiramo mrežo koordinatnega sistema
Okoli objekta postavimo pravokotno (ali kubično v 3D) mrežo kontrolnih točk. Na zgornji sliki desno vidimo pravokotno mrežo (koordinatni sistem).
Ta mreža je na začetku “poravnana” in objekt ni deformiran.
Projekcija oglišč
Koordinate vseh oglišč modela (črne pike) pretvorimo v koordinate tega lokalnega sistema (npr. določimo, kje v mreži ležijo posamezne točke objekta).
Transformacija mreže
1.Premikamo kontrolne točke mreže (npr. vlečemo črte ali vogale).
2.Na spodnji sliki vidimo, da je mreža upognjena — kontrolne točke so prestavljene, mreža ni več “ravna”.
3.Preslika transformacije na objekt
Ko spremenimo mrežo, se vsaka točka objekta avtomatsko premakne glede na svojo projekcijo v mreži.
Rezultat: objekt se deformira gladko in nadzorovano, ker ga vodi transformacija mreže.
3d in 2d ffd
3D FFD (Free-Form Deformation v 3D)
Kaj je to?
Pri 3D FFD je objekt (npr. 3D plošča, krogla ali katerakoli 3D oblika) “ujet” v 3D mrežo kontrolnih točk (kletka).
Kako deluje?
Ko premikaš kontrolne točke v tej prostorski kletki, se celoten objekt v notranjosti gladko deformira v treh dimenzijah.
Slika zgoraj desno:
Prikazuje 3D mrežo okoli objekta – vidiš vijolične linije (mrežo) okoli 3D površine. S premikanjem oglišč te mreže se spremeni tudi oblika predmeta.
2D FFD (Free-Form Deformation v 2D)
Kaj je to?
Uporabljaš FFD le v dveh dimenzijah, torej na ploskvah ali “krpah” (kot je list papirja, površina).
Kako deluje?
Površino prekriješ z 2D mrežo kontrolnih točk. Ko točke premikaš, se površina (in vsi detajli nanjo) gladko upogne oziroma deformira.
Slike spodaj:
Prva slika prikazuje ravno ploskev (npr. kvadrat ali okvir).
Druga in tretja slika prikazujeta, kako se ista ploskev poljubno deformira (upogiba, valovi, guba) glede na premike kontrolnih točk mreže.
3D FFD se uporablja za kompleksno animacijo ali popačenje celega objekta (npr. napihovanje, zvijanje, oblikovanje likov).
2D FFD je bolj uporaben za tkanine, površine, liste, membrane (npr. simulacija gubanja papirja ali valovanja vode).
Poljubno deformiranje krivulje
Gre za posebno različico FFD (free-form deformation), kjer ne uporabljamo klasične mreže, temveč deformacijo vodimo s pomočjo krivulje (npr. Bézierjeve ali NURBS krivulje).
Objekt ali del objekta (npr. cev, vrv, obraz) “pripnemo” na krivuljo — ko spreminjamo obliko krivulje, se objekt avtomatsko deformira tako, da sledi tej poti.
Zakaj je to uporabno?
Tak pristop je posebej primeren za deformacije podolgovatih oblik (cev, žica, vrv, kača, ali celo deli obraza — npr. nasmeh ali premik ustnic po lokih).
aj pomeni “kritični odsek”?
Pred projekcijo (torej pred tem, ko objekt “prilepimo” na krivuljo) moramo določiti, kateri del objekta bo najbolj pod vplivom deformacije — to je t.i. “kritični odsek” (del, kjer se objekt in krivulja sekata ali dotikata).
Ta odsek določa, kako in koliko se posamezni deli objekta deformirajo, da se izognemo nenaravnim raztegom ali zvijanjem.
Deformacija vzdolž poti
Globalne deformacije
Kaj je Taper deformacija?
Taper pomeni, da se objekt postopoma zožuje ali širi po določeni osi (najpogosteje po višini — osi z).
Vizualno (zgoraj desno):
Leva slika: osnovni stolpec (prizma).
Desna slika: isti stolpec, a proti vrhu se vse bolj zožuje, dokler se skoraj ne konča v špico (kot piramida ali stožec).
Matematično:
Skaliranje koordinat x in y je funkcija trenutne višine (z).
To pomeni, da višje kot je točka na stolpcu, manjša je njena širina (x, y).
Spodaj je podana formula za faktor skaliranja:
s(z) = (maxz - z) / (maxz - minz)
S tem dobimo za spodaj večji, za zgoraj pa manjši prerez.
Kaj je Bend deformacija?
Bend pomeni, da objekt ukrivimo okoli neke osi, običajno po loku ali polkrogu.
Vizualno (spodaj):
Stolpec, ki je prej bil raven, je zdaj gladko upognjen v levo ali desno.
Matematično:
Bend se pogosto izraža s transformacijo koordinat glede na kot upogiba (ni eksplicitno zapisan na tej sliki, a osnovna ideja je, da koordinato x ali y spremeniš glede na z — torej točke bolj zgoraj so bolj zamaknjene).
Uporaba v praksi
Oba tipa deformacij sta globalna, ker vplivata na celoten objekt.
Takšne transformacije pogosto uporabljamo v 3D modeliranju za hitro ustvarjanje različnih efektov ali prilagajanje osnovnih oblik (npr. iz valja naredimo stožec ali upognjeno cev).
Prehodne ploskve oz fillet
Fillet je vmesna (prehodna) ploskev, ki gladko poveže dve sosednji ploskvi ali površini.
Ključ: ujemanje ukrivljenosti – pogosto zahtevamo zveznost C2 (kar pomeni, da sta tako prva kot druga izpeljanka gladki, torej da se ukrivljenost lepo prenaša brez vidnih prekinitev).
Standardna uporaba:
Povsod v industrijskem oblikovanju in CAD: npr. spoj dveh cevi, robov, delov strojev, kjer hočemo mehke, neostre prehode.
V animaciji:
Animirani filleti omogočajo gladke prehode med “oblečenimi” (skiniranimi) kostmi pri kinematskih verigah, npr. pri animaciji roke ali prstov.
Slike spodaj:
(a) Prikazuje dva ločena valja.
(b) Prikazuje, kako je med njima zgrajena mreža (“patch”), ki ju gladko poveže.
(c) Prikazuje končni rezultat, kjer je spoj že gladek lok med obema valjema.
Desna krivulja: prikazuje matematično gladkost oziroma zveznost prehoda.
Kaj je zaviti fillet in od česa je odvisen?
Če izberemo različni zaporedji (orientaciji) zank ali robov, lahko dobimo zaviti (twisted) fillet.
Do tega pride zaradi različnih vrstnih redov oglišč ali nasprotnih smeri pri povezovanju dveh robov ali “zank” (edge loops).
Slike:
Levo (a, b, c): prikaz standardnega, klasičnega filleta med valjem in ploskvijo – prikazuje razvoj od osnovne do gladke površine.
Spodaj (a, b): prikaz, kako orientacija zank vpliva na obliko filleta. (a) je standardno, (b) ima zavito mrežo zaradi napačnega vrstnega reda.
Kako se fillet spreminja ob animaciji ali deformaciji?
Fillet (prehodna ploskev) se avtomatsko prilagaja, ko se spremenita ali deformirata sosednji ploskvi.
To je nujno pri animaciji (npr. pri “skinu” nad kostmi), kjer se vmesna površina med dvema segmentoma mora gladko spreminjati, da je gib naraven.
Slike:
Levo (a, b): prikaz animacije, kjer se dva segmenta premikata, fillet med njima se avtomatično upogiba in podaljšuje/krči.
Desno: prikaz na 3D modelu – del modela (npr. rama, pazduha), kjer se pri premikanju roke gladko spremeni tudi vmesna površina.
Zlivanje oblik (morphing)
Zlivanje oblik ali morphing je proces, kjer postopoma prehajamo iz ene oblike v drugo, tako da se ena slika ali objekt tekoče preoblikuje v drugo. Ta tehnika se pogosto uporablja v računalniški grafiki, animaciji, filmih (npr. preobrazbe obrazov), pa tudi v znanstveni vizualizaciji.
- Tradicionalni pristop
Vhod: dve sliki (začetna in končna).
Geometrijska transformacija: Obliko iz »Izvor« pretvoriš v »Cilj« z uporabo preprostih transformacij (premik, skaliranje, rotacija).
Fade-in/Fade-out: Pri tem pristopu se pogosto uporablja prekrivanje slik z zmanjševanjem/opovečevanjem prosojnosti. Vendar to ni primeren način za prave morph učinke, ker se slike le prekrivajo, brez prave preobrazbe ene v drugo (samo bledi iz ene slike v drugo).
Primer:
Prva slika počasi izgine, druga se pojavi – ni prave preobrazbe obrazov/oblik.
- Pristop, ki temelji na koordinatni mreži
Uporablja se koordinatno mrežo (mesh/grid), ki prekriva sliko ali model.
Interpolacija transformacije mreže: Ogljišča te mreže premikamo iz začetnega v končni položaj, s čimer nadzorovano preoblikujemo vsebino (tako se deformirajo vsi detajli slike/modela).
Končna slika nastane tako, da se vsak del slike/modela transformira glede na premik ustrezne točke na mreži.
Primer:
Obraz razdeliš v mrežo, mrežo na začetni sliki postopno preoblikuješ v mrežo končne slike, rezultat je postopna in naravna preobrazba.
- Pristop z uporabniško določenimi linijami
Uporabnik ročno določi ključne linije (npr. oči, usta, nos na obeh slikah).
Pri morphingu se interpolira premik teh linij in celotna slika se znotraj teh linij ustrezno transformira.
To omogoča zelo natančno in nadzorovano zlivanje kompleksnih struktur.
Opomba:
Ta pristop je naprednejši in ni vključen v to učno snov (“ne bomo spoznali”).
Primer:
Ročno označiš obrvi, usta, oči na obeh slikah. Pri morphingu se vse deformira točno tako, da se linije preoblikujejo iz ene v drugo.
Morphing s koordinatno mrežo
Morphanje s koordinatno mrežo je napredna metoda animacije, kjer uporabnik na obeh slikah ali objektih določi mrežo značilnih točk (na primer kvadratno mrežo). Vsaki točki v izvorni mreži določiš, kam naj se premakne v ciljni mreži. S pomočjo interpolacije nato izračunamo vmesne mreže za posamezne faze animacije. Transformacija poteka najprej v eni smeri (na primer x), nato še v drugi (y), s čimer se ustvari tekoč prehod med oblikama. Pri animaciji tako gledalec vidi postopno preoblikovanje iz začetne v končno obliko, kjer se položaji vseh mrežnih točk gladko spreminjajo. Končni rezultat je animiran prehod, kjer se izvorna slika ali oblika zgladi v ciljno, pri čemer v vsakem časovnem koraku izračunamo položaj vseh točk v mreži in tako določimo trenutno vmesno obliko.
Linearna interpolacija in bi-linearna transformacija
Linearna interpolacija pomeni, da koordinate posameznih točk mreže prehajajo iz začetnih v končne vrednosti po linearni poti (ravna črta).
Bi-linearna transformacija pomeni, da pri transformaciji ne upoštevamo le geometrijskih transformacij, temveč tudi spremembe v intenziteti pikslov (barvi, svetlosti), kar omogoča bolj realističen videz morphanja.
Kakšna je vloga vmesne mreže pri morphanju?
Vmesna mreža predstavlja korake med izvorno in ciljno obliko ter določa, kako se posamezni deli slike ali objekta postopoma preoblikujejo.
Kaj je linearna interpolacija? (1D primer)
Linearna interpolacija je način, kako izračunamo vrednost na neki točki med dvema znanima točkama na premici.
Imamo dve tačke:
Prva tačka: (x0, s0)
Druga tačka: (x1, s1)
s0 i d1 du vr na tockama x0 in x1
Za neku vrednost x između x0 i x1, vrednost s se izračuna ovako:
s = s0 + (s1 - s0) * (x - x0) / (x1 - x0)
Ako je x0 = 0, a x1 = 1, formula je još jednostavnija:
s = (1 - x) * s0 + x * s1
s0=začetna vrednost
s1-s0 klk se spremeni
(x - x0) / (x1 - x0)-deleži poti od x0 dox1 tj kako daleč smo
Kaj je bilinearna interpolacija? (2D primer)
Bilinearna interpolacija je razširitev linearne interpolacije v 2D, torej za pravokotno mrežo ali ploskev.
Imamo četiri tačke u pravougaoniku:
Donji levi ugao: (x0 = 0, y0 = 0, s00)
Gornji levi ugao: (x0 = 0, y1 = 1, s01)
Donji desni ugao: (x1 = 1, y0 = 0, s10)
Gornji desni ugao: (x1 = 1, y1 = 1, s11)
Želimo vrednost s za neko točko (x,y) znotraj pravokotnika.
Najprej interpoliramo po x:
Za spodnjo stranico (y0):
sy0=(1−x)*s00+xs10
Za zgornjo stranico (y1):
𝑠𝑦1=(1−𝑥)𝑠01+𝑥𝑠11
Nato interpoliramo po y:
Končna vrednost:
𝑠=(1−𝑦)𝑠𝑦0+𝑦𝑠𝑦1
s = (1 - x) * (1 - y) * s00 + x * (1 - y) * s10 + (1 - x) * y * s01 + x * y * s11
Ta metoda se uporablja za interpolacijo vrednosti znotraj mreže, npr. pri obdelavi slik, teksturah (texture mapping), morphingu in animaciji.
Lahko tudi izven območja (ekstrapolacija), vendar je to redko uporabljeno, ker hitro vodi v nerealistične rezultate.
Ključne oblike
Keyshape technique je pristop v računalniški animaciji, kjer ne animiramo le položajev objektov skozi ključne sličice (kot v klasični keyframe animaciji), ampak animiramo celotno obliko modela z uporabo več različic istega modela.
Vsaka “ključna oblika” predstavlja določen izraz ali pozo modela (npr. obraz v nevtralnem, nasmejanem ali presenečenem izrazu).
Animacija nastane tako, da računalnik med začetno in končno ključno obliko samodejno izračuna vmesne oblike (t.i. interpolacija).
To deluje najbolje, kadar izvorna in ciljna oblika imata enako topologijo (torej enako število točk in povezav) – takrat je mogoče preprosto interpolirati med točkami obeh oblik.
Uporablja se tudi tehnika FFD (free-form deformation), če je treba.
Primer (slika zgoraj desno):
Model gre iz izvorne oblike skozi več vmesnih oblik do ciljne. Računalnik izračuna gladek prehod med njimi.
Kaj je mešanje ključnih oblik (blended keyshape approach)?
Namesto da bi imel le dve ključni obliki (začetek in konec), lahko uporabljaš več ključnih oblik hkrati, kjer vsak od teh “keyshape-ov” predstavlja različne izraze ali premike (npr. govor, nasmeh, žalost …).
Pri mešanju ključnih oblik (ang. blendshapes) lahko različne izraze kombiniraš, kar omogoča izjemno naravno animacijo obrazov ali kompleksnih deformacij.
Vsaka točka na modelu se premika kot utežena kombinacija vseh ključnih oblik.
V praksi to omogoča, da animator nadzoruje posamezne dele obraza (npr. dvigne samo eno obrv ali rahlo odpre usta).
Primer (slika sredina):
Vidimo, kako lik gladko prehaja med več izrazi (npr. govor, smeh, presenečenje), ker se uporabljajo različne blendshapes.