Jump to content
P4VV37

Mój prosty "coockbook": Python w Maya, 3Ds Max i Blender

Recommended Posts

Cześć

 

Nie jestem pewien, czy w dobrym miejscu wstawiłem tą wiadomość. Właściwie nie mam pytania, więc pewnie nie... Proszę o feedback w tej sprawie :)

 

W związku ze swoją pracą dyplomową wykonałem Pythonowe skrypty wykonujące (prawie) te same zadania w trzech różnych aplikacjach: Maya, Max i Blender.

 

W zamierzeniu chciałem się po prostu nauczyć skryptowania w Pyhonie dla tych aplikacji przez stworzenie skryptu wykonującego podstawowe, najczęściej wykorzystywane akcje (Operowanie obiektami, tworzenie instancji, materiałów, animacji, zmiana ustawień i parametrów wszelkiej maści). Dodatkowo stworzyć coś w rodzaju blenderowego coockbook, na fragmentach kodu z którego mógłbym w przyszłości budować inne skrypty.

 

Być może dla kogoś jeszcze te skrypty będą użyteczne. Poza tym, z pewnością są operacje, które można wykonać bardziej efektywnie, niektóre rzeczy na pewno można zrobić lepiej i pewnie istnieją w skryptach jakieś błędy. Szczególnie niepewny jestem skryptu do Blendera, którego dość słabo znam. Więc liczę na to, że ktoś zwróci na takie rzeczy uwagę i pomoże mi go poprawić.

 

Starałem się zamieścić komentarze wszędzie gdzie tylko byłem w stanie jakiś komentarz wymyślić :) Tak więc kod powinien być dość czytelny i łatwy w zrozumieniu.

 

Na marginesie, myślę też, że nie byłoby mi trudno na bazie tego wszystkiego zbudować prosty tutorial, taki wstęp do pisania kodu w Pythonie do każdego z tych programów, jak uruchamiać skrypty, podstawowe informacje o API itp. Jeśli by się okazało, że to dobry pomysł i skorzystałby z niego ktokolwiek.

Share this post


Link to post
Share on other sites

Fajne cwiczenie. Pare uwag/pomyslow na rozwoj

 

1. https://github.com/p4vv37/3D_Software_and_Python/blob/master/script_Blender/Script_Blender.py#L338

Nie rozumiem dlaczego trzymasz modele inline. Czy chodzi o prezentacje struktury ktore sa pozniej konsumowane przez api? Jezeli tak to wybral bym jakies mniejsze modele.

 

2. Fajnie by bylo gdybys wyexportowal wyzszego poziomu api/interfejs ktore operowalo by na roznych silnikach (blender/maya/max).

Czyli logika przykladow byla by napisana raz. Rozumiem ze wybiega to poza wstepne zalozenia. Ale mysle ze fajne zadanie na przyszlosc. Plus jakbys napisal taki 1:1 wrapper mysle ze mialby spora popularnosc. Gdybys potrzebowal pomocy, chetnie dolacze.

Share this post


Link to post
Share on other sites

Rzeczywiście, widzę, że model na 130 linii może nie był dobrym pomysłem... :) Taki powstał kiedy tworzyłem scenę którą odtwarzałem potem skryptem, nie chciałem zaciemniać kodu wczytywaniem jej z jakiegoś pliku, no i tak już zostało, ale to rzeczywiście przerost formy nad treścią. To, ze są dwie siatki: prostsza i trudniejsza to też efekt takiego nie mającego wiele sensu pomysłu, który miałem na początku, żeby prostą z siatek tworzyć linia po linii wywołując polecenia z odpowiednimi argumentami, co widać w maxie, bardziej skomplikowaną, w wypadku której byłoby to juz niezłą mordęgą, za pomocą jakiejś pętli. W pozostałych programach już to porzuciłem.

 

Stworzenie takiego API to byłby fajny projekt do zabawy, w sumie spoko projekt. Jest trochę problemów: sporo operacji, sposób działania modyfikatorów, osie itp działa mocno inaczej w różnych programach, więc na pewno nie wszystko dałoby się prosto przełożyć... Ale tymi problemami można by się martwić kiedy się do nich dojdzie, jednakie, zgodne z Pythonowym podejściem API w sumie byłoby całkiem użyteczne...

Można też zamiast tego stworzyć port pymel na pozostałe programy, on zdaje się być "pythonowo" napisany, nie znam go dość dobrze, ale wydaje się bardzo wygodny i nie trzeba by było wymyślać koła na nowo.. pymel4Max, pymel4Blender :] Najpierw poznam go lepiej, ale to by mogła być lepsza opcja i sporo osób nie musiałoby się uczyć wszystkiego od nowa.

Share this post


Link to post
Share on other sites

Taki wrapper napisany tylko w Pythonie i tak musiałby chyba spowolnić przynajmniej trochę wszystkie operacje, więc chyba szybkość nie jest kluczowa

Share this post


Link to post
Share on other sites

Przyglądam się temu pomysłowi.

Trop pymela był tropem dobrym, bo wychodzi na to, że właściwie to on jest wrapperem tłymaczącym na maya.cmds swoje komendy: http://help.autodesk.com/cloudhelp/2016/ENU/Maya-Tech-Docs/PyMel/dev.html

Jeszcze nie przyglądałem się temu jak kod dokładnie wygląda, ale jest dostępny na GitHub i robię to.

Jeśli dobrze rozumiem licencję, to modyfikowanie i udostępnianie kodu jest ok, czy się mylę?

 

Tak więc prawdopodobnie znacząco ułatwia to sprawę, bo ten kod to byłaby bardzo porządna podstawa do stworzenia czegoś takiego.

Więc właściwie można by zacząć "rozbierać" ten kod i budować coś na jego podstawie. Przyjrzę mu się bliżej niedługo,

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

We are using cookies. Read about our Privacy Policy