Skocz do zawartości

Czemu ludzie się tego nie uczą...


Kroopson

Rekomendowane odpowiedzi

@olaf W Kolumbii 18 zielonych papierow na godzine to jest czysty miodzik :) U nas w Meksyku z reszta tez. Zeby w perspektywie przedstawic jak bardzo slodki to jest miodzik to powiem, ze teraz w Meksyku podniesli place minimalna do $4.70. NA DZIEN. Osobiscie nie lubie placy godzinowej - wole za projekt. Ale juz pracowalem za $15 na godzine i to wciaz bylo spoko bo zupelnie inaczej wyglada sprawa wydawania kaski/kosztow. Ja za wynajem malego domku na ogrodzonym, chronionym osiedlu teraz place $220 na miesiac. Glupi bylem ze mieszkalem w stolicy tyle czasu bo czynsz byl ponad 2 razy wyzszy za mieszkanie a nie domek. A zysk sredni z tego jesli i tak pracujesz przez necik i nie szukasz pracy lokalnie.

 

------

 

Z tym porownywaniem do stawek w Polsce to faktycznie bez sensu. Mnie w ogole g...uzik obchodzi co inni zarabiaja. Wazne co ja sam zarabiam, co robie i jakie mam potrzeby.

Jasne ze trzeba sie rozeznac w rynku zeby bez sensu nie pracowac za duzo mniej niz mozesz, ale skupianie sie na tym by zarabiac jak najwiecej jest toksyczne i czesto zwyczajnie glupie jak sie nad tym zastanowic.

Mam takiego znajomego mieszkajacego w Juarez. Koles swietnie ustawiony, kaska plynie ladnie (zupelnie inna, nie graficzna branza). Co przyjezdza w odwiedziny to opowiada o tym co tam sobie kupil znowu. Ma juz trzy domy. I pytam sie go czy mieszka w kazdym po tygodniu czy moze chce wynajmowac i z tego zyc. Nie. "Mam trzy domy" - mowi i patrzy jakby sam ten fakt mial jakos mna wstrzasnac :D Tylko po cholere je ma to sam nie wie. Wiecznie zestresowany, poczatki paranoi - rzuca oczami na lewo i prawo jak gdzies chodzi bo sie spodziewa napasci jakiejs... Ten sam znajomy wiecznie nas namawia zeby tam sie przeprowadzic bo bedziemy lepiej zarabiac, do Stanow mozna skoczyc bez problemu "i w ogole". No tak, tylko ze ja nie chce mieszkac na pieprzonej pustyni...

Z ta nauka programowania to jak z tym Juarez dla mnie. Moglbym wiecej zarabiac, kupic sobie ze trzy domy i... mieszkalbym na pustyni. Super.

 

Nie powinno sie zostac frajerem, ktorego wszyscy wykorzystuja ale nie martwcie sie za bardzo tym co mogloby byc gdyby. Bedziecie wiecznie niezadowoleni z tego co macie. Jeszcze nie spotkalem kogos bogatego kto by powiedzial "teraz juz mam wystarczajaco duzo, moge odpoczac". Gonia za $$ do smierci i nigdy nie maja dosc. Spotkalem za to sporo osob srednio sytuowanych a jeszcze wiecej wrecz biednych osob, ktore mowia "a po co mam sie uganiac za pieniedzmi jak mam dach nad glowa i co zjesc". Moze to brzmi przesadnie, ale na prawde wiekszosc tego zlomu i szmat ktore wciskaja wam w reklamach jest zbedne. Spokojnie, wdech, wydech, spojrzcie troche w niebo zamiast maziac ten ekranik wiecznie. Zycie jest na prawde super. Nawet bez kwadrylionow na koncie.

 

PS. Teraz juz wiecie dlaczego zadna firma nie zatrudnila by mnie jako managera :D :D :D

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 88
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Ja sie z Toba zgadzam Nezumi. Zreszta ucze sie hiszpanskiego, by wreszcie przejsc na emeryture w jakims zielonym zrelaksowanym kraju.

 

Rzucilem prace i w sumie od poltorej roku bym nie pracowal ale w grudniu dostalem propozycje bycia managerem, to pomyslalem, ze naucze sie wreszcie tego porzadnie i pracuje jakies 2h dziennie (takie moje prywatne MBA). Starcza na skromne zycie, podroze i wlasny projekt, ktorego nie musze komercjalizowac w sumie w ogole (no w sumie musze, by zobaczyc jak ludzie beda z niego korzystac).

Odnośnik do komentarza
Udostępnij na innych stronach

