Luku 7: Animaatio. Eksplisiittiset menetelmät Implisiittiset menetelmät Suora ja käänteinen kinematiikka Motion capture Elokuvamaisuus



Samankaltaiset tiedostot
3D animaatio: liikekäyrät ja interpolointi. Tommi Tykkälä

Harjoitus Bones ja Skin

Luihin perustuva 3D-animointi tietokonepeleissä

T Tietokoneanimaatio ja mallintaminen. Lauri Savioja Teknillinen korkeakoulu Tietoliikenneohjelmistojen ja multimedian laboratorio 02/02

JOHDATUS TEKOÄLYYN TEEMU ROOS

Tik Tietokoneanimaatio

763306A JOHDATUS SUHTEELLISUUSTEORIAAN 2 Ratkaisut 1 Kevät y' P. α φ

Luento 3: 3D katselu. Sisältö

Palauta jokainen funktio-tiedosto. Esitä myös funktiot vastauspaperissasi.

Harjoitus Morphing. Ilmeiden luonti

4. Funktion arvioimisesta eli approksimoimisesta

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

Tasohyppelypeli. Piirrä grafiikat. Toteuta pelihahmon putoaminen ja alustalle jääminen:

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:

Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on

JOHDATUS TEKOÄLYYN TEEMU ROOS

Algoritmit 1. Luento 9 Ti Timo Männikkö

JOHDATUS TEKOÄLYYN TEEMU ROOS

Ominaisarvot ja ominaisvektorit 140 / 170

Lauseen erikoistapaus on ollut kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa seuraavassa muodossa:

Luku 6: Grafiikka. 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS

Malleja ja menetelmiä geometriseen tietokonenäköön

MAB3 - Harjoitustehtävien ratkaisut:

Lineaarikuvausten. Lineaarikuvaus. Lineaarikuvauksia. Ydin. Matriisin ydin. aiheita. Aiheet. Lineaarikuvaus. Lineaarikuvauksen matriisi

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA

Matematiikan tukikurssi

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Opetusmateriaali. Fermat'n periaatteen esittely

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

2.3 Voiman jakaminen komponentteihin

4.1 Kaksi pistettä määrää suoran

8/21/2013 TIE PELIOHJELMOINTI ANIMAATIO, AI, MAAILMAT, VERKKO ANIMAATIO SUORA JA KÄÄNTEINEN KINEMATIIKKA LUURANKOANIMAATIO

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 4 / vko 47

3.4 Käänteiskuvauslause ja implisiittifunktiolause

RATKAISUT: 19. Magneettikenttä

1 Kompleksiluvut 1. y z = (x, y) Kuva 1: Euklidinen taso R 2

Suoran yhtälöt. Suoran ratkaistu ja yleinen muoto: Suoran yhtälö ratkaistussa, eli eksplisiittisessä muodossa, on

5. Grafiikkaliukuhihna: (1) geometriset operaatiot

MAB3 - Harjoitustehtävien ratkaisut:

FYSP101/K1 KINEMATIIKAN KUVAAJAT

3D-animaation toteutus peliohjelmoinnissa. Natalia Tuulos

BM20A5800 Funktiot, lineaarialgebra ja vektorit Harjoitus 4, Syksy 2016

Algoritmit 2. Luento 6 Ke Timo Männikkö

MS-A0004/A0006 Matriisilaskenta

1 Kompleksiluvut. Kompleksiluvut 10. syyskuuta 2005 sivu 1 / 7

Luento 5: Käyräviivainen liike. Käyräviivainen liike Heittoliike Ympyräliike Kulmamuuttujat θ, ω ja α Yhdistetty liike

Animaation tuotanto. Mika Timonen

Muumion kirous. Pelisuunnitteludokumentti. Veikkauksen pelisuunnittelukilpailua (Peliskaba2015) varten

Koordinaatistot 1/6 Sisältö ESITIEDOT: reaaliluvut

Tik Tietokoneanimaatio

Matematiikan tukikurssi

1/6 TEKNIIKKA JA LIIKENNE FYSIIKAN LABORATORIO V

