Skocz do zawartości

rakson23

Members
  • Rejestracja

  • Ostatnia wizyta

Zawartość dodana przez rakson23

  1. rakson23 odpowiedział pawellan13 → na odpowiedź w temacie → 3D
    no nie wyrobie pawellan13.
  2. rakson23 odpowiedział odpowiedź w temacie → Wolne dyskusje
    Racja na Ftims jest wszystko od strony kodu. Możesz spróbować wejść w bliższe kontakty z prof. Miśkiewiczem, on jako rzeźbiarz nie interesuje się kodem. W łodzi o kursy raczej trudno (spróbuj Autodeskowych na PŁ - nie wiem jaki jest poziom). Co do WsInf to zależy jakie masz podejście.
  3. rakson23 odpowiedział makbol → na odpowiedź w temacie → Szukam
    popatrz na tutoriale gnomona i digitutors tam znajdziesz to co potrzebne.
  4. rakson23 odpowiedział odpowiedź w temacie → CAD
    wyeksportuj z maxa jako dxf albo dwg, ale nie wiem czy to zadziała, cała idea symulacji w solidworks, catii i innych takich narzędziach polega na stworzeniu dokładnego modelu, bo tylko wtedy takie symulacje mają sens.
  5. A ja polecam pobawić się w mrarealights. generalnie to bardzo ładnie wszystko jest omówione w Vehicle Rendering in 3ds max 2009 Jeffa Pattona. Bardzo łatwo przełożysz wszystko na Maye, a efekty uzyskane w ten sposób są bardzo fajne.
  6. Hej, 1)displace + normal + specular + diffuse 2) czasteczki 3) to juz twoj wybor w jakim rendererze 4) wolumetryczne swiatla i sporo tweakowania ustawien i tak z mojej strony: 5) Wez sie za tutki od modelowanie przez teksturowanie do dynamiki i renderowania, a dopiero pozniej bierz sie za takie projekty. Jesli cos takiego chcesz zrobic, a nie masz o tym pojęcia to po pierwsze wyjdzie źle, po drugie zniechęcisz się.
  7. rakson23 odpowiedział adek → na odpowiedź w temacie → Aktualności (mam newsa)
    underground daje spalone placki:P kiedys byla dobra tak z 5 lat temu:P a tak btw polecam magic na lumumby, dobry klimat na nocne rozmowy:)
  8. rakson23 odpowiedział adek → na odpowiedź w temacie → Aktualności (mam newsa)
    Miło, co do mieszkania nie polecam akademika numer 4, biega troche robaków;) całkiem niezle jest w 7 ds. jesli na pizze chce ktos isc to raczej indeks na ulicy radwańskiej niż wszelkie grube benki, undergroundy. jesli ktos ma jakies pytania piszcie;)
  9. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Programs Languages
    predkosc juz rozwiazana;) zajmuje okolo 20 sekund w zaleznosci od reguly, teraz robie szlify do mgr i pisze prace, po obronie bedzie dalszy development, dodana bedzie filotaksja itd. teraz same drzewa bedzie generowac pozniej dowolne rosliny.
  10. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Programs Languages
    Jak będą wyglądały wygenerowane drzewa pokaże jak skończe skrypt, pewnie po obronie wrzuce go na forum ku miejmy nadzieje uciesze gawiedzi, ale teraz mam drobny problem. Po poczytaniu porad i zastosowaniu sie do nich w houdinim odnalazlem cos takiego: $(x,y,z) - Rotates the turtle so the up vector is (0,1,0). Points the turtle in the direction of the point (x,y,z). Default behavior is only to orient and not to change the direction. Wie ktos jak uzyskać cos takiego w pymel ewentualnie python?
  11. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Programs Languages
    Po drobnej przerwie wracam do skryptu. Właściwie to przepisałem dużą część od początku, oprócz krawędziowego przepisywania reguł dodałem węzłowe, raczej nie ma już problemu z wywalaniem się skryptu(chociaż nie próbowałem z jakimiś ogromnymi długościami L-Stringa). Generator w chwili obecnej zamiast liści i kwiatów wstawia w ich miejscu plane więc spokojnie z reguł można wyrzucić litery L i K jeśli jakieś są. Oprócz tego nie ma jeszcze GUI, ale to dlatego, że to będzie napisane jako ostatnie. W chwili obecnej zajmuje się implementacją parametrycznych L-Systemów w skrypcie i na tych chyba zakończę pracę nad tą wersją skryptu. A tym czasem zapraszam do testowania. import pymel.core as pm import random alf=['F','[',']','+','-','V','^',''] lista=[] class ParametryLSystemu: def __init__(self,przes,kat,oprzes,okat): self.przesuniecie=przes self.katobrotu=kat self.odchyleniePrzesuniecia=oprzes self.odchylenieKata=okat class obiektStos: def __init__(self,pozycjaX,pozycjaY,pozycjaZ,rotacjaX,rotacjaY,rotacjaZ): self.pozX=pozycjaX self.pozY=pozycjaY self.pozZ=pozycjaZ self.rotX=rotacjaX self.rotY=rotacjaY self.rotZ=rotacjaZ class GeneratorLSystemuE: def __init__(self,iteracje,aksjomat,reguly): if (iteracje>7): self.iter=7 else: self.iter=iteracje self.aks=aksjomat self.reg=reguly def GenerujLStringE(self): lString="" while (self.iter>0): drzewo="" aktualna=random.randint(0,len(self.reg)-1) for i in range (len(self.aks)): if self.aks[i]=='F': drzewo=drzewo+self.reg[aktualna] else: drzewo=drzewo+self.aks[i] self.aks=drzewo self.iter=self.iter-1 return self.aks class GeneratorLSystemuN: def __init__(self,iteracje,aksjomat,reguly): if (iteracje>7): self.iter=7 else: self.iter=iteracje self.aks=aksjomat self.reg=reguly def GenerujLStringN(self): lString="" while (self.iter>0): drzewo="" for i in range (len(self.aks)): if self.aks[i]=='F': drzewo=drzewo+self.reg[0] elif self.aks[i]=='Z': drzewo=drzewo+self.reg[1] elif self.aks[i]=='X': drzewo=drzewo+self.reg[2] elif self.aks[i]=='C': drzewo=drzewo+self.reg[3] elif self.aks[i]=='V': drzewo=drzewo+self.reg[4] elif self.aks[i]=='B': drzewo=drzewo+self.reg[5] elif self.aks[i]=='N': drzewo=drzewo+self.reg[6] elif self.aks[i]=='M': drzewo=drzewo+self.reg[7] else: drzewo=drzewo+self.aks[i] self.aks=drzewo self.iter=self.iter-1 return self.aks class InterpretatorLSystemu: def __init__(self,napis): self.ciag=napis def wypisz(self): print len(self.ciag) def sprawdzDlugosc(self): return len(self.ciag) def dodajKrzywa(self,indeks,dlugosc): pm.curve (d=1,p=[(0, 0, 0),(0,dlugosc,0)], n='konar'+str(indeks)) def dodajCylinder (self,indeks,dlugosc): pm.polyCylinder(n='konar'+str(indeks),h=dlugosc,r=0.25) pm.move('konar'+str(indeks),0,dlugosc/2.0,0) pm.polyDelFacet('konar'+str(indeks)+'.f[20]','konar'+str(indeks)+'.f[21]') pm.makeIdentity('konar'+str(indeks),apply=True, t=1) def randomdlugosci(self,dlugosc,odchyld): randomizacja=float(random.randint(-odchyld,odchyld)) dlugosc=float(dlugosc+(dlugosc*randomizacja/100)) return dlugosc def randomKata(self,kat,odchylk): randomizacja=float(random.randint(-odchylk,odchylk)) kat=float(kat+(kat*randomizacja/100.0)) return kat def dodajLisc(self,indeks): pm.polyPlane(n='lisc'+str(indeks),sw=1,sh=1) def dodajKwiat(self,indeks): pm.polyPlane(n='kwiat'+str(indeks),sw=1,sh=1) def dodajGeometrie(self,indeks,dlugosc,rodzaj): if (rodzaj=='krzywa'): self.dodajKrzywa(indeks,dlugosc) elif (rodzaj=='cylinder'): self.dodajCylinder(indeks,dlugosc) def obroc(self,kat,odchylk,znak): randomizacja=float(random.randint(-odchylk,odchylk)) kat=float(kat+(kat*randomizacja/100)) print kat if (znak=='+'): pm.rotate ('pomocnik',[kat,0,0],relative=True,objectSpace=True) elif (znak=='-'): pm.rotate ('pomocnik',[-kat,0,0],relative=True,objectSpace=True) elif (znak=='^'): pm.rotate ('pomocnik',[0,0,kat],relative=True,objectSpace=True) elif (znak=='&'): pm.rotate ('pomocnik',[0,0,-kat],relative=True,objectSpace=True) elif (znak==' pm.rotate ('pomocnik',[0,kat,0],relative=True,objectSpace=True) elif (znak=='>'): pm.rotate ('pomocnik',[0,-kat,0],relative=True,objectSpace=True) def sprawdzZnak(self,indeks): znak=self.ciag[indeks] return znak def odlozNaStos(self,ostat): lista.append(ostat) def pobierzZeStosu(self): ost=lista.pop() return ost.pozX,ost.pozY,ost.pozZ,ost.rotX,ost.rotY,ost.rotZ def interpretujLString(self,przes,obr,odchp,odchk): igalezi=0 iliscia=0 ikwiata=0 i=0 dlugoscLString=self.sprawdzDlugosc() przesuniecie=przes katobr=obr odchylk=odchk odchylprze=odchp dlug=0 pm.spaceLocator(n='pomocnik') while(i aktualnyZnak=self.sprawdzZnak(i) dlug=self.randomdlugosci(przesuniecie,odchylprze) if (aktualnyZnak=='F'): self.dodajCylinder(igalezi,dlug) pm.parent('konar'+str(igalezi),'pomocnik',relative=True) pm.parent('konar'+str(igalezi),world=True) pm.delete('pomocnik') pm.spaceLocator(n='pomocnik') pm.parent('pomocnik','konar'+str(igalezi),relative=True) pm.move('pomocnik',0,dlug,0,objectSpace=True) pm.parent('pomocnik', world=True) igalezi=igalezi+1 print 'KONAR' elif (aktualnyZnak=='+' or aktualnyZnak=='-' or aktualnyZnak=='^' or aktualnyZnak=='&' or aktualnyZnak=='>' or aktualnyZnak==' self.obroc(katobr,odchylk,aktualnyZnak) elif(aktualnyZnak=='['): pX=pm.getAttr('pomocnik.translateX') pY=pm.getAttr('pomocnik.translateY') pZ=pm.getAttr('pomocnik.translateZ') rX=pm.getAttr('pomocnik.rotateX') rY=pm.getAttr('pomocnik.rotateY') rZ=pm.getAttr('pomocnik.rotateZ') doOdlozenia=obiektStos(pX,pY,pZ,rX,rY,rZ) self.odlozNaStos(doOdlozenia) elif(aktualnyZnak==']'): zdjety=self.pobierzZeStosu() pm.setAttr('pomocnik.translateX',zdjety[0]) pm.setAttr('pomocnik.translateY',zdjety[1]) pm.setAttr('pomocnik.translateZ',zdjety[2]) pm.setAttr('pomocnik.rotateX',zdjety[3]) pm.setAttr('pomocnik.rotateY',zdjety[4]) pm.setAttr('pomocnik.rotateZ',zdjety[5]) elif(aktualnyZnak=='L'): self.dodajLisc(iliscia) pm.parent('lisc'+str(iliscia),'pomocnik',relative=True) pm.parent('lisc'+str(iliscia),world=True) iliscia=iliscia+1 print 'LISC' elif(aktualnyZnak=='K'): self.dodajKwiat(ikwiata) pm.parent('kwiat'+str(ikwiata),'pomocnik',relative=True) pm.parent('kwiat'+str(ikwiata),world=True) ikwiata=ikwiata+1 print 'KWIAT' else: print 'INNY ZNAK' i=i+1 regulyE=["F[+F]F[-F]F"] regulyN=["XdrzewoE=GeneratorLSystemuE(3,"F",regulyE) stringE=drzewoE.GenerujLStringE() drzewoN=GeneratorLSystemuN(7,"Z",regulyN) stringN=drzewoN.GenerujLStringN() parametry=ParametryLSystemu(5,20.5,50,75) interpretacja=InterpretatorLSystemu(stringN) interpretacja.interpretujLString(parametry.przesuniecie,parametry.katobrotu,parametry.odchyleniePrzesuniecia,parametry.odchylenieKata)
  12. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Programs Languages
    jasne, jak wróce z zajęć wrzuce kodziki, generalnie jak mowilem pymel ma plus taki, że jest prosta skladnia, minus jest taki, że jest wolny i trzeba uważać co się robi:) kod o ktorym mowie jesli chodzi o parentowanie jest w ktoryms topicu ponizej. generalnie wszystkie nowinki, o ktorych dowiem sie podczas pisania l-systemow w pymelu (smieszne podejscie, ale tak chciala promotorka) bede wrzucal tutaj. podejrzewam, że w czerwcu zwita na forum w miare sensownie dzialajacy plugin w pymelu, a pod koniec lata zostanie przepisany do maya python.
  13. rakson23 dodał odpowiedź w temacie → w Programs Languages
    Witam, Nie wiem ile osób z forum pisze jakies skrypty do Mayki, ale chciałbym dzielić się moimi spostrzeżeniami odnośnie pyMel i mam nadzieje, że pozostali "piśmienni w pyMelu, Melu, pythonie" również coś dorzucą. 1. pyMel jest powolny tak więc jakiekolwiek zbędne dane mogą "zabić" Mayke podczas wykonywania skryptu, w którym występuje kilka tysięcy iteracji. I tak na przykład natknąłem się na ciekawostkę odnośnie funkcji "parent", otóż w przypadku kiedy jej nie używamy skrypt jest w stanie iterować się około 80 tysiecy razy tworząc przy tym lokator (tworząc dowolnego noda sporo mniej, ale o tym później). Drugi przypadek to przypadek kiedy bezpośrendnio w wywołaniu funkcji podajemy nazwy "parentowanych" nodów ( wywołanie wygląda tak "parent(nazwadziecka,nazwarodzica)"), w takim przypadku po około 50 tysiacach iteracji skrypt wyłoży maye. W trzecim przypadku (nawiasem mówiąc wtedy kod wygląda ładnie), czyli w takim gdzie nazwy parentowanych obiektów zapisujemy do zmiennych, a zmiennych używamy w wywołaniu funkcji ilość możliwych iteracji( u mnie na sprzęcie) spada do około 4000 -- jak widać różnica jest znaczna.
  14. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Work in progress (WIP)
    z checia wroce do renderowania i sprawdze Twoje rady, ale teraz nie mam czasu ze wzgledu na prace magisterska:(
  15. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Programs Languages
    Niestety, na L-systemy dla mayki przyjdzie troche poczekac, ze wzgledu na potrzebe przepisania kodu z pymel(jak sie okazalo wolny diabelnie) do mrv(szybszy wiec moze 70tys iteracji zadziala)
  16. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Programs Languages
    ok, juz po problemie. ot to taka przypadlosc windows 7 ze jak maya nie odpowiada przy wykonaniu skryptu to ja wywala:P sposob prosty sub-process i wszystko smiga:)
  17. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Programs Languages
    Jak już mówiłem, pracuje nad skryptem tworzącym roślinność przy pomocy l-systemów dla maya i teraz mam prośbe czy ktoś mógłby odpalić ten skrypt taki jak go wklejam i powiedziec czy sie nie wywalił? import pymel.core as pm import random poczatek=[0,0,0] alf=['F','[',']','+','-','V','^'] pozycjaX=0 pozycjaY=0 pozycjaZ=0 lista=[] class ParametryLSystemu: def __init__(self,prze,ka,oprze,oka): self.przesuniecie=prze self.katobrotu=ka self.odchyleniePrzesuniecia=oprze self.odchylenieKata=oka class GeneratorLSystemu: def __init__(self,iteracje,aksjomat,regula): if (iteracje>5): self.iter=5 else: self.iter=iteracje self.aks=aksjomat self.reg=regula def GenerujLString(self): lString="" while (self.iter>0): drzewo="" for i in range (len(self.aks)): if self.aks[i]=='F': drzewo=drzewo+self.reg else: drzewo=drzewo+self.aks[i] self.aks=drzewo self.iter=self.iter-1 return self.aks class InterpretatorLSystemu: def __init__(self,napis): self.ciag=napis def wypisz(self): print len(self.ciag) def sprawdzDlugosc(self): return len(self.ciag) def dodajKrzywa(self,indeks,dlugosc,odchyld): randomizacja=float(random.randint(-odchyld,odchyld)) dlugosc=float(dlugosc+(dlugosc*randomizacja/100)) #print dlugosc pm.curve (d=1,p=[(0, 0, 0),(0,dlugosc,0)], n='konar'+str(indeks)) def obroc(self,ostatni,kat,odchylk,znak): randomizacja=float(random.randint(-odchylk,odchylk)) kat=float(kat+(kat*randomizacja/100)) if (znak=='+'): pm.rotate (ostatni,[kat,0,0]) elif (znak=='-'): pm.rotate (ostatni,[-kat,0,0]) elif (znak=='^'): pm.rotate (ostatni,[0,0,kat]) elif (znak=='V'): pm.rotate (ostatni,[0,0,-kat]) def ustawRelacje(self,dziecko,rodzic): pm.parent (dziecko,rodzic, relative=True) def sprawdzZnak(self,indeks): znak=self.ciag[indeks] return znak def sprawdzPozycje(self,nazwa): infoNode=pm.pointOnCurve (nazwa,ch=True,pr=1) pozycjaX= pm.getAttr(infoNode+".positionX") pozycjaY= pm.getAttr(infoNode+".positionY") pozycjaZ= pm.getAttr(infoNode+".positionZ") return pozycjaX,pozycjaY,pozycjaZ def odlozNaStos(self,ostat): lista.append(ostat) def pobierzZeStosu(self): ost=lista.pop() return ost def interpretujLString(self,przes,obr,odchp,odchk): igalezi=0 i=0 pozycjaX=0 pozycjaY=0 pozycjaZ=0 pm.createNode('transform', n='korzen') ostatni='korzen' przedostatni='' dlugoscLString=self.sprawdzDlugosc() przesuniecie=przes katobr=obr odchylk=odchk odchylprze=odchp while(i aktualnyZnak=self.sprawdzZnak(i) print 'znak nr: ',i+1,' z: ',dlugoscLString if (aktualnyZnak=='F'): self.dodajKrzywa(igalezi,przesuniecie,odchylprze) przedostatni=ostatni ostatni='konar'+str(igalezi) self.ustawRelacje(ostatni,przedostatni) pozycja=self.sprawdzPozycje('konar'+str(igalezi)) pozycjaX=pozycja[0] pozycjaY=pozycja[1] pozycjaZ=pozycja[2] igalezi=igalezi+1 pm.createNode('transform', n='wezel'+str(i)) przedostatni=ostatni ostatni='wezel'+str(i) self.ustawRelacje(ostatni,przedostatni) pm.move (ostatni,pozycjaX,pozycjaY,pozycjaZ) elif (aktualnyZnak=='+' or aktualnyZnak=='-' or aktualnyZnak=='^' or aktualnyZnak=='V'): self.obroc(ostatni,katobr,odchylk,aktualnyZnak) elif (aktualnyZnak=='['): pm.createNode ('transform', n='wezel'+str(i)) self.odlozNaStos(ostatni) przedostatni=ostatni ostatni='wezel'+str(i) self.ustawRelacje(ostatni,przedostatni) elif (aktualnyZnak==']'): print przedostatni, ostatni ostatni=self.pobierzZeStosu() i=i+1 drzewo=GeneratorLSystemu(8,"F","F+F−F−F+F") string=drzewo.GenerujLString() parametry=ParametryLSystemu(10,90,0,0) interpretacja=InterpretatorLSystemu(string) interpretacja.interpretujLString(parametry.przesuniecie,parametry.katobrotu,parametry.odchyleniePrzesuniecia,parametry.odchylenieKata)
  18. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Programs Languages
    moze inaczej mam taki oto skrypcik ktory powinien obracac noda o 10 stopni po osi x wzgledem poprzedniego noda import pymel.core as pm i=1 obroc=float(10.0) pm.createNode('transform',n='node0') pm.setAttr ('node0.rotate',0.0,0.0,0.0) while (i poprotX=float(pm.getAttr('node'+str(i-1)+'.rotateX')) print poprotX pm.createNode ('transform', n='node'+str(i)) pm.setAttr ('node'+str(i)+'.rotate', (poprotX+obroc),0.0,0.0) pm.parent ('node'+str(i),'node'+str(i-1)) i=i+1 ale niestety wartości rotacji po osi X poszczególnych nodow wynosza 0.0 10.0 10.0 -3.18055468146e-15 -10.0 tak wiec dlaczego drugi jest odchylony od pierwszego o 10 stopni 3 od drugiego o 10 stopni a czwarty od trzeciego o -3.18....e-15? Problem rozwiazany
  19. rakson23 dodał odpowiedź w temacie → w Programs Languages
    Witam, Ma ktos z obecnych pojecie jak uzywac funkcji rotateBy() tak zeby obrócić w kazdej iteracji noda o pewien kat? chodzi o to zeby kazda nastepna krzywa byla obrocona wzgledem poprzedniej o zadany kat, niestety za pomoca zwyklego rotate obraca w globalnym ukladzie wspolrzednych:(
  20. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Work in progress (WIP)
    Ostatnie renderki na ten moment. Jezeli ktos ma jakise uwagi to z checia je przeczytam i wezme pod rozwage:)
  21. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Work in progress (WIP)
    Po zmianach ustawień świateł i FG i dwa nowe renderki w innym kolorze:
  22. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Work in progress (WIP)
    no wlasnie nic sie nie zmienia ze zmiana samplingu. Wieczorem nad tym posiedze, teraz trzeba popisac moje "ukochane" l-systemy dla mayki.
  23. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Work in progress (WIP)
    kolejne renderki, i mały problem mianowicie skad te dziwne plamki na lakierze? soft maya 2011, oświetlenie 4 area lights, we właściwościach mental ray sa ustawione jako visible, jako photonic i light shader wrzucony jest mia_photometric_light. uzywam fg.
  24. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Work in progress (WIP)
    Dzieki za rade;) chyba jednak wykorzystam to co pan Patton mówi w swoich tutorialach.
  25. rakson23 odpowiedział rakson23 → na odpowiedź w temacie → Work in progress (WIP)
    za uwagi bede wdzieczny chociaz nie spodziewam sie zbyt wielu sadzac po dotychczasowych odpowiedziach:P

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności