safian Napisano 24 Październik 2011 Napisano 24 Październik 2011 Witam, napotkałem się z zagadką, której nie mogę rozwiązać. Mianowicie moim zamysłem jest stworzenie z cząsteczek wyemitowanych z emittera kulę. Tymi cząsteczkami są animowane ptaki i czy jest jakiś zacny sposób na okiełznanie tych ptoków, aby utworzyły kulę? Próbowałem z newton fieldem, ale latały one jak odrzutowce, a nie oto mi chodzi. Mój niedoświadczony móżdżek nie ma pojęcia w jaki sposób to zrobić, liczę na Waszą pomoc i z góry dziękuję. Przykład w załączniku.
Marshall Napisano 24 Październik 2011 Napisano 24 Październik 2011 Rozwiązaniem jest instancer (zaanimowany(-e) ptak(-i)) oraz goal (sphere) + odrobinkę MEL'a (rotationPP,goalPP,goalU,goalV,index + co kto lubi) :). Pozdrawiam. Si.
safian Napisano 25 Październik 2011 Autor Napisano 25 Październik 2011 Dzięki wielkie, goal się udał, będę musiał jeszcze trochę pokombinować. Nasuwa mi się jeszcze pytanie, w jaki sposób mogę zatrzymać animację ptaka, gdy już będzie tworzył ów kulę? Chodzi mi głównie o to, że dałem do instancera snapshoty animowanego ptaka i czy da radę w danym momencie po prostu zatrzymać tą animację?
jaras Napisano 25 Październik 2011 Napisano 25 Październik 2011 moze wypalenie cache i zatrzymanie go w okreslonej klatce ?
Marshall Napisano 25 Październik 2011 Napisano 25 Październik 2011 Hmm.. jeżeli Twoje ptaki mają instance z włączonym cycle animate to myślę (tzn. tak mi się wydaje :rolleyes: ) że tutaj należy skupić swoją uwagę tj. możesz zrandomizować całość z odrobiną kodu + zapewne "wyłączyć" animację w pewnym momencie w zakładce "Cycle".
legomir Napisano 25 Październik 2011 Napisano 25 Październik 2011 A ten sposób co Ci mówiłem? W GraphEditorze możesz po prostu wyciszyć kanał wtedy ;)
asblaze Napisano 26 Październik 2011 Napisano 26 Październik 2011 Na creativecrash.com jest fajny skrypt do symulacji ławic. Tym bym się posiłkował.
safian Napisano 26 Październik 2011 Autor Napisano 26 Październik 2011 (edytowane) @asblaze Masz na myśli brainbugz? @legomir Działa, działa, ale tym sposobem nie da rady stworzyć dobrej kuli z tych ptaków. EDIT: Poradziłem się legomira i skryptem podpiąłem ptaki do vertexów sphere'a. O taką kule z ptaków mi chodziło, jednak pozostaje kwestia w jaki sposób miejsce startu ustawić za książką, a następnie żeby wróciły do swojego miejsca? Moja nieobeznanie w cząsteczkach już męczy. Edytowane 26 Październik 2011 przez safian
safian Napisano 30 Listopad 2011 Autor Napisano 30 Listopad 2011 Hej, odświeżam temat, bo wróciłem do tego, a zmienił się pomysł na to. Mianowicie zastanawia mnie czy da radę zrobić to w ten sposób, aby ptaki tak jakby wlatywały w obiekt, a następnie ten obiekt się wraz z wlatywaniem wypełniał/kompletował? Chodzi mi o taki obiekt jak niżej: Macie jakieś pomysły, które by mnie naprowadziły na efekt końcowy?
piopiowawa Napisano 30 Listopad 2011 Napisano 30 Listopad 2011 nawet jeśli jakoś to zmęczysz to jak to potem planujesz wyrenderować ? ;)
piopiowawa Napisano 1 Grudzień 2011 Napisano 1 Grudzień 2011 moja rada jeżeli nie znasz chociażby podstaw to lepiej nie zabieraj się za particle :p
safian Napisano 1 Grudzień 2011 Autor Napisano 1 Grudzień 2011 Zawsze pomoże help, który już mi wyjaśnił jak te particle wyrenderować :).
beny Napisano 1 Grudzień 2011 Napisano 1 Grudzień 2011 Particle są banalne - wystarczy kumać dobrze skryptowanie, operacje na wektorach, macierzach, mieć ogólne pojecie o optymalizacji algorytmów i oko do ruchu i śmigasz wszystko co chcesz. Polecam!
safian Napisano 1 Grudzień 2011 Autor Napisano 1 Grudzień 2011 Particle są banalne - wystarczy kumać dobrze skryptowanie, operacje na wektorach, macierzach, mieć ogólne pojecie o optymalizacji algorytmów i oko do ruchu i śmigasz wszystko co chcesz. Polecam! Fakt! Bez umiejętności skryptowania kontrola nad particlami jest dla mnie strasznie oporna... Anyway, sobie już poradziłem z poprzednim problemem. Teraz mam taki jeden tyci-tyci - mianowicie sobie volume axisem chcę wciągnąć moje ptaszyska z kuli. Fakt, faktem wysysam je, ale jest to strasznie niepłynne (błyskawicznie po pierwszej klatce wyrywa je z formy kuli, a mi bardziej zależy na płynnym wyssaniu). Jeżeli ktokolwiek zrozumiał ten bełkot to prosiłbym o radę.
beny Napisano 1 Grudzień 2011 Napisano 1 Grudzień 2011 Słabo zrozumiałem ... ale pewnie masz strength na volume axis za duży noi na particlach masz conserve - zmniejsz do 0.98 albo nawet mniej 0.95 albo jeszcze mniej i zobacz czy się coś zmienia. Ogólnie parametr converve działa per substep więc jest mega czuły i poniżej 0.9 to zaczyna się mega ostre hamowanie particli bez sił.
safian Napisano 1 Grudzień 2011 Autor Napisano 1 Grudzień 2011 Troszeczkę kombinowałem z conserve i niestety dalej to samo. W volume axis magnitude mam ustawione nawet na 0.01 i efekt ten sam. Dziwna sprawa.Tutaj screen efektu, o jaki mi chodzi. Może ktoś ma pomysł na inne rozwiązanie. :)
ca mel Napisano 2 Grudzień 2011 Napisano 2 Grudzień 2011 Może pokombinuj z drag field. Ustaw bardzo małe oddziaływanie volume axis i ujemny kulisty drag field z ujemnym zanikiem przyśpieszający z czasem cząstki. Samemu volume axis też warto zrobić fade zaniku. Zobacz na obrazku w helpie co zrobi attenuation w połączeniu z invert. Miękkie wejście w pole siłowe, pewnie tego Ci trzeba. http://download.autodesk.com/us/maya/2010help/index.html?url=Fields__Work_with_volume_axis_fields.htm,topicNumber=d0e393274
beny Napisano 2 Grudzień 2011 Napisano 2 Grudzień 2011 Jak dla mnie to attenuation w ogóle tam nie ma - ustaw Attenuation na 1.0 i z dyni.
safian Napisano 2 Grudzień 2011 Autor Napisano 2 Grudzień 2011 Pogmatwana sprawa! Za każdym razem, jakim bym fieldem tego nie robił, z jak małą czy dużą siłą, nie wiadomo jakim attenuation cały czas mi wyrywa te ptaki, a następnie idzie płynnie...
beny Napisano 2 Grudzień 2011 Napisano 2 Grudzień 2011 Może Ty masz cache na tych particlach? :> Weź podrzuć scenę - coś nakombinowałeś.
safian Napisano 2 Grudzień 2011 Autor Napisano 2 Grudzień 2011 Nie, nie ma cache. Może rzeczywiście coś przekombinowałem. Proszę, o to scena: http://www.mediafire.com/?ne2k8njxbx8n513
Marshall Napisano 2 Grudzień 2011 Napisano 2 Grudzień 2011 Hi. Jeżeli chodzi o wszelakie Field'y to uwierz mi wszystko jest w helpie całkiem jasno wytłumaczone :). Twoim problemem jest wydaje mi się Attenuation które działa na zasadzie: jak bardzo przyłożona siła maleje od centrum volume axis field (jednostką są unity z tego co pamiętam) - oczywiście możesz całość odwrócić poprzez tick w "invert attenuation". Pomoże Ci to wszystko zwizualizować skrót klawiszowy "T" po zaznaczeniu VAF. W połączeniu z Conserve powinieneś dostać efekt który chcesz uzyskać. Pozdr.
safian Napisano 2 Grudzień 2011 Autor Napisano 2 Grudzień 2011 (edytowane) @MarshallCały czas wertuję helpa, kombinuję na wszystkie sposoby z attenuation i cały czas jest efekt tego wyrywania się ptaków. Pierwsza klatka - żadnej reakcji, druga klatka - nagły zryw ptaków o większą odległość, a następnie działa wszystko tak jak bym chciał.Dla zobrazowania tego zrobiłem szybki playblast: http://www.youtube.com/watch?v=8jn8wni9bmM Edytowane 2 Grudzień 2011 przez safian
Marshall Napisano 2 Grudzień 2011 Napisano 2 Grudzień 2011 http://www.sendspace.com/file/41ukc5 Nie wiem czy dokładnie o to chodziło ale próbowałem :). 1
safian Napisano 2 Grudzień 2011 Autor Napisano 2 Grudzień 2011 No po prostu nie wierzę. Robiłem tym samym sposobem, kluczując magnitude i wychodził kicz. Muszę wydedukować to jeszcze raz i zobaczyć co źle robiłem. Mimo wszystko Marshall wielkie dzięki, bardzo mi pomogłeś, a szczególnie uspokoiłeś psychicznie (pokój cały zadymiony ;). Zresztą dzięki wszystkim, którzy próbowali mi pomóc, bardzo mi się podoba, że można na Was liczyć ;).
beny Napisano 2 Grudzień 2011 Napisano 2 Grudzień 2011 Miesiek, jak zauważyłeś masz w Rotation options ustawiony "Aim direction" na "Velocity". Jak się nie ruszają particle Twój wektor Velocity jest zerowy, więc Maya nie zmienia orientacji biektu, który jest skierowany w prawo. Co u Ciebie się dzieje to jak particle się zaczynają ruszać tostają automatycznie niezerowy wektor w lewo i stąd masz to pierdyknięcie, a potem już spokojnie lecą. Jako, że środek obrotu masz "w ogonie ptaka" to masz gigantyczny przeskok. 1
safian Napisano 2 Grudzień 2011 Autor Napisano 2 Grudzień 2011 Dzięki wielkie beny, teraz czarno na białym wiem co było przyczyną :).
safian Napisano 6 Grudzień 2011 Autor Napisano 6 Grudzień 2011 Hej, little odświeżenie. Mam jeszcze jedno pytanie, w jaki sposób obrócić te ptakulce? W sensie, może to dziwne, ale chciałbym, aby tyłem wylatywały z tej kuli :D.
beny Napisano 6 Grudzień 2011 Napisano 6 Grudzień 2011 musisz je lekko poruszyć w stronę w którą chcesz żeby były odwrócone - np. jakimś fieldemi "Aim Direction" usstawiony na "velocity" Ci załatwi sprawe.
safian Napisano 6 Grudzień 2011 Autor Napisano 6 Grudzień 2011 Niby załatwia sprawę, ale właśnie, gdy dam aim direction na velocity to wracamy do poprzedniego problemu - jest pierdyknięcie podczas wylatywania z kuli.
beny Napisano 6 Grudzień 2011 Napisano 6 Grudzień 2011 No to najpierw pociągnij je lekko w prawo żeby dostały jakikolwiek wektor w prawo (może być na jednej klatce o 0.0001 mm) a potem dopiero rób z nimi co tam chcesz - powinno zadziałać.
safian Napisano 6 Grudzień 2011 Autor Napisano 6 Grudzień 2011 Działa mistrzu! Dzięki jeszcze raz. :)
safian Napisano 7 Grudzień 2011 Autor Napisano 7 Grudzień 2011 (edytowane) Kolejne odświeżenie, kolejne pytanie :P.W jaki sposób jestem w stanie dać różne kolory, na losowo wybrane ptaki? Powiedzmy mam 5 materiałów i chciałbym, aby każdy ptak losowo miał nałożony jeden z tych materiałów, a co jeszcze ważne - nie zmieniały się w czasie jak to zrobiłem przed chwilą... Teraz w instancerze dodałem po 20 snapshotów animacji ptaka z każdego materiału i właśnie po każdych 20 snapshotach danego koloru ten sam ptak zmienia kolor na następny kolor - chciałbym to zniwelować! Szperając trochę po necie wyczytałem, że w Mai ustawienie losowego shadera z geometrią (tudzież moimi ptakami) jest nie możliwe. Próbowałem również atrybutem rgbPP, ale nic z tego... Edytowane 7 Grudzień 2011 przez safian
praetorian Napisano 7 Grudzień 2011 Napisano 7 Grudzień 2011 krótko mówiąc - niedasie. Nie ma możliwości przekierowania atrybutów partikli, przez instancer, do shadera. Podobno finalRender dla mayi to potrafi, ale tylko tak slyszałem. Pozostaje ci zrobić kilka kopii snapshotów z roznymi materiałami.
safian Napisano 7 Grudzień 2011 Autor Napisano 7 Grudzień 2011 W tym sęk, że tak na początku zrobiłem - zrobiłem 5 kopii snapshotów, dałem je wszystkie do instancera i gdy przykładowo przelecą snapshoty o kolorze pomarańczowym to wszystkie potem stopniowo ptaki zmieniają kolor na powiedzmy niebieski, bo są to kolejne snapshoty w kolejce w instancerze. Mi chodzi o efekt, aby każdy ptak miał swój kolor przez całą animację. Są na to jakieś inne sposoby? Ewentualnie jest inny sposób na podłączenie animacji ptaka do cząsteczek od tego ze snapshotami?
beny Napisano 7 Grudzień 2011 Napisano 7 Grudzień 2011 Jakto się nie da - wszystko się da tylko trza by to ładnie oskryptować i na podstawie Id particla zrobić kolejne sekwencje - do zrobienia, ale musiałbyś poskryptować trochę, więc zrób tak jak mówi praetorian - kilka wersji snapshotów z różnymi materiałami.
safian Napisano 7 Grudzień 2011 Autor Napisano 7 Grudzień 2011 Jakto się nie da - wszystko się da tylko trza by to ładnie oskryptować i na podstawie Id particla zrobić kolejne sekwencje - do zrobienia, ale musiałbyś poskryptować trochę, więc zrób tak jak mówi praetorian - kilka wersji snapshotów z różnymi materiałami.Tak jak mówiłem - po zrobieniu kilku wersji snapshotów ptaki zmieniają kolor, a to jest dla mnie nie pożądany efekt. Aczkolwiek znalazłem inne wyjście z tej sytuacji. Mianowicie cząstki są podpięte pod vertexy sphere. W takim razie zrobię 5 wersji sphere z powycinanymi tak vertexami, aby te 5 wersji tworzyło cały jeden sphere, a następnie do każdego nParticleShape podepnę 5 wersji instancera, gdzie do każdego z osobna podepnę instancera z innym kolorem ptaków. Trochę chaotyczne i pracochłonne, aczkolwiek dzięki temu uzyskam pożądany efekt :). Mimo wszystko dzięki za pomoc.
beny Napisano 8 Grudzień 2011 Napisano 8 Grudzień 2011 Masz tutaj prezent. Jak zaznaczysz jakiś obiekt polygonowy to poniższy kod Pythonowy w jego wertexach stworzy Ci particle. Nie byłoby to Ci za bardzo potrzebne gdyby nie fakt że tworzy on tyle obietków partiklowych ile wpiszesz w parametrze "numberOfCopies". Co więcej, nie stworzy już particla w miejscu gdzie particle już jest. Czyli teraz do każdego obiektu particlowego podepnij sobie teraz swoje animacje z różnymi kolorami i jesteś w domu: import maya.cmds as cmds import random import math objHold = cmds.ls(sl=True) if (len(objHold)>0): numberOfCopies = 5 allParticleObjs = [] for counter in range(0,numberOfCopies): newPartObj = cmds.particle() allParticleObjs.append(str(newPartObj[0])) vertNum = int(cmds.polyEvaluate(objHold, v=True )) for vertId in range(0,vertNum): holdVert = objHold[0] + ".vtx[" + str(vertId) + "]" partPos = cmds.xform(holdVert, ws=True, a=True, q=True, t=True) particleObject = math.floor(random.uniform(0,numberOfCopies)) cmds.emit( object=allParticleObjs[int(particleObject)], position=(partPos[0],partPos[1],partPos[2]) ) else: cmds.warning("Zaznacz jakis obiekt polygonowy") Wisisz mi piwo :)
safian Napisano 8 Grudzień 2011 Autor Napisano 8 Grudzień 2011 (edytowane) Kurde, stary. Jesteś genialny :), piwo to za mało :d. Tak głupio mi jeszcze narzekać, ale po "go to start of playback range" particle w podglądzie znikają, a w outlinerze są. Wiesz może co się dzieje? Po renderze też ni widu ni słychu partikli. Zauważyłem też, że jak chcę sobie je obrócić atrybutem spriteTwistPP (nParticleShape1.spriteTwistPP = frame *4; ) to nic się nie zmienia. Btw. próbowałem particlesami oraz nParticlesami i to samo. Edytowane 8 Grudzień 2011 przez safian
beny Napisano 8 Grudzień 2011 Napisano 8 Grudzień 2011 A faktycznie :D sorki - jak wykonasz skrypt to zaznacz obiekty partiklowe i zrób "solvers->initial state->set for selected", mój błąd :)
safian Napisano 8 Grudzień 2011 Autor Napisano 8 Grudzień 2011 Faktycznie, teraz gra gitara. Nie wiem stary co Cię natchnęło, aby to napisać, ale mimo wszystko jeszcze raz wielkie dzięki! Geniusz dynamiki :D.
praetorian Napisano 8 Grudzień 2011 Napisano 8 Grudzień 2011 panowla... po co tak kombinować :) da się z kilkoma kopiami snapshota (z różnymi shaderami). załączam przykładową scenkę. http://www.sendspace.com/file/lscras 1
safian Napisano 8 Grudzień 2011 Autor Napisano 8 Grudzień 2011 Czy dobrze to wydedukowałem - zmieniłeś tylko cycle na none z seq?
praetorian Napisano 8 Grudzień 2011 Napisano 8 Grudzień 2011 Nie bardzo rozumiem o co pytasz. Zrobiłem tę scenę od początku, więc nie miałem co zmieniać.
safian Napisano 9 Grudzień 2011 Autor Napisano 9 Grudzień 2011 Fakt, źle skonstruowałem pytanie, ale mniejsza. Takie kombinacje były, ponieważ w mojej scenie są już utworzone particle i jak miałem ustawione wszyściutko jak w twojej scenie to moje ptaki migotały - tak jak to już miało miejsce u mnie wcześniej. Zdaje się, że to działa tylko przy emitowaniu cząstek.
beny Napisano 9 Grudzień 2011 Napisano 9 Grudzień 2011 Da się na kilkanaście sposobów to zrobić podejrzewam. sefiankowi napisałem po prostu małe narzędzie do jego metody, każdy robi jak lubi :)
praetorian Napisano 9 Grudzień 2011 Napisano 9 Grudzień 2011 Zdaje się, że to działa tylko przy emitowaniu cząstek. To bez znaczenia - cała "logika" wyboru cyklu i klatki z cyklu jest w expressions, a to co jest w creation expression i nie działa na nieemitowanych partiklach, można przenieść do runtime expr (zamieniając rand() na noise()). Twoje ptaki migotały (rany, jak to brzmi :) ) pewnie dla tego, że każda cząsteczka przebiegała po każdym cyklu (snapshocie), zamiast w obrębie jednego, wcześniej wylosowanego. Zajrzyj do expressions, bo mam wrażenie, że zerknąłeś tylko na atrybuty instancera. 1
safian Napisano 9 Grudzień 2011 Autor Napisano 9 Grudzień 2011 Twoje ptaki migotały (rany, jak to brzmi :) ) pewnie dla tego, że każda cząsteczka przebiegała po każdym cyklu (snapshocie), zamiast w obrębie jednego, wcześniej wylosowanego. Tak, właśnie przyczyną było to, że po jednym cyklu, instancer od razu leciał do kolejnego, zamiast zostać przy tym jednym. Szczerze mówiąc Panowie byliście moją lekcją podstaw cząstek, więc trudno jakkolwiek było mi samemu z tym walczyć. Kolejny raz wielkie dzięki (ja pierdziele, ile razy już mi pomogliście :) )
beny Napisano 12 Grudzień 2011 Napisano 12 Grudzień 2011 (edytowane) To bez znaczenia - cała "logika" wyboru cyklu i klatki z cyklu jest w expressions, a to co jest w creation expression i nie działa na nieemitowanych partiklach, można przenieść do runtime expr (zamieniając rand() na noise()). Twoje ptaki migotały (rany, jak to brzmi :) ) pewnie dla tego, że każda cząsteczka przebiegała po każdym cyklu (snapshocie), zamiast w obrębie jednego, wcześniej wylosowanego. Zajrzyj do expressions, bo mam wrażenie, że zerknąłeś tylko na atrybuty instancera. Dopiero zajrzałem do tego co podesłałeś. Jak wywalisz creation expression a w before dynamics przerobisz na: seed(id); pS.birdId = int(rand(pS.numOfBirds)); pS.geoId = pS.cycleFrames*pS.birdId + frame%pS.cycleFrames; to będzie lepiej. Co więcej wrzuciłbym numOfBirds i CycleFrames też do tej ekspresji i niech się liczy z automatu i wywalić to z atrybutów shapa - bez sensu trzymać na to oddzielne parametry i zmieniać za każdym razem jak się animacja zmieni. Coś na kształt: $instancerName = "instancer1"; $snapShotObj = "snapshot1"; $st = `snapshot -q -st $snapShotObj`; $et = `snapshot -q -et $snapShotObj`; $cycleFrames = ($et[0] - $st[0] + 1); $numBirds = size(`instancer -q -obj $instancerName`) / $cycleFrames; seed(id); pS.geoId = $cycleFrames*(int(rand($numBirds))) + frame%$cycleFrames; Noi generalnie Twoja metoda jest dużo efektywniejsza niż safiank zaproponował, ale skoro safiank zaczyna przygodę z dynamiką to może tę metodę niech na razie nie wykorzystuje, bo chyba za dużo ekspresji w ekspresji :) Ale resp z szacunkiem za optymalizację idzie :D Pozrawiam! M edit: birdId też jest w sumie nie potrzebne bo jedziemy po id particla :) Edytowane 12 Grudzień 2011 przez beny
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ę