763306A JOHDATUS SUHTEELLISUUSTEORIAAN 2 Ratkaisut 2 Kevät 2017

Aleksi Pyykkönen D-mallinnus ja liikkeentunnistus

Shrödingerin yhtälön johto

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

Tekijä Pitkä matematiikka Pisteen (x, y) etäisyys pisteestä (0, 2) on ( x 0) Pisteen (x, y) etäisyys x-akselista, eli suorasta y = 0 on y.

Juuri 6 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty Vastaus: Määrittelyehto on x 1 ja nollakohta x = 1.

13. Ratkaisu. Kirjoitetaan tehtävän DY hieman eri muodossa: = 1 + y x + ( y ) 2 (y )

c) Määritä paraabelin yhtälö, kun tiedetään, että sen huippu on y-akselilla korkeudella 6 ja sen nollakohdat ovat x-akselin kohdissa x=-2 ja x=2.

DNF. Liuku. DNF on lajina erityisen herkkä sille että painotus ja liukuasento ovat kunnossa. Painotuksessa yleisimmät ongelmat liittyvät jalkoihin.

Luento 4: Liikkeen kuvausta, differentiaaliyhtälöt

Mailaote on perusasia, joka tulee opetella heti alusta alkaen oikein. Myöhemmin virheiden korjaaminen on vaikeampaa ja vie enemmän aikaa.

Nyt kesäksi voisi olla hyvä tilaisuus tehdä lupauksia omaan elämäntapaan ja siihen tehtäviin muutoksiin.

JOHDATUS TEKOÄLYYN TEEMU ROOS

BM20A0900, Matematiikka KoTiB3

MS-A0202 Differentiaali- ja integraalilaskenta 2 (SCI) Luento 1: Parametrisoidut käyrät ja kaarenpituus

Luvun 5 laskuesimerkit

Kuvaus. Määritelmä. LM2, Kesä /160

ELOKUVAKASVATUS SODANKYLÄSSÄ FINAL CUT EXPRESS HD OSA 2: SIIRTYMÄT, TEHOSTEET, KUVAMANIPULAATIO 1. RENDERÖINTI

x + 1 πx + 2y = 6 2y = 6 x 1 2 πx y = x 1 4 πx Ikkunan pinta-ala on suorakulmion ja puoliympyrän pinta-alojen summa, eli

Paraabeli suuntaisia suoria.

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

TAITOKOULU OSA 7. Tervetuloa Taitokoulun seitsemännelle oppitunnille! Nyt lisätään laukaukseen tehoa ja viimeistellään kuin Selänne!

on hidastuvaa. Hidastuvuus eli negatiivinen kiihtyvyys saadaan laskevan suoran kulmakertoimesta, joka on siis

Yleistä vektoreista GeoGebralla

802320A LINEAARIALGEBRA OSA II

ELEC-A3110 Mekaniikka (5 op)

Luvun 5 laskuesimerkit

MAA7 Kurssikoe Jussi Tyni Tee B-osion konseptiin pisteytysruudukko! Kaikkiin tehtäviin välivaiheet näkyviin! Laske huolellisesti!

y z = (x, y) Kuva 1: Euklidinen taso R 2

Animaation tuotanto ja kuvaustekniikat peleissä

Matematiikan tukikurssi

Juuri 10 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

OHJE / PELIOHJE 1 (5) TUOTE: Tasapainokortit SISÄLTÖ KEHITTÄÄ PELAAMINEN

Numeeriset menetelmät

SVINGIN KIINNITYSKOHDAT

1 Sisätulo- ja normiavaruudet

Aalto-yliopiston perustieteiden korkeakoulu Matematiikan ja systeemianalyysin laitos

y x1 σ t 1 = c y x 1 σ t 1 = y x 2 σ t 2 y x 2 x 1 y = σ(t 2 t 1 ) x 2 x 1 y t 2 t 1

Nopeus, kiihtyvyys ja liikemäärä Vektorit

Derivointiesimerkkejä 2

