Jump to content
Kroopson

Czemu ludzie się tego nie uczą...

Recommended Posts

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 by CgBartosz

Share this post


Link to post
Share on other sites
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
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
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

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 by CgBartosz

Share this post


Link to post
Share on other sites

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

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

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

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

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 by CgBartosz

Share this post


Link to post
Share on other sites

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

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 by CgBartosz

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

We are using cookies. Read about our Privacy Policy