Jak juz ktos poruszyl stawki to tylko zdradze ze pewnym "standardem" agencyjnym w DE jest wycenianie 1 godziny pracy grafika 3D (generalisty) na 80€ - 120€ + 20% profit margin, wiec 30$ olafa to jest jeszcze spokojnie 50% ponizej tego co mozna wyciagac jako freelancer. Czesto w praniu o wiele wazniejsze niz skill 3D jest po prostu zrozumienie tego co chce klient i tego czy po prostu lubi z nami pracowac (czy wystarczy jeden brief i klient ma pewnosc wykonanej pracy, czy potrzebne beda 3-4 rundy poprawek bo grafik nie lapie czym przykladowo jest "young, urban vibe" w stylu zachodnim).

 

Ofc malo ktory grafik w niemczech pracuje po stawkach 120€, ale pozycjonujac sie jako agencja z topowym portfolio sa to zarobki jak najbardziej osiagalne. Stawki niektorych specjalistow w branzach kreatywnych to 500$ - 1200$ / h.

Edytowane przez le_chu
Odnośnik do komentarza
Udostępnij na innych stronach

Musze zostac takim specjalista... Moglbym pracowac godzine na miesiac :D

 

@Olaf - Hiszpanski w miare prosty jest ten podstawowy, ale w cholere roznych lokalnych odmian jest. Zawsze mi sie przypomina ta piosenka ktora swietnie to ilustruje:

:D Powodzenia!

Edytowane przez Nezumi
Odnośnik do komentarza
Udostępnij na innych stronach

Dzieki Kroopson za temat. Moja odpowiedz chce zaadresowac do Hris'a poniewaz

znalazlem ciekawa analogie pasujaca do mojego obecnego profilu zawodowego (pipeline td)

i zainteresowania produkcja muzyki elektronicznej.

 

Na przykladzie drogi przez ktora przeszedlem celem usprawnienia pipeline'u stworzonego na wlasne potrzeby

tworzenia muzyki, sprobuje zobrazowac jak wyglada praca nad prostym projektem podobnym do projektow

automatyzacji zadan w production pipeline.

 

Problem:

 

Skladam set audio trwajacy okolo 30 minut na starym rzechu laptopie z

Core2 Q9300 2.5Ghz, 16Gb ramu i win7.

DAW (Digital Audio Workstation) zaczyna rzezic przy 400 barach z 30 zewnetrzymi instrumentami.

Nie moge nic zrobic w takiej konfiguracji gdyz dzwiek sie zwyczajnie wiesza losowo

na kilka sekund co kilka sekund. Bardzo prawdopodobne ze przyczyna jest opoznienie w tranferze midi i synchronizacji

sampli audio z i do kilku fizycznych interumentow/efektow . Moglbym kupic laptop i audio interfejs za 2000 dolarow

ale to tylko hobby wiec nie wydaje.

Ponadto lubie pisac software i rozwiazywac problemy. W wypadku nadmiaru gotowki, zapewne kupilbym nowy komputer.

Celem jest opracowanie plynnego srodowiska pracy oraz przetworzenie 6 sciezek audio,

okolo 30-60 minut kazda, za pomoca pluginow VST bez przeciazania aplikacji DAW jednoczesnie unikajac monotonnego

eksportowania ustawien pojedynczych pluginow i trzymania konfiguracji w jednym miejscu (plik projektu DAW).

 

Process:

 

Sprawdzam czy DAW ma jakis API czy SDK w jakimkolwiek jezyku, jezyk jest bez znaczenia,

jesli ma w jezyku ktorego nie znam, naucze sie uzywac kolejnego. Nie ma nic.

Jedyne API dostepne sluzy do tworzenia presetow z mapowaniem kontrollerow midi wiec odpada.

Zaczynam grzebac w tych skryptach pytonowych czy nie ma tam jakiejs funkcji ktora pozwoli

mi wywolac wewnetrzne komendy aby przetworzyc projekt w trybie wsadowym.

Nic nie znajduje wiec sprawdzam linie komend lecz i tutaj kompletne zero. Moge jedynie polecic aplikacji

aby otworzyla projekt. To troche malo. Obserwuje co robi aplikacja, jakich wywolan systemowych uzywa

by dzialac, troche tego jest ale nic przydatnego. Szukam w sieci czy ktos juz tego nie zrobil.

Znajduje jakis programik OS zdolny przetworzyc audio za pomoca pluginow VST w trybie wsadowym.

Programik zostal napisany w C (nie c++).

Testuje, cos dziala, cos nie dziala ale jest open source, w razie czego moge naprawic. Udaje mi sie skonfigurowac

przetworzenie pliku audio za pomoca darmowego pluginu, Fantastycznie, zakladam ze bedzie dzialac.

 

Wracam do projektu w daw. W projekcie mam 30 instrumentow i okolo 6 finalnych sciezek audio.

Na kazdej z 6 sciezek + master bus Masa jakichs pluginow

EQ, saturacji, kompresorow, maximizerow, reverbow, delay, itp.... niektore mono, inne stereo, itp...