Opas omatoimiseen harjoitteluun

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Transkriptio:

Eksplisiittiset menetelmät Implisiittiset menetelmät Suora ja käänteinen kinematiikka Motion capture Elokuvamaisuus

Animaatio Peleissä tärkeimmät animoitavat kohteet ovat pelihahmot, etenkin avatar Animointi on vaikeaa: kuluu joko paljon muistia tai paljon laskentatehoa mutta erityisesti työlästä saada luonnolliseksi Eksplisiittiset menetelmät: jokainen frame on tallennettuna sellaisenaan (2d: bittikartat, 3d: kaikkien kulmapisteiden sijainnit) Implisiittiset menetelmät: lasketaan liike lennossa

Menetelmät Eksplisiittisissä menetelmissä etuna yksinkertaisuus ja vähäinen laskenta Haittapuolena muistinkulutus Implisiittisissä vastaavasti paljon hankalaa laskentaa, mutta säästöä muistinkulutuksessa Implisiittisten etuna myös sovellettavuus eri tilanteisiin, esim. interaktio erilaisten esineiden kanssa

Eksplisiittiset menetelmät

Eksplisiittiset menetelmät Yksinkertaisin menetelmä: tallennetaan jokaista kuvaa kohti kolmioverkon kaikki pisteet Ajastimella pidetään huoli, että animaatio etenee, piirrettäessä vain valitaan oikea versio Pitää varmistaa, että animaatio etenee oikeaa vauhtia myös frame raten vaihdellessa Joudutaan valitsemaan valmiista versioista se, joka parhaiten vastaa tämänhetkistä tilannetta Tasaisempi animaatio interpoloimalla

Keyframet Keyframe-tekniikassa tallennetaan tarkat koordinaatit harvemmin kuin joka framella (esim. joka 5. tai 10. frame) Morph target tai per-vertex animation Näistä tallennetuista keyframeista interpoloidaan kolmioverkko lopuille frameille Interpolointi voi olla lineaarista tai hienostuneempaa (Bezier, Hermite,...) Hahmojen muoto ei säily Käytetty paljon kasvoihin

Keyframet Mitä tiheämmin keyframeja on, sitä parempi laatu, mutta sitä enemmän muistia kuluu Toisaalta tarvittu tiheys riippuu liikkeestä: nopea liike vaatii suurempaa tiheyttä kuin hidas Jos on käytössä riittävän tiheä animaatiodata, voidaan laskea virhearvojen perusteella datasta riippuvat keyframet automaattisesti Toisaalta animoija voi asettaa haluamansa keyframet manuaalisesti sopiviin kohtiin

Tag-järjestelmät Kombinatorinen räjähdys: jos hahmolla on esim. eri kävelytyylejä, aseita ja ilmeitä, erilaisia yhdistelmiä on paljon Oikeasti nämä ovat osittain riippumattomia Tag-järjestelmissä hahmo jaetaan eri osiin, joista kullekin on omat animaationsa, ja osat liitetään toisiinsa jopa vain yhdestä pisteestä Mahdollistaa esim. kustomoitavat varusteet Jatkuvuusongelmat

Implisiittiset menetelmät Implisiittisissä menetelmissä lasketaan kulmapisteiden sijainnit lennossa liikkeen kuvauksen perusteella Etuna mm. sopeutuminen maastoon ja muihin erilaisiin tilanteisiin, vähäinen muistinkäyttö, saman datan käyttö erilaisille hahmoille Hankalampaa ja sisältää enemmän laskentaa rinnakkaistuu hyvin GPU:lla tehtäväksi Hahmosta yleensä käytössä luurankomalli Skeletal animation, rigging

Implisiittiset menetelmät Implisiittisen animaation voi toteuttaa kahdella lähestymistavalla Suorassa kinematiikassa (forward kinematics, FK) lasketaan sijainnit juuresta (esim. lantio) alkaen, ja edetään lopulta sormiin ja varpaisiin Käänteisessä kinematiikassa (inverse kinematics, IK) lähdetään esim. käden sijainnista ja lasketaan, missä asennossa nivelten täytyy olla tämän tavoiteen saavuttamiseksi

