Laatikon pyöritystä

Animaatioiden tekeminen Blenderissä
Post Reply
User avatar
CosMOS
Moderaattori
Posts: 82
Joined: 13.10.2007, 23:31

Laatikon pyöritystä

Post by CosMOS »

Kuinka laatikon voi animoida kääntyilemään särmänsä ympäri? Yksi 90° käännös tosin onnistuu, jos lootan pivot-piste on reunassa. Yritin niin, että laitan boksin kääntymään 3D-kursorin ympäri. Ensin i -> LocRot, käännös särmän ympäri ja jälleen i -> LocRot. Muuten hyvä, mutta laatikon nurkka painuu käännöksessä lattian läpi! Ipo Curveista näkee, että laatikon keskellä oleva pivot-piste liikkuu vaakasuoraan käännöksen aikana, kun sen pitäisi hieman kohota nurkan varassa kääntyessään.

Image
User avatar
tuxer
ADMIN
Posts: 511
Joined: 07.10.2007, 09:27

Re: Laatikon pyöritystä

Post by tuxer »

Tuo onkin paha! Itsekin sitä jossain vaiheessa ihmettelin. Suoraan animoimalla se onnistuu seuraavasti:

Asia selkiytyy heti kun tajuaa että tuo liike koostuu kahdesta liikkeestä: laatikko kääntyy akselinsa ympäri ja yhtäaikaa se siirtyy laatikon koon verran. Eli animoimalla ensi siirtymä ja sitten rotaatio saa jonkinlaisen tuloksen. Puoliväliin tulee tietysti nosto eli itse asiassa siinä on 3 liikettä.

Täydellistä siitä ei kyllä tule eli se vähän "lipsuu" mutta muutamassa käännössä sen voi käsin korjata.

Joka tietää fiksumman tavan niin kertokoon :)

Eipäs muuten taida toimiakaan! Tulee Gimbal Lock -ilmiö :)
User avatar
tuxer
ADMIN
Posts: 511
Joined: 07.10.2007, 09:27

Re: Laatikon pyöritystä

Post by tuxer »

Tein nopeasti yhden ratkaisun joka perustuu Copy Rotation Constraintsin käyttöön. En nyt äkkiseltään parempaakaan keksi. Ohessa blend-tiedosto.

http://www.opendimension.org/blender/im ... llaa.blend
User avatar
CosMOS
Moderaattori
Posts: 82
Joined: 13.10.2007, 23:31

Re: Laatikon pyöritystä

Post by CosMOS »

Tein nopeasti yhden ratkaisun joka perustuu Copy Rotation Constraintsin käyttöön. En nyt äkkiseltään parempaakaan keksi.
Ei ole täydellinen, kuution reunat hieman muljuavat, eivätkä käänny täsmällisen tarkasti.

Täydellinen ei ole myöskään minun ratkaisuni, jonka kyhäsin pikaisesti. Avaa tiedosto, älä tee mitään äläkä valitse yhtään objektia (varsinkaan kuutiota!) ja paina ainoastaan nuolinäppäintä oikealle. Animaatio etenee frameen 241 saakka. Rullaa kuutiota edes-takaisin ja yritä keksiä ratkaisu. Kun ette kuitenkaan keksi, katsokaa ipo editorista kuution käyrät. Kikkailemallahan tuo on tehty, jokin parempi ratkaisu on varmaankin olemassa, kunhan sen keksisi.
Attachments
laatikko.blend
(110.36 KiB) Downloaded 518 times
User avatar
puuukko
Posts: 11
Joined: 12.11.2007, 12:56

Re: Laatikon pyöritystä

Post by puuukko »

Voisiko blenderin fysiikka moottorista olla apua tässä?? itse en siihen ole juurikaan perehtyny, mutta tämä ensimmäisenä tuli mieleen.
Jos jotenkin "tönäisisi" kuutiota pyörähtämään ja nauhoittaisi liikkeen "game" -> "record game pysics to ipo" nappulalla.. jos menee vähän vikaan niin hienosäätää sitten ipo-editorista.. Voi olla aika kaukaa haettua. tulipahan sanottua. :D
User avatar
tuxer
ADMIN
Posts: 511
Joined: 07.10.2007, 09:27

Re: Laatikon pyöritystä

Post by tuxer »