30-40 instancji kilku pluginow w roznych konfiguracjach, kazdy ma okolo 10-20 parametrow.

Hmm... Jak to przeniesc do tego programiku wsadowego ktory znalazlem ?

Kazdorazowy reczny eksport z pewnoscia sprawi iz szybko zmienie hobby na hodowle rybek, wiec odpada.

Nie ma api, nie ma sdk... Czy daw zapisuje pliki w formacie ascii ? Otoz nie, jakies binarki, ogladam te binarki

ale jakos znajomo wygladaja, ogladam dalej, przypomina skompresowany plik !!

Rozpakowuje zipa i moim oczom ukazuje sie przepiekny XML, jedyne 600 000 linii, czytam...

Ok, sporo uzytecznych informacji, ladne struktury danych, teoretycznie mozna wygenerowac taki plik automatycznie

lub przerobic na wzorce i zbudowac modularny genrator w przyszlosci. Teraz moge z tego wyeksportowac presety

do aplikcji wsadowej. Tu i uwdzie znajduje bloby (binary large object, dane w postaci binarnej). Zapisuje

bloby bezposrednio, binarnie do plikow. Porownuje z recznie wyeksportowanym presetem i wyglada podobnie jednak

dane sie roznia i zadna aplikacja nie chce uznac tego czegos za poprawny plik z presetem.

Studiuje format pliku presetow stosowanych w branzy audio i format pluginow VST, ok, brakuje naglowkow.

W xml'u jest masa danych dla pluginu, z tych pojedynczych wartosci, skladam naglowek, wpisuje do pliku i zaraz

za tym wpisuje tego bloba z xml'a, nadal nie dziala. Okazuje sie ze architektura pluginow VST sprawia iz

brakuje mi waznej informacji o wersji formatu presetu uzywanego przez dany plugin. Plugin "wie" jak wczytac

wlasny plik presetu i wyeksportowac lecz nie manifestuje tej informacji. Eksportuje preset z kazdego typu

pluginow uzywanych w moim projekcie, czytam krzaczki w notepadzie aby sklasyfikowac typ presetu, wpisuje tablice

wyszukan na twardo w kodzie (zanim znajde lepsza metode). Teraz moge wczytac presety do aplikacji wsadowej, pieknie.

Skladam baze danych w postaci normalnej, kilka tabel aby moc zapisywac kolekcje, wersje i przelozyc to na scieki na dysku.

OK, mam api bazy danych w pythonie, moge tworzyc folderki z numerkami wersji automatycznie. Dzieki temu kazda

nowa wersja ma swoje miejsce. Na szczescie DAW przechowuje relatywne sciezki do sampli audio.

Dodaje detekcje i kopiuje wszystkie pliki wave do wersjonowanej struktury w celu zachowania historii.

Ponad to, dodaje eksport presetow jako wersjonowane pliki oraz pliki wsadowe z komendami celem

manualnego przetwarzania poszczegolnych kanalow w razie problemow lub lokalnych zmian.

 

Miele projekt z DAW aplikacja wsadowa, nic nie dziala. Aplikacja nie moze znalezc pluginow mimo iz

wszystko ustawione jak dokumentacja sugeruje. Znajduje odwolania do sciezek pluginow w xml'u, dodaje, nadal nic.

Zagladam do debuggera i okazuje sie ze brakuje slashy na koncach sciezek (ani slowa o tym w dokumentacji), super, dodaje slashe.

Teraz aplikacja moze przetwarzac tylko 8 pluginow jednorazowo, zmieniam kod na 256 i kompiluje ponownie.

Okazuje sie ze pluginy ktorych uzywam sa dwoch roznych typow, vst is shell-vst.

Moj kod nie obsluguje shell-vst, dodaje odpowiednie nazwy w komendzie wsadowej pod tymczasowym switchem testuje, dziala.

Nie lubie switcha, dodaje listing typow i nazw pluginow do aplikacji wsadowej, parsuje output z lini komend i buduje

liste odwolan dynamicznie. Dziala pieknie. Aplikacja przetwarza sciezke za sciezka, troche wolno, 30 minut * 6 sciezek + master.

Dodaje szybko przetwazanie rownolegle w pythonie i ograniczam ilosc do liczby procesorow w maszynie (4 w tym wypadku)

na niskim priorytecie abym mogl nadal komputera uzywac w trakcie przetwazania. Wszystko pieknie smiga ale biblioteka

nie odzyskuje wolnych watkow z puli i czeka az wszystkie skoncza, troche slabo. Szukam w sieci, wyglada jak ograniczenie

bliblioteki pythona. Znalazlem bug report gdzie ktos opisal problem i bez zglebiania tematu odkladam to na pozniej.

Jest szybciej i moge pracowac w DAW, co prawda nie brzmi

tak pieknie jak po przetworzeniu ale przyblizenie jest dosc dobre.

 