Implisiittiset menetelmät FK sopii hyvin yhteen motion capturen kanssa FK on myös laskennallisesti helpompi kuin IK IK sopii hyvin tilanteisiin, joissa hahmon täytyy esimerkiksi ojentaa käsi tarttumaan johonkin esineeseen IK ei tuota esim. realistista kävelyä, joten yksi mahdollisuus on käyttää molempia FK:lla suuret liikkeet ja IK:lla yksityiskohdat

Kvaterniot Kvaterniot ovat matemaattinen konstruktio, joita käytetään esittämään 3d-avaruuden rotaatioita Kompleksilukujen laajennos neljään komponenttiin Etuja: ei gimbal lockia, 4 < 9 (matriisi), interpolointi Kvaternio on muotoa iq x + jq y + kq z + q w, tai toisin [q, q w ], missä q = [q x q y q z ] Tässä tarvittavat operaatiot: kertolasku (ks. kaava muualta), normi (pituus, kuin 4d-vektorille), konjugaatti q* = [-q, q w ] (= inverssi yhden mittaisille eli yksikkökvaternioille)

Kvaterniot Yksikkökvaternio voidaan tulkita 3d-rotaatioksi 3d-rotaatiohan on φ radiaania akselin u ympäri vastaava kvaternio q = [sin φ/2 u, cos φ/2] Rotaation sovellus pisteeseen p: lisätään p:n 4. komponentiksi 0 nyt p' = qpq*, missä * on konjugaatti ketjut: p' = rqpq*r* rotatoi ensin q:lla, sitten r:llä Rotaatiomatriisista kvaternioksi ja takaisin helppo muuntaa

Luurankoanimaatio Tyypillisin FK:n muoto on luurankoanimaatio Nivelten yhdistämät luut muodostavat hierarkian, jonka juurena on yleensä lantio Juuri (lantio) on esim. mallikoordinaatiston origossa suorassa Niveliin sisältyy asentoa suhteessa sen vanhempaan kuvaava muunnos; matriisi tai SQT (scale-quaternion-translation) Esim. säären asento saadaan lähtemällä lantiosta, kertomalla lonkkanivelen muunnoksella ja sitten polven muunnoksella Kullekin nivelelle voidaan siis laskea muunnos suhteessa juureen yhdistämällä vanhempien muunnokset Saadaan kullekin nivelelle muunnos, joka siirtää koordinaatiston nivelen kohdalle oikeaan asentoon

Luurankoanimaatio

Luurankoanimaatio Yksinkertaisimmillaan kunkin luun ympärillä on kiinteä kolmioverkko Tällöin osat eivät sovi saumattomasti yhteen Siispä usein käytetään yhtenäistä ihoa, jossa kunkin kulmapisteen sijaintiin voi vaikuttaa enemmän kuin yksi nivel (skinning) kullekin lista nivelistä painokertoimineen Kolmioverkko tallennetaan perusasennossa bind pose, tyypillisesti T:n näköinen asento

Luurankoanimaatio Nivelten perusasentoa vastaavien muunnosmatriisien (M B ) inverssit tallennetaan (ne ovat vakiomatriiseja) muunnosmatriisia voi ajatella koordinaatistomuunnoksena nivelen koordinaatistosta mallikoordinaatistoon inverssi muuntaa tällöin mallikoordinaatistosta kyseisen nivelen koordinaatistoon Tiedossa kulmapisteen sijainti v B mallikoordinaatistossa perusasennossa; tarvitaan sijainti uudessa asennossa koordinaatti on vakio nivelen omassa koordinaatistossa muunnetaan perusasennosta nivelen koordinaatistoon inverssillä ja siitä uuteen asentoon sen muunnosmatriisilla: v C = M C M B -1 v B (vain M C muuttuu joka framella)

