Skocz do zawartości

problemy z MEL-em


Destroyer

Rekomendowane odpowiedzi

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?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 20
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

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ę ;).

Odnośnik do komentarza
Udostępnij na innych stronach

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ć

Odnośnik do komentarza
Udostępnij na innych stronach

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.

  • Like 1
Odnośnik do komentarza
Udostępnij na innych stronach

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;
   }
}

Odnośnik do komentarza
Udostępnij na innych stronach

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;
   }
}

  • Like 1
Odnośnik do komentarza
Udostępnij na innych stronach

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 :)

Odnośnik do komentarza
Udostępnij na innych stronach

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

Odnośnik do komentarza
Udostępnij na innych stronach

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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 ;]

Odnośnik do komentarza
Udostępnij na innych stronach

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

Odnośnik do komentarza
Udostępnij na innych stronach

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności