Jump to content

Recommended Posts

Posted

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?

  • Replies 20
  • Created
  • Last Reply

Top Posters In This Topic

Posted

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

Posted

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ć

Posted

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
Posted

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

Posted
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
Posted

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

Posted

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

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

Posted

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

Posted

żarty, żarty :)

hmm... :) bede czepliwy, ale wydaje wydaje mi sie ze w "zadaniu 2" :) moża wszystko zrobić z poziomu konstruktora :).

Posted

piotrek, oj w prmanie dawno nie siedzialem... :( ostatnio ciagle mysle o zakupieniu wersji studenckiej, a jak tam u Ciebie z prmanem ?

Posted

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.

Posted

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

Posted

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

Posted
Oczywiście można je przekazać do konstruktora, ale wtedy nie ma sensu pisać całej klasy, tylko po prostu zrobić to strukturalnie.

 

:confused:

Posted

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.

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