Animaatiopätkät Toisin kuin elokuvissa, peleissä animaatiot on pakko koostaa pienistä pätkistä (clip), joita yhdistellään sopivasti syklit (kävely), toimet (heitto, kompastuminen) Aika ei välttämättä mene synkronissa todellisen ajan kanssa: nopeutus, hidastus, interpolointi pätkän aikaa kuvataan usein muuttujalla u = 0...1 (vrt. tekstuurit) pätkä voi sisältää metadataa synkronointia varten (käynnistä ääni, muuta valaistusta)

Animaatioiden yhdistäminen Usein on tarpeen animoida hahmoa monella eri pätkällä samaan aikaan: sekoittaminen interpoloimalla (blending) saman animaation keyframejen välillä sujuva vaihdos kahden animaation välillä (cross-fading) kikat, esim. eri loukkaantumisasteet välillä kävely/ontuminen Käytännössä tehdään lineaarinen interpolointi eli LERP luonnollisen näköinen tulos vaatii, että tehdään kullekin nivelelle erikseen (lisäetu: rinnakkaistuu hyvin) ei onnistu matriiseille, joten käytetään usein SQT:itä kvaternioille myös SLERP onnistuu helposti Cross-fading jatkuva/pysäytetty; lineaarinen/kuutiollinen Perusasentojen kautta kulkemalla voi pärjätä ilman sekoittamista

Kasvot Eläytymistä parantaa huomattavasti, jos hahmojen ilmeet saadaan esitettyä uskottavasti Samat tekniikat: Eksplisiittiset keyframet Implisiittinen luurankoanimaatio Luurankoversiossa voidaan käyttää kymmeniä luita pelkästään kasvoihin Myös huulten synkronisointi puheeseen tärkeää Äänteitä kymmeniä, joten pitää yksinkertaistaa

Käänteinen kinematiikka IK:ssa aloitetaan rajoitteista: yleensä hierarkian lehtisolmun sijainti ja suunta tunnetaan, ja täytyy selvittää muiden luiden asennot, joissa rajoite toteutuu Analyyttisissä menetelmissä ratkaistaan tilannetta kuvaavia yhtälöitä, mutta ne eivät toimi aina Iteratiivisissa menetelmissä etsitään likimääräisiä ratkaisuja kokeilemalla

Analyyttinen IK Jos niveliä on vähän, tilanne voidaan kuvata yhtälöillä, jotka voidaan ratkaista Esim. yksittäinen käsi Ihmisen nivelten rajoitteet täytyy ottaa huomioon: käsi ei taivu miten tahansa Yhtälöillä ei välttämättä tasan yhtä ratkaisua Kaikkiin asentoihin ei pääse (ratkaisua ei ole) Joihinkin asentoihin ratkaisuja on äärettömästi

Iteratiivinen IK Iteratiivisia menetelmiä on monenlaisia Esimerkki: Cyclic coordinate descent (CCD) Aloitetaan hierarkian viimeisestä luusta Käännetään se osoittamaan kohti kohdetta Edetään hierarkiassa ylöspäin, ja käännetään seuraava luu osoittamaan kohti kohdetta Näin edetään juureen asti; sitten aloitetaan taas alusta ja iteroidaan kunnes asento on löytynyt Välivaiheita ei piirretä

Yhdistelmät Kuten ehkä esimerkistä huomattiin, IK:n käyttäminen koko kehoon voi tuottaa epäluonnollisia tuloksia FK ja IK voidaan yhdistää monin tavoin Esim. alkuasento FK:sta, ja tarkka käden ja jalan sovitus maastoon ja esineisiin IK:sta IK:ssa voidaan rajoittaa ylempänä hierarkiassa olevien nivelten kääntymistä

Motion capture Pelien budjettien kasvaessa elokuvista tuttu motion capture -tekniikka on tullut suosituksi Studiossa näyttelijään kiinnitetään esim. valopisteitä, joita havainnoidaan kameroilla Saadaan valopisteiden 3d-sijainnit Jos valopisteet vastaavat luurankomallin luita, voidaan FK:n avulla helposti animoida erilaisia hahmoja Tulos hyvin luonnollisen näköinen

Motion capture

