-
data publikacji: 03.02.2009
Tłok i zawory
kategoria: Animacja, Pliki, Tutoriale, Xpresso autor: ndru
Ten tutorial zajmuje się skryptowaniem tłoka czterosuwowego silnika. Zakładam że znasz już podstawy pracy w xpresso. Nie ma też sensu omawiać modelowania tłoków i innych elementów, jako że ilość różnych kształtów jest ogromna.
Udostępniam jednak model, na którym powstawał ten tutorial. Zwróć uwagę na pozycje pivotów i ich rotacje - to bardzo istotne.Download
Tutorial
Żeby dokładnie zaprogramować ruch tłoka za pomocą xpresso niezbędne będzie nieco matematyki. A dokładnie twierdzenie kosinusów. Między trzema punktami: osią wału korbowego, zaczepem tłoka i zaczepu korbowodu - tworzy się trójkąt o bokach a = wykorbienie wału korbowego, c = długość korbowodu i b = odległość tłoka od osi wału - tej wielkości szukamy.

Znamy dwie wartości - długość korbowodu i wykorbienia wału korbowego: a i c. Nie znamy b. Wykorzystajmy twierdzenie kosinusów, żeby go obliczyć:

Taki wzór możemy już wprowadzić do noda COFFEE. Żeby jednak wszystko było jasne, potrzebne są kroki pośrednie. Najpierw kilka nodów, które sprawią, że wał korbowy będzie się obracał.
Tworzymy null, który będzie sterował całym segmentem. Dodajemy cztery wartości User Data: Korbowod (real), Wykorbienie (real), Phase (integer, <0-3>), oraz RPM(integer, (0,nieskończoność) ). Będziemy tych danych używać bezpośrednio w skrypcie.
Teraz stwórz wspomniane wcześniej nody, które bądą napędzać korbowod. Zaczynamy od nulla, który stworzyłeś w poprzednim kroku, otwieramy port RPM, Następnie mnożymy tą liczbę przez 360 - czyli pełny obrót i dzielimy przez 60, czyli w efekcie mnożymy przez 6. Następnie wynik dzielimy przez liczbę klatek na sekundę, otrzymując wartość obrotu w jednej klatce. Range mapper przyjmuje jako Input wartość Frame (klatka), a output upper to po prostu 1 (lower = 0). Kopiujemy obiekt cylinder w skrypcie xpresso, żeby wygodniej podłączyź user data "Phase". Mnożymy wartość "Phase" przez 90 otrzymując przesunięcie, a następnie dodajemy do wartości otrzymanej z range mappera. Układ ten będzie obracał korbowodem z prędkością podaną w RPM.
Następnie output poprzedniego układu podłączamy do noda degree, który zamieni stopnie na radiany (ustaw to we właściwościach noda). Tą wartość podłączamy do rotacji B Wykorbienia, otwieramy też port rotation B w obiekcie Wykorbienie, żeby podać ją do nodu Trigonometric, który obliczy cos kąta (musisz ustawić cos w atrybutach nodu). Tworzymy kolejną kopię cylindra (dla wygody) i otwieramy porty Korbowod i Wykorbienie, które podadzą te wartości do nodu COFFEE, w którym tworzymy porty wejściowe cosB, c i a, oraz nod wyjściowy b. Wartość b podłączamy do pozycji Y obiektu tłok.
Przyjrzymy się teraz nodowi COFFEE. Kliknij na node coffee, a następnie w atrybutach otwórz editor COFFEE. Jest to może przesada używać tak poważnego noda, ale dla mnie jest to najwygodniejsza metoda zapisywania skomplikowanych wzorów. W zapisie COFFEE (identyczny jak dla większości języków pogramowania) wzór, który otrzymaliśmy w kroku 2 wygląda tak: b = a * cosB + sqrt( pow(a,2) * pow(cosB,2) - pow(a,2) + pow(c,2) );
Jeśli korzystasz z modelu udostępnionego na tej stronie wszystko juz powinno działać. Małe wyjaśnienie jak to działa. Wykorbienie jest poruszane przez skrypt xpresso, korbowod jest "dzieckiem" wykorbienia, więc obraca się razem z nim. Korbowod celuje osią Z w zaczep tłoka. Tłok jest poruszany poprzez skrypt xpresso - dzięki matematyce, zaczep tłoka znajduje się w idealnej pozycji. Skrypt pozwala na używanie modeli o różnych wielkościach - wystarczy jedynie zmienić odpowiednie wartości w user data.
Zakaz kopiowania artykułu, bez zgody autora!