Teraz czas na master bus. sciagam sox (darmowy program do obrobki audio) i konfiguruje aby skleil przetworzone

sciezki w jeden plik i przepuszczam ten plik ta sama metoda jak wszystkie inne kanaly z ta tylko roznica, ze

informacja o pluginach pochodzi z galezi master bus z xml'a zamiast z odpowiednio nazwanych sciezek.

Zapomnialem wczesniej dodac, aby znalezc odpowiednie kanaly w xml'u zastosowalem konwencje nazywania kanalow,

cos jak "*AudIN" (audio in).

 

W tym momencie, aby przetowrzyc nowa werje setu, musze wywolac pythonowy skrypt ze sciezka do natywnego pliku

DAW, to za duzo. Dodaje programik sledzacy zmiany w folderze i gdy kopiuje tam plik, caly proces startuje automatycznie.

Nadal za malo gdyz otwieranie folderu z plikiem i double click w celu odsluchania to stanowczo za duzo pracy.

Dodaj kilka funckji generujacych nowy projekt dla DAW z wpietymi oryginalnymi i przetworzonymi plikami audio i

kopie wylaczonych pluginow z oryginalnego projektu aby moc A|B porownac efekty.

W ten sposob nie mam referencji do instrumentow i projekt jest o 80% lzejszy wiec da sie jako tako odsluchac brzmienie

zmian w ustawieniach pluginow. Zmieniam ustawienia, zapisuje do folderu, przepuszczam przez pipe i otwieram nowy projekt, i

tak w kolo macieju.

 

Programowanie narzedzi do generalnego pipeline w produkcji vfx czy animacji tak naprawde nie rozni sie wiele

od opisanego procesu. Zazwyczaj, efektem koncowym tej calej akrobatyki, jest system sluzacy jako wartstwa abstrakcji

miedzy uzytkownikiem i poszczegolnymi systemami dramatycznie skracajaca czas treningu i efektywnosc artysty.

Idealnie, ten sam interfejs do wszystkich programow pozwalajacy na wykorzystanie najsilniejszych stron kazdego

z nich w najkrotszym mozliwym czasie. Dokladnie tak samo jak interfejs maya jest warstwa do

podsystemow animacyjnych, modelowania czy efektow.

 

Mam nadzieje ze ten opis przybliza nieco process automatyzacji i obrazuje fakt iz praca pipeline td jest dosc interesujaca dla osob ktore lubia rozwiazywac zlozone problemy i dobrze radza sobie z frustracja w sytuacjach wygladajacych na "bez wyjscia". Wyjscie z sytuacji zawsze sie znajdzie, niekoniecznie takie samo jak oryginalnie zalozone lecz cel uswieca srodki. Wedlug mnie jest to bardzo ciekawa praca, szczegolnie ostatnio kiedy jest tyle parcia na realtime i coraz czesciej potrzebna jest automatyzacja zadan w silnikach takich jak unreal czy unity i ogolnie granica miedzy silnikami i aplikacjami dcc powoli sie zaczyna rozmywac.

 

Dlaczego ludzie sie tego nie ucza ? Malo kto wie na czym polega praca pipeline td ?

Edytowane przez CgBartosz
Odnośnik do komentarza
Udostępnij na innych stronach

Tak robie. Mam kilka syntezatorow zewnetrznych, nie uzuwam VSTi, jakos lubie urzadzenia z pokretlami i guziczkami.

Caly projekt jest oparty na midi aby miec latwosc wymiany dzwiekow i strojenie. komponuje w ten sposob jeden ciagly set.

Musi koniecznie dzialac w realtime bym mogl swobodnie manipulowac pokretla. Nagrywam to do audio i powstaje 6 sciezek. Na kazdej sciezce mam lancuch pluginow do saturacji, eq, kompresory, mozesz to nazwac "mastering/saturation chain". Nagrywanie instrumentow wraz z wlaczonymi pluginami powoduje dropouty bo komputer nie wyrabia. Przesunalem ten proces w inne miejsce i moge teraz pracowac bez tego lancucha i poprostu renderuje "preview" na innej maszynie, lub na bardzo niskim priorytecie w tle. DAW i tak nie byl w stanie wykorzystac 100% mocy obliczeniowej a jedynie 50%. Zazwyczaj przerwarzam wszystkie sciezki w ten sposob i na koniec, w kolenym projekcie dodaje jeszcze kilka lancuchow i renderuje sendy z efektami juz do jednej finalnej sciezki.

Odnośnik do komentarza
Udostępnij na innych stronach

Dlaczego ludzie sie tego nie ucza ? Malo kto wie na czym polega praca pipeline td ?

 

