Destroyer Napisano 16 Lipiec 2007 Napisano 16 Lipiec 2007 1. piszę sobie skrypta, który włączy dispaly override i zmieni kolor w shape nodzie dla wszystkich zaznaczonych elementów i nie idzie mi, już myślałem że mi się udało ale zmieniał dispaly override dla transform noda a nie shape, kombinowałem i chyba potrzebuję little assistance ;) to zmienia kolor transform noda, wiem co jest źle ale nie wiem jak zmiennej dać shapenoda i nie moge znaleźć rozwiązania string $selectedObiects[] = `ls -sl`; string $obiects; for($obiects in $selectedObiects) { pickWalk -d down; setAttr ($obiects + ".overrideEnabled") 1; setAttr ($obiects + ".overrideColor") 4; } 2. jak napisać skrypcior który będzie sprawdzał czy w zaznaczonych elementach są 2 określone wcześniej lub jeden z nich?
mathix Napisano 17 Lipiec 2007 Napisano 17 Lipiec 2007 1. Musisz przyciąć nazwę Transform node'a o numerek na końcu, później dodać za pomocą operatora konkatenacji stringa "Shape". Albo bardziej elegancko: użyć listRelatives i wyszukać shape nodów o odpowiednim typie (mesh), używając komendy nodeType. 2. Przelecieć listę i w dwóch zagnieżdżonych pętlach porównać nazwy ze sobą. Mogę napisać kody ale w Pythonie, bo melem się już nie zajmuję ;).
piotrek Napisano 17 Lipiec 2007 Napisano 17 Lipiec 2007 Mogę napisać kody ale w Pythonie, bo melem się już nie zajmuję . Jaki postępowiec się znalazł :p
Destroyer Napisano 17 Lipiec 2007 Autor Napisano 17 Lipiec 2007 mathix skoro już proponujesz to byłbym bardzo wdzięczny, bo sam to może znowu cały dzień przesiedze i nic z tego nie wyjdzie btw Python jest lepszy/ łatwiejszy/ wydajniejszy/ bardziej user frendly/ dający większe możliwości od MELa? czy może daje +2 do ataku na skrypt :) jak narazie to czasem coś prościutkiego w MELu uda mi sie napisać a o Pythonie to wiem tyle, że jest :D jest też w modo i Houdinim więc chyba lepiej się go uczyć
mathix Napisano 18 Lipiec 2007 Napisano 18 Lipiec 2007 I np. w Real Flow, Vue :). No MEL to język strukturalny, robiony specjalnie pod Mayę. Bazuje na C++. Python to nowoczesny język programowania wysokiego poziomu. Nie jest dedykowany do grafy, jednak można w nim programować obiektowo i o wiele łatwiej się pracuje na stringach (czy po prostu tablicach - listach). Łatwy do nauczenia - w kilka dni powinieneś sobie przyswoić tyle ile wymaga Maya (jeśli umiesz programować). Niestety w Mayce jest zaimplementowana wersja 2.4, a nie najnowsza 2.5. Poza tym wydaje mi się, że ciężko sobie przyswoić pythona for Maya, nie znając MEL-a - kompletny brak materiałów. (Chociaż zamiast MEL-a można równie dobrze znać jakiś język C podobny i idzie się połapać.) Python jest wygodniejszy, nowocześniejszy od MEL-a. Ułatwia tworzenie nieco bardziej skomplikowanych programów (programowanie obiektowe), umożliwia zastosowanie współczesnego podejścia do programowania. Na dzień dzisiejszy lepiej poznać wpierw podstawy MEL-a, a później brać się za Pythona. Zadaje 2k8 obrażeń ciętych + 2k4 obrażeń od ognia, do tego dodaje +2 do KP i +10 do PW. ;) A ja idę do c#, postaram się klepnąć jutro. 1
bareja Napisano 18 Lipiec 2007 Napisano 18 Lipiec 2007 mathix - zmień dealera :) string $selection[] = `ls -sl`; int $i; for( $i=0; $i setAttr ($selection[$i] + ".overrideEnabled") 1; setAttr ($selection[$i] + ".overrideColor") 4; string $shapes[] = `listRelatives -s $selection[$i]`; int $k; for($k=0; $k setAttr ($shapes[$i] + ".overrideEnabled") 1; setAttr ($shapes[$i] + ".overrideColor") 4; } }
bareja Napisano 18 Lipiec 2007 Napisano 18 Lipiec 2007 Witam mojego MEL-guru ;) Witam, witam :) ale jak zwykle bledy sie wkradaja:) teraz jest dobrze :P string $selection[] = `ls -sl`; int $i; for( $i=0; $i setAttr ($selection[$i] + ".overrideEnabled") 1; setAttr ($selection[$i] + ".overrideColor") 4; string $shapes[] = `listRelatives -s $selection[$i]`; int $k; for($k=0; $k setAttr ($shapes[$k] + ".overrideEnabled") 1; setAttr ($shapes[$k] + ".overrideColor") 4; } } 1
Destroyer Napisano 18 Lipiec 2007 Autor Napisano 18 Lipiec 2007 bareja wielkie dzięki za skrypcior, zaraz przetestuje w boju ;) widze, że założyłeś konto specjalnie żeby odpowiedzieć na moje pytanie :P czuje się zaszczycony ;) mathix dzięki za jasne i szczegółowe wyjaśnienie o co z tym pythonem chodzi :P łapcie reputy panowie :)
bareja Napisano 18 Lipiec 2007 Napisano 18 Lipiec 2007 fikołek, Reanimator mnie nakierował :) czasem lubie sobie cos skrobnąć ;) piotrek - znamy sie ? :)
piotrek Napisano 18 Lipiec 2007 Napisano 18 Lipiec 2007 Nie, ale widziałem na forum zza płota, że lubisz sobie pisać skrypty, pluginy i inne takie :) [edit] No i w Rendermanie coś mi tam kiedyś pomagałeś :p
bareja Napisano 18 Lipiec 2007 Napisano 18 Lipiec 2007 Nie, ale widziałem na forum zza płota, że lubisz sobie pisać skrypty, pluginy i inne takie :) czasem tak, ale tylko gdy sie nudzę ;)
mathix Napisano 18 Lipiec 2007 Napisano 18 Lipiec 2007 bareja: no chyba czas najwyższy, a polecisz jakiegoś dobrego i taniego? fiołek: problem numer II w Pythonie. Obiektowo i elegancko :P import maya.cmds as cmds class SelectionList: listFirst = [] listSecond = [] def GetSelection(self): self.listFirst = cmds.ls(selection=True) def IsInList(self, element, lst): for e in lst: if e==element: return True return False def CompareSelection(self): self.listSecond = cmds.ls(selection=True) for sel in self.listSecond: if self.IsInList(sel, self.listFirst): return True return False
bareja Napisano 18 Lipiec 2007 Napisano 18 Lipiec 2007 żarty, żarty :) hmm... :) bede czepliwy, ale wydaje wydaje mi sie ze w "zadaniu 2" :) moża wszystko zrobić z poziomu konstruktora :).
bareja Napisano 18 Lipiec 2007 Napisano 18 Lipiec 2007 piotrek, oj w prmanie dawno nie siedzialem... :( ostatnio ciagle mysle o zakupieniu wersji studenckiej, a jak tam u Ciebie z prmanem ?
mathix Napisano 18 Lipiec 2007 Napisano 18 Lipiec 2007 Z poziomu konstruktora niezbyt, bo trzeba dać użytkownikowi możliwość wyboru jednej grupy i drugiej grupy. Oczywiście można je przekazać do konstruktora, ale wtedy nie ma sensu pisać całej klasy, tylko po prostu zrobić to strukturalnie. Oczywiście w tym wypadku tak na prawdę można się bezproblemowo obyć bez pisania klasy, nawet jest to zbędne, jednak jeśli miałaby być częścią większego skryptu, to już inna sprawa.
piotrek Napisano 18 Lipiec 2007 Napisano 18 Lipiec 2007 Nic nie rozumiem z ego, co piszecie w tym Pythonie. Już dawno miałem się zabrać za niego, ale jakoś nie wyszło. Może nowy Houdini mnie do tego zmobilizuje. mathix - od dawna męczysz Pythona? bareja - leży gdzieś na półce i się kurzy ;]
Destroyer Napisano 18 Lipiec 2007 Autor Napisano 18 Lipiec 2007 przetestowałem skrypta i działa :) jupi zmieniał kolory transform noda więc wywaliłem 2 linie i jest już tak jak sobie wymarzyłem :P zrobiłem sobie małe okienko z kilkoma opcjami i dzięki temu shelf mam mniej zagracony :P mathix nie będę ukrywał że nie wiem za co złapać :) tylko pierwsza linia wiem do czego służy :P więc może powiem co chce z tym zrobić: kiedy zaznaczę jeden z wymienionych obiektów chce wykonać procedurę1 gdy zaznaczę drugi procedurę2, gdy w zaznaczonych obiektach są oba obiekty chce wykonać obie procedury w pozostałych przypadkach chce wyświetlić komunikat gdzie to podłączyć żeby działało bo nie mam pojęcia :) tak na marginesie wszystko robię w myśl zasady Janusza Dietrycha: Gdy brak informacji metoda prób i błędów jest podstawą wyjścia z trudnej sytuacji :D przydałaby mi się książka MEL for dummies czy coś w tym stylu :) możecie coś polecić moje doświadczenie na tym polu to mistrz 4 klasy w logo komeniuszu :D i mistrz turbo Pascala w średniej, mistrz nie dlatego że byłem dobry po prostu pozostali byli kiepscy :D
bareja Napisano 18 Lipiec 2007 Napisano 18 Lipiec 2007 Oczywiście można je przekazać do konstruktora, ale wtedy nie ma sensu pisać całej klasy, tylko po prostu zrobić to strukturalnie. :confused:
mathix Napisano 19 Lipiec 2007 Napisano 19 Lipiec 2007 piotrek: pythona męczę kilka tygodni. Ogólnie warto się go nauczyć, bo w przeważającej większości aplikacji graficznych się nim skrypci. Teraz jeszcze, jak sam wspomniałeś Houdini (chociaż tam zazwyczaj skrypcić nie trzeba, na tym polega jego power.) Jak umiesz programować w czymkolwiek (pojęcia takie jak pętla, funkcja, klasa nie są Ci obce) to można szybko załapać o co chodzi. Niestety nie widziałem dobrych tutków dla totalnie początkujących. fiołek: to samo można zrobić w melu. Problem 2. w wersji 2. w MEL-u wyglądałby tak. Deklarujesz dwie tablice stringów. Tworzysz grupy zaznaczeń $strArray1 = `ls -sl` i później $strArray2 = `ls -sl`. Piszesz funkcję, która sprawdza, za pomocą instrukcji for-in czy dany string znajduje się w tablicy. Piszesz procedurę, która wyciąga aktualne zaznaczenie i dla każdego elementu sprawdza, czy ten znajduje się w tablicy 1, a później w tablicy 2. Jeśli tak, to wywołujesz procedurę do wykonania. Fajną książką o MEL-u jest MEL Scripting for Maya Animators. Mogę Ci podrzucić trochę materiałów, napisz na PM.
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ę