@Cosmos: Näppärä. Onnistuuko tuolla tuo ensimmäisen viestisi animaatio?
Voisiko blenderin fysiikka moottorista olla apua tässä?? itse en siihen ole juurikaan perehtyny, mutta tämä ensimmäisenä tuli mieleen.
Itsekin ajattelin tuota fysiikkamahdollisuutta, se voisi toimia.
BeBraw
Posts: 2
Joined: 03.12.2007, 20:28

Re: Laatikon pyöritystä

Post by BeBraw »

Tuo kyseinen tapaus onnistuu armaturen avulla. Kts. liitetiedosto. Käytännössä siinä on vain luu (keskusta nurkassa, joka on "pivot"), jonka rotaatiota animoidaan.

Jos haluaa yleisen ratkaisun (kuutio kääntyy, kun driverin sijainti muuttuu), kannattaa perehtyä IPO drivereihin. Erityisesti nuo Python-driverit ovat hyödyllisiä. Tässä tapauksessa voit käyttää esim. emptya (kuution vanhempi), jonka x,y sijainnin mukaan haetaan kuution rotaatio (x ja y) sekä sijainti (z). Rotaation saa suoraan emptyn sijainnista (pitää kertoa n. 5.1:llä bugista johtuen. En muista ihan tarkkaa arvoa.). Z-sijainti on pohjimmiltaan vain sinin huippu (neljännes sinistä.). Testailin tätä ja ratkaisu lienee muotoa

Code: Select all

sin(abs(sqrt(x**2+y**2)))+cos(abs(sqrt(x**2+y**2)))
. Tuohon pitää sitten miettiä erilaisia skaalauksia ja vaihesiirtoja, jotta sen saa osumaan täysin kohdalleen.
Attachments
kuutiotesti.blend
Kuutio-esimerkki
(304.86 KiB) Downloaded 504 times
User avatar
Sienikasvusto
ADMIN
Posts: 237
Joined: 26.07.2007, 23:19

Re: Laatikon pyöritystä

Post by Sienikasvusto »

Ilmeisesti foorumillemme on pesiytynyt matemaatikko kun noin vaikeita kaavoja laskettelee tuosta vain. :D Huom, huom: 4 ihmistä ratkoi probleemia eikä onnistunut!
User avatar
CosMOS
Moderaattori
Posts: 82
Joined: 13.10.2007, 23:31

Re: Laatikon pyöritystä

Post by CosMOS »

tuxer wrote:@Cosmos: Näppärä. Onnistuuko tuolla tuo ensimmäisen viestisi animaatio?
Ei se ratkaisuni oikein hyvä ole. Ongelma on siinä, että jos kuutio teksturoidaan esim. valokuvalla UV-mappaamalla, animaatiossa paljastuu, kun boksi hypähtää aina takaisin alkuperäiseen asentoonsa. En ole kokeillut, mutta kyllä varmaan onnistuisi myös se kuvan mukainen askellus. Pitäisi vain muokata IPO-käppyrät niin, että laatikko salamannopeasti kääntyy 90° Z-akselin suhteen. Nythän se vain hypähtää Y-akselin suunnassa 90° takaperin käännöksen jälkeen.
BeBraw wrote:Tuo kyseinen tapaus onnistuu armaturen avulla. Kts. liitetiedosto.
Kyllähän se, mutta saman asian ajaa, jos kuution pivot-point olisi siinä nurkassa luun tilalla. Emptyn käyttö ei mielestäni myöskään ratkaise pulmaa. Silloin ongelma vain siirtyy, ei kuutio pyöri sen paremmin, vaikka sitä avustetaan armaturella tai emptyllä. Itsekin yritin yhdessä vaiheessa emptyillä kikkailla, mutta en onnistunut. Kerro toki, jos olen väärässä. Tai onnistuisiko jotenkin näin:
Image
Jos tuosta nyt laatikko lähtisi kääntymään punaisen viivan eli X-akselin suuntaan, se kierähtäisi Empty 4:n varassa. Käännöksen jälkeen kyseinen empty pitäisi jotenkin vapauttaa irti ipo-käyristä, jolloin kääntyminen voisi jatkua empty 2:n varassa. En vain tiedä, voiko niitä tilapäisesti vapauttaa ipo-käppyröistä. Ja puhumattakaan siitä, milloinka kuution pitäisi rullata kaikkiin suuntiin, eli joka kulmassa pitäisi olla empty.