Dla mnie to jest po prostu za trudne :P Ale zazdroszczę ludziom którzy jak im coś nie działa to sobie potrafią naprawić albo napisać narzędzie pod siebie. Załączam film po którego obejrzeniu prawie dostałem depresji, bo tak bardzo by mi się takie coś przydało. Tutaj akurat napisali sobie narzędzie przydatne w montażu.

 

Odnośnik do komentarza
Udostępnij na innych stronach

Bartosz, coś nie mogę wysłać PM, ślij cokolwiek na [email protected]! albo sc:

 

PS bo chłopaki tutaj siedzicie w temacie, pod koniec przyszłego roku prawdopodobnie będę chciał się podlizać na rozmowie o pracę i Wasza rozmowa o 'pisaniu narzędzi' otworzyła mi tak naprawdę oczy. wyobraziłem sobie narzędzia, które optymalizują modelowanie architektury do procesu ładowania rysunków 2D i wypluwania przez maxscript niekompletnego modelu oraz środowiska do rewizji, ale już po odwaleniu "brudnej roboty" klikacza. nie chcę mieć nic wspólnego z AI, ale czy - według Was - możliwe jest napisanie narzędzi, podobnych skryptom już gotowym do pobrania, przez kogoś kto w podstawówce olewał matmę ale zna dobrze znój własnej niszy? czy chęci i wgląd w specjalizację wystarczą do produkcji narzędzi, czy jednak doświadczenie rzemiosła programistycznego, wliczając w to poparzenia przez kod gorący do białości jest niezbędne, by w przyzwoitym czasie przechylić binarną szalę na swoją stronę?

Edytowane przez polka dot
Odnośnik do komentarza
Udostępnij na innych stronach

Da radę, teraz jest tyle kursów, że możesz znaleźć coś, co Tobie podpasuje. Matematyki w programowaniu nie używa się w większości, chyba, że robisz ultra zaawansowane rzeczy jak silnik renderujący. Więc spoko, jeżeli wiesz co chcesz uzyskać, będziesz miał na pewno mega przewagę z takim skillem.

Odnośnik do komentarza
Udostępnij na innych stronach

Pytaniem nie jest czemu nie ucza sie pipeline TD... Pytaniem jest czy polskie firmy sa w stanie kogos takiego wogole wysluchac i zrozumiec. U nas wiekszosc to jakies kozaki, janusze co mowia w stylu:

 

"Paaaanie! Co to tam pipeline ja sobie w tym programie to poukladam i co mi tam bedziesz mowil ze to stary program i tak dalej. Najwidoczniej nie znasz pan rzeczywistosci".

 

Ile razy nie pracowalem w tym kraju. Tu zawsze kazdy jest madrzejszy od drugiego. Nie ma dyskusji na argumenty. Jedynie hejty i obgadywanie. A jak szef przyjdzie to teeen to ma dopiero zawsze racje : )

 

Jezeli chcecie miec profesjonalistow najpierw musicie sami stac sie profesjonalni. Dopiero potem mozecie oczekiwac ze ktokolwiek z wiedza bedzie chcial z wami pracowac. Minie jednak kolejne 10-15 lat zanim do konca trafi do tych pustych lbow ze samemu sie nie da wszystkiego.

Odnośnik do komentarza
Udostępnij na innych stronach

PS bo chłopaki tutaj siedzicie w temacie, pod koniec przyszłego roku prawdopodobnie będę chciał się podlizać na rozmowie o pracę i Wasza rozmowa o 'pisaniu narzędzi' otworzyła mi tak naprawdę oczy. wyobraziłem sobie narzędzia, które optymalizują modelowanie architektury do procesu ładowania [...]

 

Dasz rade. Dobra znajomość maksa ci pomoże, bo automatyzacja to de facto przekładanie ręcznego klikania na kod.

Ja co prawda nie zaczynałem od maxscriptu, tylko od actionscriptu a potem javascriptu, więc miałem już jakąś wiedzę jak porządkować kod, itd. Problem z MS jest taki, że w porównaniu do nieniszowych języków, materiały szkoleniowe ssą. Ale dasz rade.

 

Ja sobie w pracy sporo rzeczy zautomatyzowałem.

Za opcję copy/paste obiektów miedzy instancjami otwartych maksów chłopaki z biura od 3 lat mi całują stopy.

Jeżeli masz dysk sieciowy to można kopiować nawet między różnymi komputerami, coś w stylu:

-ma ktoś w scenie telewizor?

-ja mam

-to weź skopiuj

-ok, już możesz wlepiać.

 

Ostatnio renderujemy w pracy sporo powtarzalnych patternów jako heightmapy (vrayzdepth). Ręczne ustawianie min/max distance bardzo szybko zaczęło być koszmarem. Więc napisałem automat który w kilka sekund znajduje te wartości.

 

Problem maxscriptu jest taki, że jest mega wolny.

Odnośnik do komentarza
Udostępnij na innych stronach

