Visa ett inlägg
Gammal 2021-01-27, 22:04   #82
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 716
Standard

(Fortsättning från förra inlägget p.g.a. att jag nådde gränsen för max antal tecken.. )

----

Det andra som folk brukar förenkla (antagligen på grund av bristande kunskap om slidstyrningar ) är att låta tärningens position i kulissen vara fix och driva tärningsstångens rörelse därifrån. Men detta är inte helt sant. För om man väl börjar kika noga på ånglok i rörelse (eller som jag, detaljgranskat och lekt så mycket med att rigga slidstyrningen att man insett att så måste vara fallet) så inser man att tärningen faktiskt rör sig något upp och ned i kulissen under ett drivhjulsvarv. Detta beror på att tärningsstången hänger ihop med omkastningsveven genom lyftlänken. Omkastningsvevens position är fix, den bestäms med hjälp av omkastningsveven inne i hytten och låses fast med en hake. Det gör att hela tärningsstångens rörelse blir begränsad av att den är upphängd i lyftlänken. För att allt ska fungera måste därför tärningen röra sig något i kulissen för att kompensera denna låsning.

Detta började jag att hitta en lösningsväg på genom att jag insåg att man borde kunna driva tärningsstångens rörelse från kulissens teoretiska mittpunkt, istället från tärningens position i kulissen. Så istället för att armaturens första ben utgår ifrån en punkt på kulissen som de flesta verkar göra, så börjar första benet i den teoretiska mittpunkten till kulissbågen och går sedan till tärningen och därefter vidare till tärningsstången. Detta var en bra start, men sedan fastnade jag med samma problem som ovan, att jag på något sätt måste begränsa tärningsstångens rörelse på mitten av ett ben, likt hur försprångsstången B-D begränsas av punkten C som ligger mitt på benet.


Efter att ha övergett idén om att lösa det generella problemet med ekvationssystem började jag istället utforska Blenders verktyg för IK och insåg att det faktiskt fanns verktyg för att låsa ett bens rotation i förhållande till dess förälder, samt att man kan ha flera IK-kedjor i samma armature. Detta tillsammans med en idé om att man kan approximera punkten C:s horisontellt låsta rörelse som en cirkel med tillräckligt stor radie fick alla bitar att falla på plats.

Min lösning på det generella problemet ovan blir alltså:
* Skapa en armature med ben A->B->C->D->E
* Lägg till en IK constraint på D->E med en Empty som target
* Lägg till en IK Lock på benet C->D så att B->C->D alltid hänger ihop som om det vore ett ben (Hittas under Bone properties>Inverse Kinematics när man är i Pose mode)
* Extrudera ett nytt ben ifrån punkten C och dra det nedåt en bra bit
* Skapa en Empty vid spetsen på det nya benet och lägg till en IK på benet och peka på Emptyn

Voila! Nu kommer punkten C att vara begränsad av att den alltid måste vara på samma distans från Emptyn som ligger långt ned. Den kommer alltså att bara kunna röra sig i en cirkel runt den punkten. Naturligtvis kommer C att åka nedåt om den flyttar sig långt ifrån sin ursprungspunkt, men ju längre man gör hjälpbenet, ju mindre kommer felet att bli. Tycker man om trigonometri kan man roa sig med att räkna ut hur stort felet blir för en viss längd på benet. Detta är fortfarande en approximation, men för detta ändamål fungerar det riktigt bra då punkten C inte rör sig så långt från sin utgångspunkt. Dessutom är det inte särskilt svårt att sätta upp denna rigg heller.

Dessa idéer möjliggör faktiskt att rigga hela Walscharts slidstyrning.
Jag använder en armature som utgår ifrån kulissens teoretiska mittpunkt (mittpunkten är parent:ad så att den roterar runt kulissens rotationspunkt som ju drivs av excenternstången från drivhjulet) med först ett ben till tärningen. Sedan är tärningsstången uppdelad i två ben, först fram till lyftlänken och sedan vidare till försprångsstången. Det andra benet har en IK Lock för att sitta ihop med det första så att de bildar ett ben. Förprångsstången är uppdelad på samma sätt med ett ben ned till slidstången och ett från slidstången ned till försprångslänken med IK Lock. Sedan ett sista ben för själva försprångslänken till tvärstycket med en IK constraint med en Empty som target vilken i sin tur får rörelsen från tvärstycket. Därefter använder jag tricket med ett långt hjälpben som låser slidstångens rörelse horisontellt som jag beskrev ovan, vilken ju också har en IK constraint till en Empty. Till sist har vi lyftlänken som är ett ben som utgår ifrån de båda benen som utgör tärningstången. Denna har en IK med en Empty som target. Denna Empty är ju fästpunkten för lyftlänken i omkastningsveven och denna kan man sedan parenta till omkastningsaxelns rotation och här kommer nu det smått fantastiska:
Med denna setup, kan man välja fyllning enbart genom att vrida omkastningsaxeln, precis som i verkligheten! Tyvärr stödjer ju inte Trainz att kunna ställa slidstyrningen i spelet, men med denna rigg kan man ju i alla fall exportera en korrekt slidrörelse för en viss fyllning.


Animation på hela härligheten, tärningen i toppen på kulissen, vilket den är vid backgång med SJ Sa (även om hjulen snurrar framåt på animationen... ). Notera drivningen till hastighetsmätaren på bakre drivhjulet!


Närbild på slidstyrningen, nu är med tärningen i botten på kulissen vilket betyder att loket driver framåt

Notera hur tärningen rör sig något upp och ned i kulissen, precis som den ska!

En bra sak till med denna lösning är att den utan vidare stödjer alla mindre variationer av Walschaerts slidstyrning, som där man kan ha lyftlänken fäst på tärningsstången mellan tärningen och försprångsstången (som på Sa) eller bakom kulissen (se bifogad blendfil), eller där slidstången kan vara fäst i försprångsstången över fästet för tärningsstången eller under som på Sa.


För er som är intresserade att titta närmare på lösningen så bifogar jag två blend-filer, en med lösningen på det generella problemet som jag visade i förra inlägget och en med hela Walschaerts slidstyrning typ så som den är uppsatt på min Sa, men efter ritning på något amerikanskt(?) lok där lyftlänken är fäst bakom kulissen. Armature:en är dock exakt likadan som på min Sa.
I den första filen kan man testa genom att i pose mode röra på benen TopBlack och BottomBlackTarget och se hur riggen sköter sitt jobb med att placera punkten C.
I Walschaerts-filen, starta hjulanimationen med mellanslag och rotera sedan på Emptyn ReverseArm för att ändra fyllningsgraden och gå mellan framåt och back.


Sådär, det var all information jag ville häva ur mig denna gång. Hoppas att någon fann det intressant!
Bifogade filer
Filtyp: zip rigging_walschaerts.zip (233.6 KB, 30 visningar)
__________________
-k-
korvtiger besöker inte forumet just nu   Svara med citat