Itse väsäisin varmaan script controllereilla.
Eli jos mulla on kaksi objektia scenessä, cog01 (10 hammasta) ja cog02 (20 hammasta) XY tasolla, niin laitan cog02 Z rotationiin Float Script controllerin ja siihen yksinkertaisimmillaan seuraavan:
rotaatio = ($cog01.rotation.controller[3].value)*(10.0/20.0)*(-1.0)
DegToRad(rotaatio)
jossa ensimmäisten sulkujen sisältö hakee cog01 Z rotaation asteina, toinen laskee kierrosnopeuden ja kolmas kääntää suunnan.
Alempi rivi muuttaa asteluvun radiaaneiksi.
Pitää käyttää tuossa kierrosnopeussysteemissä nimenomaan esim. 10.0 arvoa, eikä 10 ainakin toisena lukuna.
Maxi ymmärtää luvun 10 kokonaislukuna ja kusee kaiken. Voit myös käyttää tilalla jakolaskua (10/20 as float) jolloin taas toimii oikein.
Hieman selkeämpänä menisi sitten tietysti ehkä näin (rotaation saa näköjään suoraan radiaaneinakin). Jos ei ole aivan älyttömän montaa ratasta, niin curve editorilla controllerin kopioiminen ja muokkaaminen menee aika nopeasti.
edellinen = $cog01
edellinen_hampaat = 10
hampaat = 20
(edellinen.rotation.Z_Rotation.controller.value)*(edellinen_hampaat/hampaat as float)*(-1.0))
Sitten vain animoit ensimmäistä ratasta ja kaikki toimii automaattisesti. Ei tosin toimi interaktiivisesti (mutta päivittyy framesta toiseen siirryttäessä, eli timelinea voi skrollata ja nähdä mitä tapahtuu), ellet käy jokaisessa script controllerissa create variable -> assign controller ja valitse edellisen rattaan Z Rotaatio trackia