Se laittamani ensimmäinen kuva on ehkä hieman hämäävä. Alunperin hain ratkaisua, jossa kuutiota voisi rullata mielivaltaisesti mihin tahansa suuntaan kuinka paljon tahansa. Ei siis niin, että vain ne kuvassa näkyvät pari käännöstä.

Sitten se fysiikkamoottorin käyttö. Näinköhän sekään saa kuution kääntymään absoluuttisen tarkasti särmänsä varassa? Eikö fysiikkamallinnuksessa ole nimenomaan toivottavaa, että siinä esiintyy pientä hajontaa tai satunnaisuutta.
BeBraw
Posts: 2
Joined: 03.12.2007, 20:28

Re: Laatikon pyöritystä

Post by BeBraw »

Ohessa esimerkki Python driver -ratkaisusta. Toistaiseksi se toimii oikein ainoastaan täysillä käännöillä (360 astetta) x- ja y-akseleilla mutta tuon rajoituksen voinee kiertää sopivalla tarkastelulla (esim. jaollisuus tms.).

Lisätietoa drivereista löytyy seuraavista osoitteista:
http://wiki.blender.org/index.php/BlenderDev/PyDrivers
http://www.blender.org/development/rele ... o-drivers/
http://www.blender.org/development/rele ... scripting/
http://wiki.blender.org/index.php/Relea ... ythonTools

Rotaation korjauskertoimen tulisi olla n. 5.74 edellisen 5.1:n sijasta. Tuohon löytyy tarkka kaava lähdekoodista. Pitäisi tarkistaa.
Attachments
rollingcube5.blend
Python-driver demo
(286.88 KiB) Downloaded 524 times
User avatar
tuxer
ADMIN
Posts: 511
Joined: 07.10.2007, 09:27

Re: Laatikon pyöritystä

Post by tuxer »

Ohessa esimerkki Python driver -ratkaisusta. Toistaiseksi se toimii oikein ainoastaan täysillä käännöillä (360 astetta) x- ja y-akseleilla mutta tuon rajoituksen voinee kiertää sopivalla tarkastelulla (esim. jaollisuus tms.).
Nätti ratkaisu! Toimii erinomaisesti.

PS. Tervetuloa foorumille. Ilmeisesti olet sama BeBraw kuin blenderartist-foorumilla, joten kovan luokan koodari kyseessä :)
User avatar
CosMOS
Moderaattori
Posts: 82
Joined: 13.10.2007, 23:31

Re: Laatikon pyöritystä

Post by CosMOS »

Miten tuon Python driverin oikein pitäisi toimia? En minä saanut laatikkoa pyörimään.

Kehittelin vielä yhden tavan, jolla laatikko kyllä pyörii, mutta ainoastaan yhteen suuntaan. Tiedoston avattuanne painakaa vain nuolinäppäintä oikealle...
Attachments
rullaatirullaa.blend
(125.37 KiB) Downloaded 493 times
User avatar
tuxer
ADMIN
Posts: 511
Joined: 07.10.2007, 09:27

Re: Laatikon pyöritystä

Post by tuxer »

Miten tuon Python driverin oikein pitäisi toimia? En minä saanut laatikkoa pyörimään.
Siirrät vain laatikkoa x tai y akselilla niin laatikko kääntyy reaaliaikaisesti.
EDIT: Sorry, siis sitä emptyä pitää siirtää
Kehittelin vielä yhden tavan, jolla laatikko kyllä pyörii, mutta ainoastaan yhteen suuntaan.
Onnistuu näemmä noinkin. Alkoihan näitä tapoja löytyä :)
Könni
Posts: 66
Joined: 06.01.2009, 11:13

Re: Laatikon pyöritystä

Post by Könni »

Ikivanha keskustelu mutta herrat on käsittääkseni vielä hengissä.
Pakko kysyä mikä alkuperäisen viestin kirjoittajalla oli ongelmana? Vastauksista ja niiden monimutkaisuudesta päätellen ymmärsin ongelman väärin. Haluttiinko kuutiota pyörittää keskipisteensä ympäri 90 astetta ja samaan aikaan siirtää särmänsä verran kahden muun akselin suuntaan?
User avatar
tuxer
ADMIN
Posts: 511
Joined: 07.10.2007, 09:27

Re: Laatikon pyöritystä

Post by tuxer »

Haluttiinko kuutiota pyörittää keskipisteensä ympäri 90 astetta ja samaan aikaan siirtää särmänsä verran kahden muun akselin suuntaan?
Ei keskipisteen vaan särmän ympäri.
Post Reply