CgBartosz 93 Posted September 16, 2018 (edited) 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 Edited September 16, 2018 by CgBartosz Share this post Link to post Share on other sites
deshu 745 Posted September 16, 2018 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. Share this post Link to post Share on other sites
CgBartosz 93 Posted September 16, 2018 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 ? Share this post Link to post Share on other sites
deshu 745 Posted September 16, 2018 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. Share this post Link to post Share on other sites
CgBartosz 93 Posted September 16, 2018 (edited) 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 ? Edited September 16, 2018 by CgBartosz Share this post Link to post Share on other sites
Pawelkos 269 Posted September 17, 2018 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 Share this post Link to post Share on other sites
olaf 4,029 Posted September 17, 2018 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 ;) Share this post Link to post Share on other sites
deshu 745 Posted September 18, 2018 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:) Share this post Link to post Share on other sites
polka dot 608 Posted September 18, 2018 dzięki chłopaki za ciekawą dyskusję, dobrze się to czyta Share this post Link to post Share on other sites
CgBartosz 93 Posted September 20, 2018 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 ? Share this post Link to post Share on other sites
CgBartosz 93 Posted September 20, 2018 (edited) 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 Edited September 20, 2018 by CgBartosz Share this post Link to post Share on other sites
CgBartosz 93 Posted September 21, 2018 Hej Deshu, Mam dla Ciebie skompilowany modulik pythonowy z ta funkcja. Chcesz sprobowac ? Share this post Link to post Share on other sites
deshu 745 Posted September 21, 2018 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ć:) Share this post Link to post Share on other sites
CgBartosz 93 Posted September 22, 2018 (edited) 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 ? Edited September 22, 2018 by CgBartosz Share this post Link to post Share on other sites