ale czy - według Was - możliwe jest napisanie narzędzi, podobnych skryptom już gotowym do pobrania, przez kogoś kto w podstawówce olewał matmę ale zna dobrze znój własnej niszy? czy chęci i wgląd w specjalizację wystarczą do produkcji narzędzi, czy jednak doświadczenie rzemiosła programistycznego, wliczając w to poparzenia przez kod gorący do białości jest niezbędne, by w przyzwoitym czasie przechylić binarną szalę na swoją stronę?

 

Olaf dobrze prawi, matematyka ne jest kluczem do pisania skryptów. Sam nie byłem prymusem z matmy a jakoś w pisaniu kodu mi idzie ;P

Podstawa to logiczne przełożenie swoich powtarzalnych patentów maxowych na kod. Generalnie MAXScript reference ze strony autodesku ssie kiche jeżeli jest się początkującym (na początku miałem problem ze zrozumieniem co oni tam w ogóle piszą), nie jest pisane dla noobusera tylko dla ludzi którzy już są w temacie. MAXScript sam w sobie jest raczej prosty do nauki, jeśli nie masz doświadczenia programistycznego to nie masz się czego obawiać. Z resztą, większość kodu wypluje Ci maxscript listener, potem wystarczy to wkleić w kod i zrobić jakieś przyciski. Metoda brute force, ale działa :D Do szybkiego projektowania narzędzi jak znalazł.

A jeśłi jest się użytkownikiem maxa to przynajmniej podstawy warto znać. Większość nie zdaje sobie sprawy ile czasu zaoszczędza się gdy ma się swoje toole przystosowane do swojego workflow. Jeden klik zrobi za Ciebie bardzo dużo.

Sam nie jestem specem od skryptów, ale z własnego doświadczenia wiem że warto.

Odnośnik do komentarza
Udostępnij na innych stronach

Problem maxscriptu jest taki, że jest mega wolny.

 

To troche tak jakbys powiedzial, ze w kontekscie wyscigow rownoleglych walec jest wolny... Tutaj zgodze sie z Toba bo jest !

 

Maxscript to nie tylko jezyk skryptowy, 3dsmax ma mechanizmy (Function Publishing) pozwalajace rozszerzyc funkcjonalnosc w c++. Wielokrotnie daje to wiecej mozliwosci niz wbudowane funkcje.

Inne jezyki takze sa osadzone w maxscript, dla przykladu dotNet oraz ostatnio python.

SDK maxa ma bardzo wiele przykladow ktore mozna szybko przerobic na wlasne potrzeby jesli mxs okazuje sie nieodpowiedni do sytuacji i staje sie ograniczeniem.

 

https://help.autodesk.com/view/3DSMAX/2016/ENU/?guid=__files_GUID_016E96CE_F224_458D_9AC8_84C8E8403D5E_htm

 

Przyklad funkcji maxscript w c++:

#include 
#include 
def_visible_primitive(IntervalArray, "IntervalArray");
Value* IntervalArray_cf(Value **arg_list, int count)
{
  return &ok;
}

Edytowane przez CgBartosz
Odnośnik do komentarza
Udostępnij na innych stronach

Maxscript to nie tylko jezyk skryptowy, 3dsmax ma mechanizmy (Function Publishing) pozwalajace rozszerzyc funkcjonalnosc w c++. Wielokrotnie daje to wiecej mozliwosci niz wbudowane funkcje.

Inne jezyki takze sa osadzone w maxscript, dla przykladu dotNet oraz ostatnio python.

 

dotNet faktycznie w wielu skryptach sie przydaje, szczególnie jeśli chodzi o UI.

 

C++ pominę, bo nie jest to język do ogarnięcia "przypadkiem", w czasie ogarniania Maxscriptu :)

 

Python w maxie... cóż:

python.Execute "import sys \nprint(sys.version)"

daje output:

2.7.12 (default, Jan 25 2017, 13:14:03) [MSC v.1900 64 bit (AMD64)]

Cofanie się w featuresach języka o 10 lat, uważam za dość przygnębiające.

Nie będę nawet wspominał ile trzeba zachodu żeby zmusić maxowego pythona do uzywania zewnętrzynych modułów. Co w przypadku chęci udostępniania swoich narzędzi właściwie dyskwalifikuje pythona.

 

Ale masz rację że warto brać pod uwagę kooperacje maxscriptu z innymi językami.

 

Istnieje funkcja do cichego wywoływania programów z commandline.

Daje to dużo możliwości. Można znając np pythona, wygenerować pojedyncze exe z CLI.

 

Takie CLI wywołujesz za pomocną wspomnianego HiddenDOSCommand, przesylasz argumenty, a informacje zwrotną dla Maxscriptu możesz uzyskać na przykład w postaci pliku tekstowego.

 

Jako proof of concept zaimplementowałem to we wcześniej wspomnianym calculatorze zdepth do vraya.

