blender3d.cz
http://forum.blender3d.cz/

Copy rotation - problem pri pouzivani hodnoty 'influence'
http://forum.blender3d.cz/viewtopic.php?f=6&t=8673
Stránka 11

Autor:  Kapo [ sob zář 08, 2012 10:56 pm ]
Předmět příspěvku:  Copy rotation - problem pri pouzivani hodnoty 'influence'

Pekný deň prajem, mám taký problém v Blenderi. Animujem nejakú sústavu ozubených kolies, pričom prvotné koleso sa hýbe podľa IPO krivky, pre ďalšie používam constraint "copy rotation". Keďže kolesá majú počty zubov v istom pomere, používam hodnotu "influence". Po čase som si na istom kolese vsimol niečo divné. Sústava začína tak, že pôvodné koleso má polomer r, na ňu je pripojené koleso s rovnakým polomerom a na neho nadväzuje koleso s polomerom 3r. Prvé koleso má svoju IPO krivku. Tam problém nie je, točí sa v poriadku. Druhé koleso má influence 1.00, tu som problém ešte nezbadal, točí sa normálne, kopíruje rotáciu prvého (v nastaveniach zaškrtnuté invert, aby sa točilo naopak). Pri treťom kolese s polomerom 3r som problém najprv nezbadal, ale na rovnakej osi je pripojené ďalšie koleso, ktoré bolo k tomuto priparentované. A keďže kolesá majú vo svojej výplni istý vzor, bolo ľahké zbadať, práve to priparentované koleso každú chvíľu pri prehrávaní animácie dajako divne v rotácii poskočí dozadu. Myslel som si, že je chyba v parente, preto som ho zjednotil s tým veľkým kolesom (ktoré ma zrovna taký vzor, že som to nezbadal), no tam sa chyba prejavila rovnako, tým kolesom to divne trhá. Zistil som, že ako často a veľmi to koleso skáče v rotácii závisí od influence - čím menšia hodnota influence, tým je chyba viditeľnejšia. Neviem, ako inak by som túto sústavu riešil, keďže je pri IPO dosť ťažké sa trafiť do zubov, preto mi tento spôsob prišiel veľmi vhod. Nazdávam sa, že hodnota influence funguje ako "časť uhlovej rýchlosti, tj uhlová rýchlosť objektu w2 = influence*w1). Možno to tak nefunguje. Skúšal som rôzne hodnoty, pri influence 0.01 (100 násobne menšia uhová rýchlosť) sa koleso vždy otočí asi o 10 stupňov a potom skočí na pôvodný uhol a takto skacká do konca animácie. Pri influence 0.5 som zatiaľ problém nevidel (no možno vzor na kolese spôsobuje, že to ani neuvidím), ale nechcem to vyriešiť tak, že zmenším koleso, chcem, aby to fungovalo dobre pre všetky hodnoty influence. Neviete, kde by mohol byť problém?

presne rovnaký problém rieši týpek tu http://blenderunderground.com/forums/vi ... f=2&t=6661 avšak žiadna odpoveď tam nie je :-(

Přílohy:
Poznámka: malé koliesko je animované, ďalšie má rovnaký počet zubov, problém je pri tom veľkom kolese.
gear_problem.JPG
gear_problem.JPG [ 48.96 KiB | Zobrazeno 5588 krát ]

Autor:  Kapo [ ned zář 09, 2012 12:19 am ]
Předmět příspěvku:  Re: Copy rotation - problem pri pouzivani hodnoty 'influence

Aha, našiel som v ďalšom threade na nete aj odpoveď na toto...takže čo sa deje pri "copy constraint"? zoberie sa rotácia pôvodného objektu, ale iba od -180 do 180 stupňov (tj. všetko sa moduluje na 180st. alebo pi rad). Táto hodnota sa vynásobí hodnotou influence, priráta sa pôvodná rotácia predmetu a aplikuje sa na predmet (copy rotation nič nezmení v menu po stlačení klávesy N, rotácia je stále rovnaká). Kde je tu problém? Práve pri tom intervali -180 - 180 stupňov. Ak sa totiž točí koleso, tak keď prekročí hodnotu 180 stupňov, spraví sa modulo a keď je moja influence napríklad 0.333 (1/3), tak vo chvíli keď pôvodné koleso malo 180 stupňov rotáciu, nové koleso bolo pootočené o 60 stupňov, keď je rotácia väčšia, pôvodné koleso má síce uhol otočenia 181, 182, ... stupňov ale copy constraint to zachytí ako -179, -178, ... stupňov, čiže objekt bude pootočený o cca -60 stupňov (300 stupňov), čo pri netriviálnych vzoroch na kolese môže robiť probĺem. Ba čo viac, pomocou copy constraint sa tuším bežne animujú aj kosti, tam to môže tiež spôsobovať problémy, keď počet rovín súmernosti objektu nie je celočíselným násobkom prevrátenej hodnoty influence (zároveň dané roviny samozrejme nie sú rovnobežné s osou rotácie).

Ja som si preto tento problém nevšimol pri tom veľkom kolese, lebo má tvar, ktorý je súmerný podľa rovín, ktoré su voči sebe otočené zrovna o 60 stupňov (taky 6-uholníkový vzor má to koleso), ale všimol som si to pri tom menšom kolese, ktoré má štvorcový vzor. Pri tom náhlom prechode cez 180 stupňov sa kopírujúce koleso otočí náhle o 120 stupňov. Na veľkom kolese to nič neurobilo, na malom som to uvidel, lebo na seba nepasoval vzor. Takže tak. Problém ale nie je vyriešený, vzor som síce upravil, ale takúto chybu by človek už nečakal od verzie 2.63, no nie? Jedna z možností je napísať si script, čo ja neviem...nejaké iné rady?