Animaation lisäksi Hyvältä näyttäviin pelihahmoihin tarvitaan nykyään muutakin kuin pelkkä animaatio Hiukset lyhyet voi tehdä esim. tuhansilla polygoneilla, joista jokaisen tekstuurissa useita hiuksia pitkissä hiuksissa tarvitaan fysiikkaa Vaatteet: fysiikka + luurankoanimaatio Iho: subsurface scattering olennainen Silmät jne.

Elokuvamaisuus Elokuvamaisuus (engl. cinematography) on elokuvien kuvaamisen tiedettä ja taidetta Peleissä pyritään usein elokuvamaiseen ilmaisuun ja tunnelmaan Esimerkiksi kameran tekniikasta johtuvaa sumeutta lisätään peleihin tarkoituksellisesti Kamerakulmien automaattinen valinta on erittäin hankala ongelma

First person Kaiken kaikkiaan kameralla on 6 mahdollista vapausastetta: sijainti (x, y, z) ja suunta (yaw), kallistuma (roll), nousukulma (pitch) Yksinkertaisin kuvaustapa on first person: näytetään se, mitä avatar näkee FP-kameralla yleensä 3-5 vapausastetta x ja z sekä suunta (y-akselin ympäri) lähes aina yleensä myös y ja nousukulma

First person Liikettä ei kannata toteuttaa vakionopeudella, vaan kiihtyvyyden avulla Jos kääntymis- tai liikkumisnappi on pohjassa, nostetaan oikean suuntaista nopeutta (maksimiin asti) Jos nappi ei ole pohjassa, hidastetaan vähitellen esim. kertomalla vakiolla (<1)

Third person Third person -kamera seuraa avataria sen ulkopuolelta, jolloin kuvakulman valinta saa elokuvamaisia piirteitä Avatar näkyvissä: animointi vs. samastuminen Elokuvissa kuvakulmat voidaan suunnitella etukäteen ja kuvaaja on ajatteleva ihminen Ei toimi peleissä Automatiikka tai pelaajan ohjaama kamera Toisaalta teknisiä rajoitteita kameran sijainnille ei ole

Third person Kamera sijoitetaan yleensä avatarin taakse yläpuolelle usein keskitetään avatarin katseen suuntaan, jota taas ohjataan hiirellä/tatilla kamera voi joutua seinään, välissä voi olla este Nopea liike saa kameran piirtämään laajan kaaren, mistä voi seurata matkapahoinvointia Ratkaisu: kohdistuspiste on vain tavoite, jota kohti kamera kääntyy riittävän hitaasti Interpoloidaan kulmia pallon pinnalla (SLERP)

Kameratyypit Elokuvallista ilmaisua varten pelintekijälle voi olla avuksi hyödyntää elokuva-alan (suhteellisen) pitkää kokemusta Kameratyyppien matkiminen: kiinteä, dolly, nosturi, steadycam Kuvakulmat: lähikuva, rintakuva, jne. Kameratekniikka: aukkoluvut, polttovälit jne. Myös muita yhteneväisyyksiä kuin kamerat: äänimaailma, valaistus,...

Liikkuva kamera Yksi mahdollisuus on tehdä liikkuva kamera, jonka sijainti päätellään dynaamisesti olennaisten asioiden pitää olla ruudun alueella asiat eivät saa peittää toisiaan liikaa tärkein kohde suunnilleen keskellä Ei pidä kuitenkaan liikuttaa ja vaihtaa kameraa turhaan, jottei pelattavuus kärsi esim. kameran vaihtuminen muuttaa ohjaussuuntia

Liikkuva kamera Liikkuvaa kameraa varten valitaan tärkeät kohteet: avatar, muut lähellä olevat hahmot ja tärkeimmät vuorovaikutukselliset esineet Etsitään kameralle etäisyys, jolla kohteiden rajauslaatikot ovat kokonaan kuvassa Näin saadaan pallopinta, jolta voidaan valita kameran sijainti esim. minimoimalla kohteiden peittoon jäämistä Tosin silloin yleisin kulma olisi suoraan ylhäältä