Jump to content

gonre

Members
  • Content Count

    160
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by gonre

  1. Hej poszukuję framework kraken niestety linki na : http://fabric-engine.github.io/Kraken/#download przestały działać, err:404, ma ktoś może zarchiwizowana jakąś wersję ? podam adres poczty tak by spam boty nie miały ułatwionego zadania ;] gonrey szympansa tlen krpka peeŁ Dzięki
  2. "Strasznie" "źle" mi się czyta takie uwagi :D Z jednej strony się cieszę, że dostaje feedback, ale nie mam pojęcia co miałbym zmienić by było dobrze, bo nawet nie wiem o co Ci chodzi. Jakbym nazwał narzędzie OgnistyLis albo Stara Przyprawa, to faktycznie trudno zgadnąć :D Sam tytuł "SimBatch — narzędzie do symulacji VFXowych" najprawdopodobniej odsieje większość osób, ale Ci którzy potencjalnie powinni być tym zainteresowani wiedzą, że to coś może być dla nich i żeby się upewnić potrzebują więcej niż kwadrans by się zdecydować czy im to jest potrzebne. Zrobiłem ogólną 20sekundówkę i dwa filmy techniczne około 5 minut. Na robienie czegoś pośredniego nie mam czasu. Oganiam to wszystko sam i kończą mi się oszczędności. Zrobiłem to najlepiej jak potrafię. Jak masz jakiś pomysł na lepsze zaprezentowanie to proszę podziel się ze mną.
  3. Proces twórczy to pojemne pojęcie. To jaki jest proces twórczy to zależy od twórcy, projetku i supervisora. Dla mnie procesem antytwórczym jest wczytywanie keszy do poszczególnych ujęć, ustawianie outputów i ręczne generowanie prewek. ... i własnie to chcę zminimalizować.
  4. Dzięki za miłe słowa, przepraszam że się długo nie odzywałem, ale sporo pracy było. Założyłem właśnie nowy wątek, odnośnie samego narzędzia, by tu w animacji nie wrzucać temawów TD, ... http://max3d.pl/forum/threads/104151-Odpali%C5%82em-Kickstartera-SimBatch-%E2%80%94-narz%C4%99dzie-do-symulacji-VFXowych ...tam z chęcią odpowiem na wszystkie pytania w miarę możliwości :) tu rezentacja z Houdinim https://vimeo.com/simulations/simparamhoudini Tak, bardzo upraszczając, można powiedzieć, że to taki bardziej zaawansowany Wedge z niezależnym GUI. założenie jest takie by to było narzędzie codziennej pracy przez które przechodzi wiekszość symulacji. z drugiej strony jest to to tak pomyślanie by niezależnie od pipelinu dało to się to tak skonfigurować, by nie było trzeba nic zmieniać w obecnym układzie Moje narzędzie ma się dostosować do obecnych warunków. Oczywiście jeżeli jakieś studio ma własnego toola do zarządzania symulacjami to ja na razie odpuszczam pukani do nich bo ... ... na tym etapie SimBatch się sprawdzi w przypadku freelncerów oraz małych i średnich firm. Duże studia nie zaryzykują z "młodym" narzędziem, choć z tego co wiem są duże studia gdzie pipeline VFXowy kuleje. Z mojego doświadczenia VFXy są na ostatnim miejscu przy rozwoju pipeline'u :) Więc wziałem to w swoje ręce. Zobaczymy jaki będzie feedback, ilu odezwie się freelancerów, ile firm i jakie jest realne zapotrzebowanie na takiego toola.
  5. Hej, odpaliłem Kickastartera za czwartym podejściem. Najpierw chciałem zrobić szybką akcję i zobaczyć jaki będzie odzew i czy warto się za to brać, ale dostałem feedback, by poprawić prezentację (dzięki Kuba), poźniej by dograć video z działania narzędzia (dzięki Łukasz), potem by poprawić grafikę (Dzkia) .... No i tak z podejścia MVP wyszła dość dobrze zrobiona kampania, a na deser zrobiłem przeportowanie na dwa kolejne programy. Jak bym wiedział ile czasu to zajmie to bym to sobie darował, szczególnie ze nie można odpalić kampani będąc rezydentem Polski. No więc wyemigrowałem, doszlifowałem prototyp i dziś wypuściłem prezentację z Houdiniego i Mayki. Będzie jeszcze jedna animacja i dwie prezentacje z działania ( MAX oraz RF ) Zachęcam do obserowania na http://www.facebook.com/SimBatch (bedą newsy i updatey) oraz do wspierania kampanii: "like share and subscribe" ;] link do kampanii: SimBatch KICKSTARTER animacja promocyjna: [video=youtube_share;pOlUx-eDdaY] Jestem ciekaw Waszych opinii, proszę o konstruktywną krytykę i uwzględnienie tego, że to jest projekt jednoosobowy (na razie). Jak będą osoby chętne do dowiedzenia się jak odpalić Kickstartera z polskiej perspektywy, to się z chęcią tym podzielę.
  6. Może dodam, że to powyżej to jest techniczne promo ... ...jako przykład, że można wysumulować wiele ujęć z różnego rodzaju symulacjami w 5 kliknięć * ( * mając przygotowany jeden setup bazowy do każedgo rodzaju symulacji ) Do puszczenia w sieć jako promocję czysto marketingową mam 22 sekundówkę [video=youtube_share;CSC-pxOrR10]
  7. [video=youtube_share;pOlUx-eDdaY] Od lat chciałem zrobić animację od początku do końca, miałem kilka prób, ale ciągle było coś do zrobienia. Między ciekawymi projektami, a życiowymi obowiązkami trudno było mi znaleźć czas na odpoczynek, o animacji nie wspomnąc. Po 5 latach w dużym studio, przeszedłem na freelance i zacząłem rozwijać narzędzie do automatyzacji symulacji. Programowanie to zazwyczaj praca z tekstem w zaledwie kilku kolorach i nawet najbardziej zaawansowane IDE nie obsługują GI, a animacja przy takiej pracy ogranicza się do scrolowania kolejnych lini kodu w poszukiwaniu błędów. Na szczęscie od razu pojawił się pomysł na promocję narzędzia poprzez animację, co mnie bardzo zmotywowało. Wyrobiłem sobie taki rytm, że po paru dniach programowania dla urozmaicenia brałem się za animację, a gdy byłem zmęczony 3D wracałem do kodowania :] Po paru miesiącach jest działający prototyp, jest animacja, a za dwa dni ruszam z szerszą promocją kampani Kickstarterowej. Z planowanej szybkiej kampani zrobiła się w sumie niezła przygoda z przeprowadzką za granicę. Teraz z perspektywy czasu wybrał bym inną drogę, ale na początku roku postanowiłem że odpalę Kickstartera, a że uparty jestem to dopiąłem swego. Niestety zrobiłem słabe rozeznanie i idąc na żywioł miałem torchę pod górkę :) Jak czas pozwoli i będzie taka potrzeba, to opiszę proces odpalania kampanii z polskiej perspektywy. Sama animacja wyszła trochę przydługa jak na promo. Z perspektywy czasu widzę, że przydało by się bardziej zróżnicować tempo. Co do reszty czekam na opinie :) Najbardziej cieszy mnie zdobyte doświadczenie, przyda się przy kolejnych realizacjach. Teraz jak już prototyp jest gotowy zabieram się za kolejną animację w tym samym temacie, ale w innym klimacie :)
  8. [sOLVED] barkowalo: MaxPlus.AttachQWidgetToMax( simBatchWindow ) dzialajacy przyklad C:\Program Files\Autodesk\3ds Max 2016\scripts\Python\demoPySideQWidget.py
  9. Hej mam problem z wpisaniem tekstu do QLineEdit Przy wcisnieciu klawisza, Max traktuje to jak uzycie skrotu. Probujac wpisac "c" dostaje "No cameras in scene" :) wzialem przyklad ze strony autodesku i dziala to co napisali, czyli tworzenie cylindra dodalem do niego QLineEdit ed = QtGui.QLineEdit () main_layout.addWidget(ed) .... no i nie dziala w oficjalnym przykladzie autodesku pyside w max 2016 widget jest inicjowany tak w = QtGui.QWidget( ) w max 2017 widget jest inicjowany tak w = QtGui.QWidget(MaxPlus.GetQMaxWindow()) ciekawe jest to ze w przykladzie z 2017 dodali textEdit = QtGui.QLineEdit() textEdit.setText("Edit box") main_layout.addWidget(textEdit) ... jakby chcieli pokazac ze QLineEdit JUZ DZIALA !!! PS: sorki, nie mam polskich fontow na tym kompie, ani praw admina ;] Max 2016 z SP3, testowane na win7 i win10 http://help.autodesk.com/view/3DSMAX/2017/ENU/?guid=__developer_using_pyside_html
  10. spróbuj dodać coś takiego na początku: base_sel = selection as array for sel in (selection as array) do ( if isValidNode sel and isGroupMember sel then ( select sel max group ungroup ) ) deselect $* for obj in base_sel do ( if isValidNode obj then selectmore obj ) przez komendę ungroup MAX usuwa grupy, zmienia się ilość obiektów, więc ponownie ustalana jest selekcja bezpieczniej było by otworzyć grupę, a potem ją zamknąć :]
  11. Piotrze, faktycznie popełniłem błąd gramatyczny, pisząc posta w autobusie. Wracałem po 12h z pracy z Maxem i Majką. Pierwornie napisałem: "...autor się już bardziej nie pogrąży" ale nie chciałem być zbyt ostry i skasowałem POGRĄŻY. Po pierwsze NIE UWZGLĘDNIASZ TEGO ŻE LUDZIE PISZĄC TRUDNE DLA CIEBIE KOMENTARZE CHCĄ CI POMÓC, wskazać drogę profesjonalnego podejscia do robienia filmów, która ma niewiele wspólnego z użytym sprzętem. Po drugie wytykając mi błąd gramatyczny, używasz mało poważnych argumentów. Nie odsyłaj mnie do podstawówki, już tam byłem i kończąc ją wychodziłem przekonany o tym, że mogę popełniać błędy, że na błędach mogę się uczyć, czego i Tobie życzę.
  12. Japier..., myślałem że autor się już bardziej nie zaniży lotu.... WERSJA KINOWA? Po ile bilety? (w sensie ile zamierzasz płacić widzom by to oglądali bez możliwości przewijania) KOLEJNA STRATA JAKOŚCI ? Im większą rozdzielczość i mniejszą kompresje ma to dZIEŁO tym więcej błędów widać! Ten film zyskał by na jakości w rozdzielczości 360x240, w skali szarości i przyspieszony 4x!
  13. .... o całą galaktykę! Z jednej strony gratulacje za dopięcie "czegoś" do końca i za zaangażowanie, ale na dzień dzisiejszy widz jest tak bardzo przyzwyczajony do wysokiej jakości, że ten film męczy. Obejrzałem z nadzieją że znajdzie się w tym cieście jakiś rodzynek, a jest tylko ugniatane przez długi czas słone proste ciasto z zakalcem, które pozostawia niesmak. Idę po zagrychę.
  14. Artykuł nie był za długi, mi trochę brakuje info o polskiej animacji poklatkowej, by nie wyszło że dobre rzeczy się robi za oceanem i w Anglii. Jak dla mnie najlepsza polska animacja poklatkowa to ICHTHYS Marka Skrobeckiego http://www.youtube.com/watch?v=Pj4evvh52Oo animował Adam Wyrwas: http://www.filmpolski.pl/fp/index.php/11118602
  15. są takie osoby, które zasadzając fasole, otrzymują bardo równą trawę niczym na najlepiej utrzymanym boisku. to dla mnie sedno filmu ;]
  16. Czy planujesz zmierzyć się z reżyserią/produkcją i stworzyć autorskiego shorta ? Co chciałbyś robić za 10 lat ? Czym jest dla Ciebie szczęście ?
  17. nodeGetBoundingBox Returns a 2 element array containing the min and max points of the node's bounding box in coordinate system matrix3 as point3 values. Positions returned are always in the specified matrix3 coordinate system. bb= nodeGetBoundingBox $teapot01 $camera01.transform format " % % \n" bb[1] bb[2] LUB nodeLocalBoundingBox Returns a 2 element array containing the min and max points of the node's local bounding box. Positions returned are in the current coordinate system. bb= nodeLocalBoundingBox $teapot01
  18. Próbowałeś Animation -> Constraints - Patch Coinstrant (skryptem też można nadać kontroler Patch Coinstrant) możesz przypiąć helpera do splinea a w pętli zrobić plane.pos = $hlp_przypiety_coinstrainem.pos plane.rotation = $hlp_przypiety_coinstrainem.rotation LUB : plane.transform = $hlp_przypiety_coinstrainem.transform jeśli robisz to dla więcej niż jednego samolotu (np 100 samolotów po 40 splineach), skryptowanie tego ma sens jeśli masz jeden samolot i jednego nurbsa to polecał bym zrobić constraina zamiast skryptować. Jak możesz to napisz więcej jaką masz sytuację i dlaczego chcesz to robić skryptem
  19. hej, z motyką na słońce się porywasz :) (niezwykły sposób na animowanie) po pierwsze składnia for x=1 to 50 z=1 to 10 do u mnie nie działa i nie sądzę by u Ciebie zadziałała tu powierzchowne rozwiązanie problemu, mam nadzieję że to Ci pomoże w dalszej nauce clearlistener() spada = false obraca = false for czas =1 to 50 do ( at time czas with animate on ( x_add = 1 if $samolot.pos.x > 25 and $samolot.pos.z > 10 then ( spada = true obraca = true ) if spada then z_add = -0.7 else z_add = 1.5 if obraca then $samolot.rotation.x_rotation += 4 move $samolot [x_add,0,z_add] ) )
  20. w max 2011 skrypt działa natomiast global objName= "[Photo]" for i in selection do i.name = objName + uniquename i.name po wielokrotnym wywołaniu daje nazwę obiektu: [Photo][Photo][Photo][Photo][Photo]091 wcześniej było dobrze: for i in selection do i.name = uniquename objName na początku skryprowania proponuję Ci pisać jak najprościej, czyli nie oszczędzać linii, rozbijać operacje na prostsze (wydzielać je) kondensowanie kodu zmniejsza jego czytelność
  21. Myślałem o tym, ale jestem zbyt leniwy by być nadgorliwy ;] ... ale skoro chcesz to proszę --- BSD License ----- -------- make base objects for tests -- box height:1 width:1 length:1 name:"klepka1" pos:[-6,0,0] wirecolor: (color 13 40 130) -- box height:1 width:1 length:3 name:"klepka2" pos:[-7,0,0] wirecolor: (color 22 70 170) -- box height:1 width:1 length:4 name:"klepka3" pos:[-8,0,0] wirecolor: (color 40 90 180) -- box height:1 width:1 length:7 name:"klepka4" pos:[-9,0,0] wirecolor: (color 90 130 255) -------- ----- --- clearlistener() global klepkiRollout ( if klepkiRollout !=undefined then if klepkiRollout.open then DestroyDialog klepkiRollout rollout klepkiRollout "Klepki" ( local windowWidth = 400 local windowHeight = 220 local windowPos = [10,10] local isRolloutResized = 0 local element_width = 1 local element_names =#("klepka1","klepka2","klepka3","klepka4") local floor_length = 70 local floor_width = 10 label L_null1 " " edittext E_prefix "new element prefix" text: "element_" edittext E_objects "base objects" label L_null2 " " spinner S_floor_length "floor length" range:[1,100000,1] type:#integer spinner S_floor_width "floor width" range:[1,100000,1] type:#integer spinner S_element_width "element width" range:[1,100000,1] type:#float label L_null3 " " checkbox CB_delete "delete elements with current prefix" checked:false button B_recreate "create" width:78 enabled:true on B_recreate pressed do ( counter_length=0 counter_width=0 currnet_floor_width =0 currnet_floor_length =0 x_pos = 0 y_pos = 0 last_element_type = 1 last_element_type_try = 0 element_names = filterString E_objects.text "," undo off ( if CB_delete.checked then delete ( execute("$"+E_prefix.text+"*") ) while currnet_floor_width ( counter_width +=1 x_pos += element_width currnet_floor_width += element_width currnet_floor_length= 0 --format "xxxxxxx : %\n" x_pos while currnet_floor_length ( counter_length +=1 ------ rand element rand = random 1 element_names.count last_element_type_try = 0 while last_element_type == rand and last_element_type_try ( rand = random 1 element_names.count last_element_type_try +=1 ) last_element_type = rand ------ rand element orginal_element = ( execute ("$"+element_names[rand]) ) if isvalidnode orginal_element then ( new_element = instance orginal_element new_element.name= E_prefix.text + counter_width as string + "_" + counter_length as string new_element.wirecolor = orginal_element.wirecolor bb = nodeLocalBoundingBox new_element y_pos = currnet_floor_length + (bb[2][2] - bb[1][2])/2 new_element.pos = [x_pos,y_pos,0] currnet_floor_length += (bb[2][2] - bb[1][2]) ) else ( currnet_floor_length += 1 --- prevent infinity while format ( " ERR: no valid node: % rand: % \n" ) element_names[rand] rand ) --format ( " debug: % % \n" ) currnet_floor_width currnet_floor_length ) ) ) redrawViews() ) on klepkiRollout open do ( for n = 1 to element_names.count do ( E_objects.text += element_names[n] + "," ) S_floor_width.value = floor_width S_floor_length.value = floor_length S_element_width.value = element_width ) on S_floor_length changed val do ( floor_length = val ) on S_floor_width changed val do ( floor_width = val ) on S_element_width changed val do ( element_width = val ) ) createdialog klepkiRollout style:#(#style_titlebar, #style_border, #style_sysmenu, #style_resizing, #style_sunkenedge) pos:klepkiRollout.windowPos width:klepkiRollout.windowWidth height:klepkiRollout.windowHeight )
  22. WAŻNE ! przy tworzeniu wielu obiektów warto wyłączyć UNDO, przyspiesza to wielokrotnie tworzenie obiektów naniosłem poprawki i UI skrypt działa na nazwach obiektów teraz PREFIXem można "tworzyć grupy" clearlistener() global klepkiRollout ( if klepkiRollout !=undefined then if klepkiRollout.open then DestroyDialog klepkiRollout rollout klepkiRollout "Klepki" ( local windowWidth = 400 local windowHeight = 220 local windowPos = [10,10] local isRolloutResized = 0 local element_width = 1 local element_names =#("klepka1","klepka2","klepka3","klepka4") local floor_length = 70 local floor_width = 10 label L_null1 " " edittext E_prefix "new element prefix" text: "element_" edittext E_objects "base objects" label L_null2 " " spinner S_floor_length "floor length" range:[1,100000,1] type:#integer spinner S_floor_width "floor width" range:[1,100000,1] type:#integer spinner S_element_width "element width" range:[1,100000,1] type:#float label L_null3 " " checkbox CB_delete "delete elements with current prefix" checked:false button B_recreate "create" width:78 enabled:true on B_recreate pressed do ( counter_length=0 counter_width=0 currnet_floor_width =0 currnet_floor_length =0 x_pos = 0 y_pos = 0 element_names = filterString E_objects.text "," undo off ( if CB_delete.checked then delete ( execute("$"+E_prefix.text+"*") ) while currnet_floor_width ( counter_width +=1 x_pos += element_width currnet_floor_width += element_width currnet_floor_length= 0 format "xxxxxxx : %\n" x_pos while currnet_floor_length ( counter_length +=1 rand = random 1 element_names.count orginal_element = ( execute ("$"+element_names[rand]) ) new_element = instance orginal_element new_element.name= E_prefix.text + counter_width as string + "_" + counter_length as string new_element.wirecolor = orginal_element.wirecolor bb = nodeLocalBoundingBox new_element y_pos = currnet_floor_length + (bb[2][2] - bb[1][2])/2 new_element.pos = [x_pos,y_pos,0] currnet_floor_length += (bb[2][2] - bb[1][2]) --format ( " debug: % % \n" ) currnet_floor_width currnet_floor_length ) ) ) redrawViews() ) on klepkiRollout open do ( for n = 1 to element_names.count do ( E_objects.text += element_names[n] + "," ) S_floor_width.value = floor_width S_floor_length.value = floor_length S_element_width.value = element_width ) on S_floor_length changed val do ( floor_length = val ) on S_floor_width changed val do ( floor_width = val ) on S_element_width changed val do ( element_width = val ) ) createdialog klepkiRollout style:#(#style_titlebar, #style_border, #style_sysmenu, #style_resizing, #style_sunkenedge) pos:klepkiRollout.windowPos width:klepkiRollout.windowWidth height:klepkiRollout.windowHeight )
  23. seed z tego co wiem nie istnieje dla random() jeśli zależy Ci by szybko, zmieniać różne ułożenia to po prostu kasuj stworzone elementy i wywołaj skrypt ponownie dla powyższego skryptu jest to komenda delete $element_* odpalając skrypt z delete $element_* na początku osiągam wynik poniżej sekundy dla 200 elementów, dla każdorazowego wywołania, wiec jest powyżej 1 fps ;] tworzenie geometrii w czasie rzeczywistym to raczej nie maxscript ;] najprościej było by zrobić przycisk recreate w UI PS: jeśli komuś nie odświeża ekranu po stworzeniu podłogi niech na końcu dopisze redrawViews()
×
×
  • Create New...

Important Information

We are using cookies. Read about our Privacy Policy