Autor:  Alimansan [ ned zář 09, 2012 9:46 am ]
Předmět příspěvku:  Re: Copy rotation - problem pri pouzivani hodnoty 'influence

Ahoj.
Nevím jestli to vyřeší tvůj problém ale zkusil jsem podobnou scénu převytvořit za použití constraintu Transform.
Princip je tam stejný jak jsi popsal u sebe, jen s tím rozdílem, že u transformu si můžeš vybrat jaký rozsah se má mapovat do jakého rozsahu ... asi to moc nedává smysl, ale koukni do téhle scénky a snad ti to bude k něčemu nápomocné :-)
http://www.pasteall.org/blend/16389

Autor:  Kapo [ ned zář 09, 2012 7:22 pm ]
Předmět příspěvku:  Re: Copy rotation - problem pri pouzivani hodnoty 'influence

hmm...skus si do svojho velkeho kolesa pridat nieco (do meshu) tak, aby si videl, ze to asi robi zase zle...ja som len schytil nejaky edge v tom velkom kolese, extrudoval ho dnu aby bola na kolese nepravidelnost...a teraz bolo dobre vidno, ze pri prechode z 30. snimku na 31. animacie sa deje zase to, ze zaznam rotacie prechadza cez 180 stupnov (cela animacia ma 60 snimkov a rotacia kolesa je o 360 stupnov, takze v strede je priblizne polovica)...takze to velke koleso, nie je to na nom vidno, pokial su tam len zuby, ale jak clovek do meshu prida nepravidelnost (chod do edit modu a skus napriklad mimo stredu pridat kocku, aby si to videl), tak vidno, ze ta rotacia skoci o daky kus...

ale dakujem za pokus, transform je super v tom, ze prevadza rotaciu aj na pohyb (ked sa koliesko otaca a je pripojene na rovny kus takych zubov)...bohuzial ani tu neprevedie rotaciu na pohyb o viac nez nieco v intervale -180 az 180 stupnov prenasobene hodnotou influence...ked teda chcem posuvne dvere riadene takym kolieskom, na to, aby sa komplet otvorili treba 10 otacok kolieska, tak to uz musim animovat rucne, lebo tie dvere skackaju tiez v nejakom intervali pozicii, podla toho ako nesikovne tie constraints snimaju rotaciu...

Autor:  Kapo [ stř zář 12, 2012 9:39 pm ]
Předmět příspěvku:  Re: Copy rotation - problem pri pouzivani hodnoty 'influence

nikto nic?

Autor:  Marek [ stř zář 12, 2012 10:57 pm ]
Předmět příspěvku:  Re: Copy rotation - problem pri pouzivani hodnoty 'influence

Podle mě je nejjednodušší vytvořit ty závislosti pomocí driveru. Je to jednoduchý, rychlý a můžeš si tam nastavit jakoukoli matematickou operaci...

Autor:  Marek [ čtv zář 13, 2012 1:46 pm ]
Předmět příspěvku:  Re: Copy rotation - problem pri pouzivani hodnoty 'influence

Jestli nevíš jak používat drivery, tak můžeš mrknout sem:
https://www.youtube.com/watch?v=O74Evep ... ture=g-upl

Autor:  Alimansan [ čtv zář 13, 2012 2:46 pm ]
Předmět příspěvku:  Re: Copy rotation - problem pri pouzivani hodnoty 'influence

Díky za názorné videjko.
Drivery jsem zatím nepoužíval, a popravdě jsem o nich ani moc nevěděl, a tak jsem se přiučil novému a efektivnímu způsobu jak řešit problémy tohodle typu.
Díky :emo17:

Autor:  G_Taurus [ čtv zář 13, 2012 3:28 pm ]
Předmět příspěvku:  Re: Copy rotation - problem pri pouzivani hodnoty 'influence

Marek: :emo17:

Autor:  Kapo [ pát zář 14, 2012 12:22 am ]
Předmět příspěvku:  Re: Copy rotation - problem pri pouzivani hodnoty 'influence

Strašne ďakujem, fakt veľmi užitočné, dá sa to využiť fakt všelijako...vyriešilo to dokonca ďalšiu množinu mojich problémov...díki ^_^

Autor:  Kapo [ čtv zář 20, 2012 9:01 am ]
Předmět příspěvku:  Re: Copy rotation - problem pri pouzivani hodnoty 'influence

Ešte čosi, rozmýšľal som nad tým políčkom, kde sa vpisuje niečo závislé od var. Aké rôzne funkcie tam môžem vložiť? Funguje niečo ako Power(), môžem odvíjať rotáciu od napr. derivácie, alebo odvíjať pozíciu podľa nejakej diferenciálnej rovnice?

Autor:  Marek [ pát zář 21, 2012 11:06 am ]
Předmět příspěvku:  Re: Copy rotation - problem pri pouzivani hodnoty 'influence

pokud se nepletu, tak by tam mělo fungovat vše, co jde v pythonu. když chceš použít power, stačí napsat pow(var1, var2) a dostaneš var1 na var2. ostatní funkce si můžeš dohledat, třeba v python dokumentaci: http://docs.python.org/library/math.html

Stránka 11 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/