Jak ktoś ma ochote to source jest tu:

https://github.com/deshudiosh/PG.Ms/blob/master/PG.VrayZdepthCalculator.ms

Odnośnik do komentarza
Udostępnij na innych stronach

Hej Deshu,

 

Jak to dyskwalifikuje pythona, uzywam pythona w maxie od 2005 roku bez specjalnych problemow wszystkie. Maya jest wiekszym problemem gdyz Adsk

uzywa innego kompilatora niz python i trzeba budowac wszystkie biblioteki ze zrodel.

W przyszlym roku aplikacje 3d (te mainstreamowe jak hudy, max, maya, itp.. Nuke chyba tez) zostana zmodernizowane i dostana pythona 3.x.Sekunda, zerkne ten skrypcik...

Jeszcze nawiazujac do python 3.0 i jego featuresow ? Ktorych dokladnie features brakuje Ci w pythonie 2.7.12 a ktore ma ostatnia wersja ?

Edytowane przez CgBartosz
Odnośnik do komentarza
Udostępnij na innych stronach

Hej Deshu,

 

Czy te linie zwracaja liste pikseli ? Jaka rozdzielczosc maja te obrazki ?

 

dist_list = exr.get("PG.VrayDepthCalculator.B").flatten().astype(float)
alpha_list = exr.get("A", precision=pyexr.UINT).flatten().astype(float)

 

Masz cos przeciwko aby udostepnic mi jeden z tych exrow? Nie musi byc

z projektu, jedynie by representowal problem i wartosci byly na wszystkich pikselach.

 

Dzieki

Edytowane przez CgBartosz
Odnośnik do komentarza
Udostępnij na innych stronach

Jak to dyskwalifikuje pythona, uzuwam pythona w maxie od 2005 roku bez specjalnych problemow.

2005?

Udostępniasz komuś swoje pythonowe skrypty?

Instalowałeś coś przez PIP do maxowego pythona?

 

Hej Deshu,

 

Czy te linie zwracaja liste pikseli ? Jaka rozdzielczosc maja te obrazki ?

 

dist_list = exr.get("PG.VrayDepthCalculator.B").flatten().astype(float)
alpha_list = exr.get("A", precision=pyexr.UINT).flatten().astype(float)

 

Tak, zwracają płaskie arraye wartości pixeli. Testowałem do 8k.

Odnośnik do komentarza
Udostępnij na innych stronach

2005?

Udostępniasz komuś swoje pythonowe skrypty?

Instalowałeś coś przez PIP do maxowego pythona?

 

Tak, zwracają płaskie arraye wartości pixeli. Testowałem do 8k.

 

Tak, mase rzeczy, nie udostepniam wlasnych co prawda ale kazdy modul zgodny z ABI interpretera

sie normalnie importuje.

 

- - - Połączono posty - - -

 

Hej Deshu,

Znajdziesz jakiegos exrka z tymi atrybutami ? Chce sprawdzic czy bedzie szybciej w c++. Napewno ladowanie 8k z dysku zajmie troche czasu.

Jak dlugo sie wykonuje Twoj skrypt ?

Odnośnik do komentarza
Udostępnij na innych stronach

Tak, mase rzeczy, nie udostepniam wlasnych co prawda ale kazdy modul zgodny z ABI interpretera

sie normalnie importuje.

 

No dobra, czyli nie można twoich toolsów po prostu ściągnąć i uruchomić u siebie. Trzeba najpierw poinstalować biblioteki pythonowe, czego ktoś kto nie programuje, nie ogranie w 3 minuty.

 

- - - Połączono posty - - -

 

Hej Deshu,

Znajdziesz jakiegos exrka z tymi atrybutami ? Chce sprawdzic czy bedzie szybciej w c++. Napewno ladowanie 8k z dysku zajmie troche czasu.

Jak dlugo sie wykonuje Twoj skrypt ?

 

Tu jest testowy: https://github.com/deshudiosh/PyMs/tree/master/assets

 

Jutro mogę podesłać jakiś w 8k (ten testowy jest za pewne mniejszy), i powiedzieć ci ile się to u mnie wykonuje.

 

P.s. strasznie offtopujemy. Pisz na PM.

Odnośnik do komentarza
Udostępnij na innych stronach

P.s. strasznie offtopujemy. Pisz na PM.

 

Ojej, sorry, nie zauwazylem, skoncentrowalem sie na rozwiazywaniu sytuacji z wolnym pythonem.

Ktos chetny do kontynuowania glownego tematu ? Moze trzeba poprostu juz zamknac ten watek ?

Edytowane przez CgBartosz
Odnośnik do komentarza
Udostępnij na innych stronach

