mathix Napisano 23 Luty 2008 Napisano 23 Luty 2008 Ostatnio chciałem sobie napisać kilka skryptów do Mayi, zrealizować pomysły, które chodziły mi po głowie od dłuższego czasu. Jako, że jeśli chodzi o programowanie, zostałem przyzwyczajony do tego, iż edytor mnie rozpieszcza, zacząłem szukać dobrej metody skryptowania pod Mayę. Maya oferuje dwa równoważne pod względem możliwości języki skryptowe: MEL (Maya Embedded Language) oraz od niedawna python. Jeśli chodzi o IDE dla MEL-a to niekwestionowanym liderem w tej dziedzinie jest produkt firmy Digimation - MEL Studio Pro. Niestety od pewnego czasu twórcy nie nadążają z aktualizowaniem pluginu– dzisiaj, gdy na dobre przyjęła się Maya 2008, dostępne jest MEL Studio pod ósemkę (czyli wersję o numer wcześniejszą). Na szczęście przeszukując internet można trafić na kilka ciekawych, zewnętrznych i darmowych edytorów: Cutter Edytor z doskonałym wsparciem dla MEL-a. Cutter powstał jako edytor tekstowy ułatwiający pisanie rendermanowskich plików Rib i shaderów w RSL-u, jednak autor rozszerzył możliwości programu o kolorowanie składni dla kilku języków w tym MEL-a. Oprócz kolorowania składni Cutter posiada dość prymitywny, ale całkiem skuteczny mechanizm podpowiadania. Po kliknięciu RMB na komendę MEL-a pojawia się lista parametrów w skróconych i rozszerzonych formach. Poza tym, trzymając CTRL i klikając LMB wywołamy okno przeglądarki internetowej z otwartą odpowiednią stroną dokumentacji Mayi, co pozwala w miarę szybko sprawdzić działanie danej komendy. Rozwiązania te co prawda bledną przy zaawansowanych możliwościach takiego Visual Studio dla C#, ale to i tak lepsze niż ciągłe skakanie między dokumentacją i edytorem. Ponadto program pozwala na wysyłanie skryptu bezpośrednio do Mayi i wykonanie go. Jedyne co trzeba zrobić to wywołać komendę: commandPort -n ":2222" i ustawić odpowiednie parametry w samym Cutterze. http://www.fundza.com/ Mapy + Crimson Editor Innym ciekawym rozwiązaniem, oferującym wsparcie zarówno dla MEL-a jak i pythona jest Mapy. Program pozwala na wysyłanie danych z jednego z popularnych edytorów tekstowych wprost do Mayi. Mapy ładnie integruje się z Crimson Editorem, pozwalając zarówno wysyłać skrypt do Mayi jak i odbierać, to co zwróci konsola. Sam edytor tekstowy oferuje kolorowanie składni MEL-a niestety nie posiada mechanizmu podpowiadania. Mapy współpracuje również z: SciTE, UltraEdit, Textpad, Notepad++ i innymi, które mają odpowiednie możliwości wywoływania zewnętrznych programów. http://rodmena.com/mapy/ UltraEdit Do tego programu istnieje plik umożliwiający kolorowanie składni i ubogi mechanizm intelli sense. UltraEdit współdziała z mappy, wobec czego możliwa jest bezpośrednia komunikacja z Mayą. http://www.highend3d.com/maya/downloads/tools/syntax_scripting/22.html Python MEL jak na specjalistyczny, mało popularny język programowania, posiada całkiem ładny zestaw narzędzi, uprzyjemniających pisanie w nim skryptów. Co natomiast z pythonem? O ile o MEL-u słyszeli tylko graficy pracujący w Mayi, to o pythonie słyszał cały informatyczny świat. Wobec tego ten język powinien być znacznie lepiej wspierany, od MEL-a. Niestety o ile wsparcie dla samego pythona jest ogromne, o tyle z programowaniem pod Mayę nie jest już tak różowo. Właściwie jedynym problemem jest fakt, że Autodesk do swojej wersji interpretera pythona nie dołączył plików .py, dzięki, którym IDE tego języka mogłyby obsługiwać mechanizm intelli sense, dla komend Mayi. W rezultacie przykładowo instalując eclipse i pydev, programujemy sobie w luksusowych warunkach, tak długo jak nie korzystamy z przestrzeni nazw maya. Kiedy zachodzi konieczność wykonania jakichś akcji w Mayi, cofamy się o dziesięć lat i zaczynamy skakać między dokumentacją oraz edytorem. Pisząc o Mayi i pythonie nie sposób pominąć projektu pymel. Implementacja pythona, stworzona przez Autodesk, to zwykły wrapper MEL-a i Maya API. Oznacza to, że komendy są zaimplementowane w sposób strukturalny, co absolutnie nie wykorzystuje podstawowej przewagi pythona nad MEL-em – obiektowości. Fakt ten nie spodobał się Chadrikowi z Luma Pictures, który stworzył i udostępnił za darmo moduł ubierający w wygodne obiekty, wszystko to co kryje się pod maską Mayi. W ten sposób funkcja tworząca na przykład kamerę zwraca referencję do obiektu, który ową kamerę reprezentuje, co ułatwia późniejsze manipulowanie obiektem i nie zmusza do koniecznej w MEL-u zabawy z nazwami. http://code.google.com/p/pymel/ Który z edytorów i języków polecam? Cóż, faktem jest, że nauczenie się pythona dla Mayi w wersji Autodeska, wymaga znajomości MEL-a, głównie dlatego, że jest o nim więcej materiałów i efekty naszych działań są w konsoli zwracane właśnie w tym języku. Wprawdzie programowanie w pymel-u pozwala się w pewnym stopniu odciąć od MEL-owskiej filozofii, ale aby tak naprawdę zrozumieć co się dzieje pod maską Mayi, trzeba zrozumieć język, na którym aplikacja jest zbudowana. Dlatego najpierw radzę nauczyć się MEL-a (do gustu przypadło mi to co oferuje Cutter), a później pythona (tutaj podoba mi się rozwiązanie eclipse + pydev). UPDATE: Pymel + KomodoEdit 4.2 Z moich obserwacji wynika, że eclipse + pydev nie radzą sobie zbyt dobrze z analizowaniem bibliotek pymela, w związku z tym nie otrzymujemy kochanego przez programistów mechanizmu autouzupełniania. Z początku myślałem, że to wina samego pymela, ale jak się okazuje darmowy edytor KomodoEdit, radzi sobie z tą biblioteką dość ładnie. Siła KomodoEdit polega na tym, że stoją za nim pieniądze. To darmowe IDE, jest bowiem uboższą wersją pythonowego kombajnu Komodo IDE. Aby włączyć autouzupełnianie dla pymela wystarczy wejść w Edit > Preferences > Languages > Python i w Additional Python Import Directories dodać folder z pymelem. Niestety nie działa to dla funkcji z modułu ctx (np. createPolyConeCtx() odpowiednik melowego polyCone ) . Niemniej dla klas takich jak Vector dostajemy pełne wsparcie. 2
mathix Napisano 24 Luty 2008 Autor Napisano 24 Luty 2008 Thx SYmek, powiedziałbym stare ale jeszcze jare.
SYmek Napisano 24 Luty 2008 Napisano 24 Luty 2008 Cieszę się, że cutter przypadł Ci do gustu, kiedyś o nim rozmawialiśmy ;). Dla mnie ma więcej wspólnego z Vexem i Houdinim, które również wspiera (powiedziałbym nawet, że bardziej niż Mayę...;), w każdym razie nawet nie zauważyłem, że obsługuje również MEL... )
floo Napisano 24 Luty 2008 Napisano 24 Luty 2008 a ma ktoś może jakieś dobre info(więcej) co do pythona? Coś sprawdzonego(linki, książki tip), godnego polecenia... pozdro!
SYmek Napisano 24 Luty 2008 Napisano 24 Luty 2008 http://www.awaretek.com/tutorials.html nie wszystkie jeszcze działają, ale i tak jest tego sporo... pozdr., skk. PS: Za jakiś czas zapraszam też na forum3d.pl, będzie tam kącik pythonowski dotyczący wykorzystania go w Houdinim, Nuke'u, Mai. Na przykład do przenoszenia geometrii z dowolnymi atrybutami między pakietami...
mathix Napisano 24 Luty 2008 Autor Napisano 24 Luty 2008 SYmek: Cutter to dobry program, ma trochę przestarzałą filozofię, ale można do tego przywyknąć. Nuke ma support dla pythona? Heh nawet nie wiedziałem. Chyba się będzie trzeba na niego przesiąść z Fusion to nie będę musiał uczyć się LUA :P Tematyka przenoszenia geometrii bardzo mnie ciekawi i z pewnością będę do tego pythonowskiego kącika zaglądał. Dzięki za info :)
bareja Napisano 25 Luty 2008 Napisano 25 Luty 2008 Cieszę się, że cutter przypadł Ci do gustu, kiedyś o nim rozmawialiśmy ;). Dla mnie ma więcej wspólnego z Vexem i Houdinim, które również wspiera (powiedziałbym nawet, że bardziej niż Mayę...;), w każdym razie nawet nie zauważyłem, że obsługuje również MEL... ) dla mnie z RSL i RIB
mathix Napisano 3 Kwiecień 2008 Autor Napisano 3 Kwiecień 2008 Ciekawy artykuł o wykorzystaniu graficznych powłok do skryptowania w Mayi. http://www.snolan.net/category/python/ Wprawdzie rozwiązanie zaprezentowane tutaj, nie jest jakimś idealnym rozwiązaniem problemu braku intelli sense, ale myślę, że może się w pewnych sytuacjach przydać.
piotrek Napisano 3 Kwiecień 2008 Napisano 3 Kwiecień 2008 dla mnie z RSL i RIB A teraz SYmek odpowie, że VEX i RSL to niemalże to samo :)
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się