Dlaczego straszny off-top? Moze temat troche odbiega od glownego watku ale mimo wszystko wydaje mi sie dosc powiazane. Zaciekawilo mi mnie to co tu piszecie deshu i CgBartosz. Chyba ze rzeczywiscie inni bywalcy forum tez uwazaja to za byt duzy offtop wtedy warto byloby zalozyc dla tej waszej dyskuji osobny watek bo dosc ciekawa

Odnośnik do komentarza
Udostępnij na innych stronach

W nowym wątku pewnie będzie ciężko to znaleźć. W sumie fajnie przeszliście od teorii do praktyki więc każdy Wannabie może od razu powąchać problem bez zderzenia się twarzą ze specyfikacją i dokumentacją, co zawsze na początku boli ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, spoko chłopaki, w takim razie kontynuujmy tutaj.

 

CgBartosz:

Wrzucilem na wetransfer testowy exr w 2k i w 8k:

https://we.tl/t-az9nyBDT0Z

 

2k wykonuje się u mnie poniżej 3sek, 8k to już ponad 30sek.

 

Zupdatowałem VrayZdepthCalc.ms - teraz printuje czas szukania wartości przez PyMs.exe.

 

Bardzo chętnie przyjmę wszelkie pomysły na optymalizacje:)

Odnośnik do komentarza
Udostępnij na innych stronach

Heja, Deshu,

 

Zlozylem apke w c ale wiekszosc czasu spedza na czytaniu pliku z dysku. Czy exr jest skompresowany ? Na moim komputerze cala operacja to okolo 23 sekundy (przy odczycie ~32Mb/s) z czego 22 spedzone na czytaniu danych z dysku.

Jesli w twoim wypadku cala operacja zajmuje 30 sekund to jest wolniej. Do czego uzywasz kanalu alfa, mozesz zzrezygnowac z wczytywania tego kanalu ? Moze daloby sie policzyc te wartosci wprost ze sceny iterujac po bounding boxach i wybierajac najblizszy i najodleglejszy punkt ?

Odnośnik do komentarza
Udostępnij na innych stronach

Zrobilem tescik w innym jezyku i bez alfy (nadal nie wiem po co filtrowac przez alfe). Tutaj ogolny czas to 10.743991487S sekund

a wartosci ktore otrzymalem to : ::-214.834 -124.402 (Deshu, zgadza sie ? pewnie nie, LOL).

 

Co ciekawe, srednia odczytu z dysku to okolo 68Mb/s co sprawia iz mysle ze skompilowalem C++ w debugu (sciagnalem bilbioteki z netu).

Przebuduje je pozniej w tym tygodniu i sprawdze ponownie C++.

 

fn main() {

let start = PreciseTime::now();

       let mut file = std::fs::File::open("X:/Temp/massivedesign-dd8e20/VrayZdepthCalculator_RGBA_8k.exr").unwrap();

let mut input_file = InputFile::new(&mut file).unwrap();
let (width, height) = input_file.header().data_dimensions();

       println!("{} {}",width, height);

let mut pixel_data = vec![0.0f32; (width*height) as usize];
{
    let mut fb = FrameBufferMut::new(width, height);
    fb.insert_channels(&[("PG.VrayDepthCalculator.B", 0.0)], &mut pixel_data);
    input_file.read_pixels(&mut fb).unwrap();
}

let mut min_val = f32::MAX;
let mut max_val = f32::MIN;

for x in pixel_data.iter_mut() {
	let y = *x;
  		min_val = min_val.min(y);
  		max_val = max_val.max(y);
}

println!("::{:.3} {:.3}",min_val,max_val);

let end = PreciseTime::now();

println!("Processing Time: {:.3}", start.to(end));

}

 

8192 8192
::-214.834 -124.402
Processing Time: PT10.743991487S

Edytowane przez CgBartosz
Odnośnik do komentarza
Udostępnij na innych stronach

Alpha jest mi potrzebna w przypadkach, gdy nie kazdy pixel displacementu trafia w jakiś obiekt. Może byc tak, że na mapie jest np okrągla główka śrubki. Wtedy pixele z vraysamplerinfo ktore nie trafiły w żaden obiekt mają wartość równą 0. Dlatego potrzebuje alphy (de facto binarnej), by nie brac ich pod uwagę.

 

Na pewno niepotrzebnie spłaszczam arraye do jednego wymiaru, ale nie znam numpy w ogóle.. To zajmuje czas. Jest wiele pól do optymalizacji.

 

Podeślesz co masz, może będę umiał tego uzyć:)

Odnośnik do komentarza
Udostępnij na innych stronach

Poszlo na PM. Uzycie bardzo proste:

import pymodulelib
pymodulelib.load_exr("sciezka do pliku exr")

 

Wszystkie zaleznosci powinny byc statycznie skompilowane z modulem. Dziala z pythonem 3.6.4 [MSVC v.1900 64bit (AMD 64)]

 

Dziala ?

Edytowane przez CgBartosz
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