Skocz do zawartości

Dynamiczna globalna iluminacja w CryENGINE 3


adek

Rekomendowane odpowiedzi

  • Odpowiedzi 76
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

kengi.. nie wiem... średnio sie tym interesuje... dla mnie gry oparte na vertexach, texturach i tym całym 3d... są nic nie warte... chyba że jest dobre story... wtedy mozna przymróżyć oczy... ale jak niemcy się za coś biorą to albo wychodzi masakra... albo banał...

Odnośnik do komentarza
Udostępnij na innych stronach

@Arti - Nie, nie było. Ta gra była robiona pod konsolki - chyba nie myślisz, że uciągnęłyby w sensownej jakości GI w czasie rzeczywistym?

 

@norden - Nie da się ukryć, iż masz rację, ale... To jest forum graficzne i temat o silniku do gry, więc takie teksty w tym kontekście są jakby trochę nie na miejscu :P

Odnośnik do komentarza
Udostępnij na innych stronach

lucek>// nie będe ukrywał... lubie sprites...i wszystkie prerenderowane gierce typu commandos/starcraft 1/ Legend of Kyrandia: Hand of Fate/ Syberia/ The Longest Journey... Dreamfall również ale tam już jest kanciasto...za to historia gniecie... Ja sie ostatnio w wątku Grzesia wypowiadałem troche na ten temat... http://max3d.pl/forum/showpost.php?p=949239&postcount=71

 

Dopóki gierce nie będą voxelowe... to nie będzie prawdziwego 3D... Teraz to co mamy to jedynie taki troszke bardziej złozony wolfenstein. swiat rzeczywisty ktory postrzegamy w uproszczeniu jest transformacją n-1 wymiarów... zeby gra była prawdziwym odwzorowaniem rzeczywistości lub rzeczywistosci fikcyjnej...obiekty które tworzą obraz gry nie powinny być jedynie transformacją punktów w przestrzeni 2D+czas do obrazu wyświetlanego również 2D+czas... Powinna zachodzić transformacja n-1...

 

obejrzycie sobie chociażby to by nastawić się pozytywnie do voxeli: http://www.3d-coat.com/voxel-sculpting/

 

uzycie voxeli w grach przyszłości da taki efekt np dla wody:

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

Tak poza tym, czy przypadkiem w Mirror's Edge nie było już globalnej iluminacji w czasie rzeczywistym? A przynajmniej coś co świetnie imitowało ten efekt.

 

GI było wypalone do textur za pomocą Beast. Obiekty dynamiczne były prawdopodobnie oświetlone matrycą wyliczonych wcześniej świateł. Nie znam dokładnie implementacji Beast w Unrealu, ale mniej więcej tak jest to zrobione teraz w Lightmass (inny GI solver zintegrowany z Unrealem)

 

Co do voxeli to poczekam, aż choć jeden engine będzie na tym działać (i nie mam na myśli Delta Force ;) ). Na razie to tylko gadanie.

Odnośnik do komentarza
Udostępnij na innych stronach

Mnie bardziej podnieca myśl na temat jakie zniszczenia będziemy mogli dokonać w świecie gry opartej na voxelach. Ale jakoś to do mnie nie przemawia - efekt czy to voxel czy model "z siatki" jest taki sam, a ilość detalu znacząco różna.

Odnośnik do komentarza
Udostępnij na innych stronach

nordenie przesadzasz z tym wszystkim

a tego postu o transformacjach nie kumam kompletnie i niby jak te transformacje mam odniesc do gry? wogole o co ci chodzi? jasniej prosze troche;)

Odnośnik do komentarza
Udostępnij na innych stronach

z transformacjami chodziło o to że wszystko co postrzegasz jest z perspektywy twojej świadomości o jeden wymiar uboższe... czyli np jeżeli masz świat w którym przed toba znajduje się tesserakt a otacza cię 4 wymiarowa przestrzeń ty jako widz dostrzegasz jedynie sześcian w danej chwili oraz trójwymiarową przestrzeń wokół siebie.

 

Tego samego rodzaju transformacja powinna zajść w przypadku próby kreacji wirtualnego świata... by do twoich oczu dotarł obraz przekształcony do n-1 wymiarów...

 

Mozna sie łątwo przekonać o tym że tak jest wyobrazając sobie każdą chwilę teraźniejszości jako klucz na timeline... każda skluczowana "scena" twojej rzeczywistości jest trójwymiarowa...jednak jeżeli wyskoczysz ponad "scenę" dostrzezesz że takich skluczowanych scen jest więcej... i teraz znajdujesz się w wyższym wymiarze gdzie widzisz cały timeline jednocześnie stając się istotą bezczasową ;)... tak czy inaczej twoja oryginalna przestrzeń była przestrzenią 4-1 wymiarów dopiero gdy znalazłeś się wyżej dostrzegłeś 4 wymiar... Gry tzw 3D natomiast sa płaskie... cały świat tak jak został wyliczony w taki sam sposób jest przekazywany do twoich oczu... dlatego istnieją w grach problemy których nie da się przeskoczyć do momentu podniesienia przestrzennego "wymiaru gry" o jeden wyżej a nastepnie spłaszczenia go do obrazu przekazywanego do twoich oczu...2D+czas

 

Odpal dowolną grę... jezeli zobaczysz gdzieś przecinające się krawędzie... albo dym który geometria ucina... lub źle zmapowaną teksture...mozesz być pewien że tego rodzaju "wały" a jest mnóstwo takcih efektów... nie znikną dopóki przestrzen gry nie będzie liczona za pomocą voxeli

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

To nie są voxele tylko o point cloud, a jest to rzecz, która jest strasznie do dupy i jakość obrazu strasznie spada w porównaniu do dzisiejszych gier (nie bez powodu, nie ma tam cieni czy są tak słabe shadery - po prostu sposób przechowywania danych te rzeczy tak utrudnia, że wprost nie da się zrobić tego w czasie rzeczywistym)... a samo unlimited dotyczy się również sprzętu - do tego musisz mieć nielimitowaną pamięć i nielimitowaną moc obliczeniową.

 

GI było wypalone do textur za pomocą Beast. Obiekty dynamiczne były prawdopodobnie oświetlone matrycą wyliczonych wcześniej świateł. Nie znam dokładnie implementacji Beast w Unrealu, ale mniej więcej tak jest to zrobione teraz w Lightmass (inny GI solver zintegrowany z Unrealem)

Niekoniecznie za pomocą Beast - mogłobyć wypalone za pomocą jakiegokolwiek programu graficznego (Blender (Bake, Full Render i Radiosity i też będzie w grze GI ;p), 3ds Max, Vray) - po prostu obiekty mają 2x UV i drugie uv służy do lightmap (dawniej wypalało się tylko cienie, a teraz już całe GI idzie i nawet na telefonach w grach jest takie GI).

 

wszystkie prerenderowane gierce typu ...Syberia/ The Longest Journey... Dreamfall

Na grach się znasz - chociaż to są gry których ciężko nie lubić ;p - (chociaż w wypadku Syberii/Dreamfall (i częściowo TLJ) nie ma mowy o prerenderowanych rzeczach - Dreamfall wszystko idzie w RT. Syberia to normalne postacie 3d renderowane RT, a tła nie są prerenderowane... tylko malowane (niektóre w TLJ też)).

 

Dopóki gierce nie będą voxelowe... to nie będzie prawdziwego 3D... Teraz to co mamy to jedynie taki troszke bardziej złozony wolfenstein. swiat rzeczywisty ktory postrzegamy w uproszczeniu jest transformacją n-1 wymiarów... zeby gra była prawdziwym odwzorowaniem rzeczywistości lub rzeczywistosci fikcyjnej...obiekty które tworzą obraz gry nie powinny być jedynie transformacją punktów w przestrzeni 2D+czas do obrazu wyświetlanego również 2D+czas... Powinna zachodzić transformacja n-1...

Voxele prawdopodownie nie będą nigdy w grach. Jednak zastanawia mnie to co mówisz, bo w wypadku Voxeli też jest obraz przekształcany do 2d (musi być przekształcony do obrazu 2d NxM pikseli taki jak ekran może wyświetlić). Tu nie ma różnicy pomiędzy między voxelami, a siatką gdzie punkty są 3d (w obu przypadkach, masz punkty zawieszone w przestrzeni 3d (w wypadku voxeli po prostu marnujesz sporo pamięci i czasu), a raytracing/rasteryzacja przekształca dane 3d do 2d (rasteryzacja przed obliczeniami shaderów i kolorów, przez co trudniej o GI czy odbicia, ale za to jest dużo wydajniej)).

 

uzycie voxeli w grach przyszłości da taki efekt np dla wody:

Fajnie... tylko, że to co pokazałeś nie ma nic wspólnego z voxelami, a jak sama nazwa filmiku wskazuje cząsteczkami (tu nie ma NxMxK rozdzielczości z góry ustalonej i z góry ustalonej szczegółowości której nie możesz sobie zwiększyć w trakcie działania tak jak w Voxelach - tu są cząsteczki, czyli luźno zawieszone w przestrzeni punkty (nie marnuje się miejsca, czasu, cząsteczki mogą iść gdzie chcą (nie ogranicza się z góry, że przestrzeń ma ograniczone wymiary NxMxK, tylko może w trzech wymiarach wyskoczyć cząsteczka gdziekolwiek chce))).

To co pokazałeś to normalny fluid, który za chwilę będzie dostępny w praktycznie każdej grze (teraz mimo promowania przez nVidię nie wchodzi, bo działa tylko na PhysX i kartach nVidii w przyzwoitym czasie... pod koniec roku jednak wychodzi Bullet Physics 3.0 który będzie liczył za pomocą OpenCL (czyli działa zarówno na nVidii, Ati, prockach Intel(ma wydać implementacje na swoje CPU pod koniec roku)/AMD czy ARM/PPC)).

PS. to co pokazałeś polega na tym samym co

tylko tu jest słabszy renderer (ale można już się zbliżyć do tego co pokazałeś, w czasie rzeczywistym - nie będzie jeszcze to samo (bo tu inny renderer jest, który nie musi się spieszyć z renderingiem), ale już blisko)

PS. Co śmieszniejsze rendering takich fluidów w grach idzie już zupełnie w 2d (w przestrzeni ekranu) ;]. Tu masz papierek:

http://developer.download.nvidia.com/presentations/2010/gdc/Direct3D_Effects.pdf

 

Podsumowując voxele nic nie dają poza spowolnieniem i większym zapotrzebowaniem na ram... to, że modele są kanciate to nic (dasz tessellację i nie będzie, a będzie i tak wydajniej niż voxele (co więcej tu spodkasz się z aliasingiem, a robienie antialiasingu 3d (żeby nie mieć kantów) zabije każdy sprzęt)).

 

Odpal dowolną grę... jezeli zobaczysz gdzieś przecinające się krawędzie... albo dym który geometria ucina... lub źle zmapowaną teksture...mozesz być pewien że tego rodzaju "wały" a jest mnóstwo takcih efektów... nie znikną dopóki przestrzen gry nie będzie liczona za pomocą voxeli

Co ma piernik do wiatraka? Te błędy nie mają nic wspólnego z siatką trójkątów i będą tak samo w grafice opartej na voxelach (z mapowaniem tekstury to mnie rozbawiłeś do łez) - tu nie jest problem trójkątów, tylko wydajności i optymalizacji (a takie rzeczy jak dym, najlepiej robić na cząsteczkach (punktach, 3d zawieszonych dowolnie w przestrzeni, a nie na voxelach) - zresztą tak w grach się robi od prawie zawsze, tylko wcześniej bez wolumetryki i aby było wydajniej cząsteczką był duży (często wielkości odpowiedniej kilka metrów^2) czworokąt ustawiony pod kątem prostym do ekranu - przez co były artefakty czasami, ale ogólnie było dużo wydajniej i artefakty były usprawiedliwione)

 

Tego samego rodzaju transformacja powinna zajść w przypadku próby kreacji wirtualnego świata... by do twoich oczu dotarł obraz przekształcony do n-1 wymiarów...

Ekranu nie przeskoczysz, a póki co nie każdy ma hologram w domu (w innym wypadku niezależnie jak generujesz obraz dostajesz 2d). Z tym, że chciałem się zapytać czy Ty naprawdę myślisz, że my widzimy oczami 3 wymiary? Oczy to optyka generująca obraz 2d (tak jak aparaty fotograficzne) - po prostu do oka wpada promień światła i uderza w komórki światłoczułe które są z tyłu oka (po prostu uderza w odpowiedni piksel 2d - mamy bardzo dużą rozdzielczość, bo tych światłoczułych punktów jest dużo ale to dalej 2d (i to dodatkowo tak jak w ekranie lcd/matrycy aparatu, za kolory odpowiadają inne punkty (przez co jak są uszkodzone niektóre to mamy subpiksel (jak jest dużo wypalonych tego samego typu to człowiek jest daltonistą)))) - człowiek właśnie widzi tylko obraz 3d przekształcony do 2d (przestrzeni ekranu/oka). No chyba, że mówiąc o 3d masz namyśli 2x 2d z przesuniętymi obiektywami (czyli stereoskopię), ale to zupełnie inna bajka i też nie widzę przewagi voxeli (które nie są bardziej 3d od punktów 3d w siatce (wręcz przeciwnie)).

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

Myśle że we wszystkim co napisałeś masz racje... Ja tam technikiem nie jestem często biore rzeczy na intuicję...i pisze duzo bzdur kierując sie złymi wnioskami...Dlatego ciesze się że sprostowałeś niektóre rzeczy i podniosłeś wartość tego wątku tym długim postem. Tak czy inaczej chciałbym kiedyś zobaczyc świat wirtualny na poziomie tego rzeczywistego.. I uważam że aby to osiągnąć nie można wspomnieć o słowie optymimalizacja...to jak wiele bedzie trrzeba mocy obliczeniowej do zrobienia tego heh... pewnie dużo.. może nawet będzie trzeba wszystkie planety rozebrać żeby zrobić taki komputer ; ) wazam ze to kwestia czasu 300-400 lat. Dlaczego sie tak upieram przy tym mysleniu... heh bo byc moze czyta to ktos kto kiedyś bedzie robił w Nvidii albo innej firmece i stwierdzi ze już czas... zeby przenieść to wszystko na troche wyższą półkę...i nadać przestrzen i wnętrze obiektom...

Odnośnik do komentarza
Udostępnij na innych stronach

Niekoniecznie za pomocą Beast - mogłobyć wypalone za pomocą jakiegokolwiek programu graficznego (Blender (Bake, Full Render i Radiosity i też będzie w grze GI ;p), 3ds Max, Vray) - po prostu obiekty mają 2x UV i drugie uv służy do lightmap (dawniej wypalało się tylko cienie, a teraz już całe GI idzie i nawet na telefonach w grach jest takie GI).

 

Pisałem o konkretnym przypadku Mirror's Edge, a Dice do ME użyło Beasta zintegrowanego z Unreal Engine 3.

 

http://www.illuminatelabs.com/gallery/mirror-s-edge

 

Nie musisz mi tłumaczyć jak się lightmapy wypala, robię to niemal codziennie.

Odnośnik do komentarza
Udostępnij na innych stronach

Dużo teoretyzowania, a jakoś to wszystko nie składa mi się do kupy kompletnie, ma natomiast z kupą wiele wspólnego ;) Do dzieła panowie graficy i pokażcie jak to powinno wyglądać chociaż na wyrenderowanym z voxeli obrazku statycznym, wtedy pogadamy....

 

Unlimited detail to bardzo ciekawa idea, czekam aż będzie można położyć na tym łapkę ;) Oczywiście ta zmiana zajmie lata żeby się przyjeła - chociażby z tego powodu że będzie trzeba kompletnie wymienić zestaw narzędzi którymi się posługujemy trzeba też będzie zupełnie zmienić workflow przy grach. Może się nawet zdarzyć że w rzeczywistości okaże się że technologia ta sprawia dużo problemów przy praktycznym zastowaniu i zostanie jedynie ciekawostką, jak już wiele pomysłów przed nią.

 

Co do Crysisa to trzymam kciuki, ich silniki zawsze kopały pupę, choć trzeba przyznać że filmiki robią zawsze dużo większe wrażenie niż sama gra (pamiętacie jak wszyscy się slatowali na efekty w Crysysie przy DX10? W samej grze nie było aż takiego szału).

Odnośnik do komentarza
Udostępnij na innych stronach

Unlimited detail to bardzo ciekawa idea, czekam aż będzie można położyć na tym łapkę ;) Oczywiście ta zmiana zajmie lata żeby się przyjeła - chociażby z tego powodu że będzie trzeba kompletnie wymienić zestaw narzędzi którymi się posługujemy trzeba też będzie zupełnie zmienić workflow przy grach. Może się nawet zdarzyć że w rzeczywistości okaże się że technologia ta sprawia dużo problemów przy praktycznym zastowaniu i zostanie jedynie ciekawostką, jak już wiele pomysłów przed nią.

To ja Ci już mówię, że to nie wyjdzie nigdy poza ciekawostkę, bo się nie nadaje do normalnego zastosowania, a uzyskanie takiego efektu jaki mamy dziś w grach jest z tym praktycznie nie możliwe (ciężko nawet uzyskać normalną (no chyba, że mamy na to nielimitowany czas), i nie bez powodu nie ma co szukać, na obrazkach/filmikach shaderów/gi... (są tylko cienie bo wymagają stosunkowo mało obliczeń (przeszukać drzewo czy w kierunku światła widzi chmurę pkt))). Unlimited detail to tylko sposób na wyciągnięcie kasy (żeby się dowiedzieć chodź odrobinę szczegółów i trzeba z tego co pamiętam ich dofinansować... a dowiesz się tego, że nigdy nie będzie użyteczne).

Odnośnik do komentarza
Udostępnij na innych stronach

heh, no normalka byłaby zupełnie zbędna przy takiej ilości prawdziwej geometri... Podoba mi się ich wizja liczenia tylko tych polygonów które są niezbędne do generowania obrazu - 1polygon = 1 piksel na ekranie. Shadery to tylko zdaje się tylko kwestia odpowiedniej mocy obliczeniowej, ale mogę się mylić.

 

Tak czy siak - pożyjemy zobaczymy, na razie traktuję to jako ciekawostkę.

Odnośnik do komentarza
Udostępnij na innych stronach

@ziomuś: Bez normalnej nie obliczysz padania światła, odbicia... praktycznie wygląda to tak, jak na przykładach (nie ma normalnej, nie można obliczać shaderów (bo praktycznie wszystkie shadery materiałów i składowe spectular/difuse/... są liczone tylko dzięki normalnej do powierzchni (do obliczenia koloru potrzebne jest odbicie (kąt odbicia światła... a światło odbija się według praw fizycznych względem normalnej i bez niej tego nie ustalisz)), a jeśli nie masz normalnej to nie masz oświetlenia (tak jak w przykładowych obrazkach)).

Choćbyś nie wiem ile miał punktów, bez normalnych nic nie zrobisz. Shadery mogą być, ale bez normalnej nie zrobisz materiałów, jakie przeważnie chcesz uzyskać (nie shadeless)... a moc obliczeniowa którą trzeba do zdobycia normalnej jest "unlimited".

Odnośnik do komentarza
Udostępnij na innych stronach

Ah, no chyba się nie zrozumieliśmy, ja myślałem o normal mapach ;) A tobie chodziło o coś innego. No faktycznie z tego co piszesz to widzę że może to być problemik hehe, choć na prezentacji twierdzili że problem z cieniami to zupełnie osobna kwestia, niezależna od ich technologi...

 

Czyli na razie o dupe sobie to można potłuc hehe - no nic, przynajmniej nie trzeba będzie całego softu się od zera uczyć ;)

Odnośnik do komentarza
Udostępnij na innych stronach

@Skoti: napisałeś parę mądrych rzeczy, ale zdajesz się napawać swoim sceptycznym podejściem (tak przynajmniej odbieram ton twoich postów) i ograniczasz swoje spostrzeganie.

Po pierwsze technologia UnlimitedDetail nie jest wspierana w tym momencie sprzętowo w żaden sposób. Gdyby klasyczne poligonowe 3d było liczone na CPU to możnaby obalić sensowność tego rozwiązania przy użyciu tych samych argumentów, bo na wyliczenie dobrej jakości grafiki potrzebaby nieskończenie wiele czasu. Po drugie: liczenie normalnych dla point clouda jest jak najbardziej możliwe i wcale nie musi być tak potwornie czasochłonne zważywszy, że z sensowną dokładnością muszą być liczone tylko punkty widoczne w konkretnych pixelach. Do wyliczenia normalnej potrzebne byłoby przechowanie dodatkowo informacji o otoczeniu punktu, a skoro udało się tym panom już całkiem sporo i aktualne rezultaty świadczą o tym, że są oni w stanie bardzo wydajnie przechować wiele informacji, to wstrzymałbym się z radykalnymi ocenami. Poza tym zarówno w kwestii liczenia normalnych jak i innych problemów, rozwiązaniem mogą okazać się nowe rozwiązania sprzętowe.

Odnośnik do komentarza
Udostępnij na innych stronach

@ziomuś: Cienie, a cieniowanie to dwie zupełnie inne sprawy ;]. Cienie to jeszcze pół biedy, bo da się już zrobić przy ~2x (przy jednym świetle) stracie wydajności w porównaniu z bez cieni (tak jak rzucasz promień z kamery i szukasz chmury, żeby znaleźć najbliższy punkt, to rzucasz z tego punktu w kierunku źródła światła i szukasz chmury dla tego promienia). Cieniowanie to opis jak materiał zachowuje się pod danym wektorem światła i wektorem oka - czasami zależy od kąta pomiędzy wektorem oka, a wektorem od światła do punktu odbitym od normalnej (Phong), czasami jest to wektor połówkowy (wektor pomiędzy podanymi wektorami), i sprawdza kąt pomiędzy nim, a normalną (Blinn) - (jakiego modelu cieniowania byś nie wybrał np. Phong, Blinn, Oren–Nayar, Cook–Torrance, Lambert, Ward isotropic/anisotropic, Strauss, Ashikhmin-Shirley, czy jaki sobie nie wymyślisz który ma naśladować realizm (nawet toon), musi wykorzystać normalną).

 

@Skoti: napisałeś parę mądrych rzeczy, ale zdajesz się napawać swoim sceptycznym podejściem (tak przynajmniej odbieram ton twoich postów) i ograniczasz swoje spostrzeganie.

Po pierwsze technologia UnlimitedDetail nie jest wspierana w tym momencie sprzętowo w żaden sposób. Gdyby klasyczne poligonowe 3d było liczone na CPU to możnaby obalić sensowność tego rozwiązania przy użyciu tych samych argumentów, bo na wyliczenie dobrej jakości grafiki potrzebaby nieskończenie wiele czasu. Po drugie: liczenie normalnych dla point clouda jest jak najbardziej możliwe i wcale nie musi być tak potwornie czasochłonne zważywszy, że z sensowną dokładnością muszą być liczone tylko punkty widoczne w konkretnych pixelach. Do wyliczenia normalnej potrzebne byłoby przechowanie dodatkowo informacji o otoczeniu punktu, a skoro udało się tym panom już całkiem sporo i aktualne rezultaty świadczą o tym, że są oni w stanie bardzo wydajnie przechować wiele informacji, to wstrzymałbym się z radykalnymi ocenami. Poza tym zarówno w kwestii liczenia normalnych jak i innych problemów, rozwiązaniem mogą okazać się nowe rozwiązania sprzętowe.

Jasne, że jestem sceptycznie nastawiony, bo programuję grafikę nie od dziś i wiem co w UD piszczy.

UnlimitedDetail nie działa na GPU z bardzo prostej przyczyny - tego typu obliczenia, na GPU są niemożliwe ze względów wydajnościowych, a ilość ramu nie jest wystarczająca dla danych (tu bardziej nadaje się CPU i na nim rendering jest szybszy).

Na wyliczenie podobnej jakości grafiki jak podali w galerii za pomocą siatki i rasteryzacji na CPU jest bardzo szybkie i działałoby w RT (sam pisałem rasteryzer CPU z optymalizacjami jednostek wektorowych SSE2 i mówię Ci, że nie ma z tym problemu - instancing (tu z pewnością jest, i wszystkie te powtarzalne obiekty to jeden obiekt w pamięci, powielany jako instancja), dobre drzewko do przyspieszania testów widoczności w bryle widoku i zasłonięcia i idzie rendering na GPU jak burza (nawet raytracery realtime z siatką są na CPU z teksturami i odbiciami)).

Sąsiednie piksele na renderze nie mają nic wspólnego z normalną w punkcie, a przechowywanie danych o nielimitowanej liczbie sąsiadów wymagałoby niewyobrażalnej ilości pamięci (a na same pozycje nielimitowanej ilości pkt im brakuje ramu, nawet mimo, że widać, że stosują instancing i renderują te same punkty (ten sam model) w wielu miejscach (w normalnej grze (nie takim demie) to nie przejdzie i ramu braknie choćbyś nie wiem ile go miał)).

Co do samych chmur pkt jestem pozytywnie nastawiony i sam je wykorzystuje w renderingu (póki co jeszcze testuję wydajnościowo i jakościowo moją implementację), bo napisałem ostatnio GI do rasteryzera oparte o chmurę punktów, gdzie też tak jak w UD stosuje "wyszukiwanie w strukturze drzewa" punktów (i działa całkiem nieźle... przy rzadkiej chmurze punktów (detale nie muszą być małe... mogą być duże, bo to tylko oznacza, że z tamtego miejsca odbija się takie światło i nie musi być wiele detali, nie trzeba normalnych etc.)).

  • Like 1
Odnośnik do komentarza
Udostępnij na innych stronach

Z góry zakładasz, że twoi rozmówcy nie wiedzą o czym mówią, więc chętnie odpuściłbym sobie dalsza dyskusję, szczególnie, że pomijasz niewygodne dla ciebie kwestie, albo odpowiednio źle interpretujesz lub przekręcasz słowa.

W każdym razie nie pisałem nic o liczeniu normalnej w pixelu tylko liczeniu jej dla konkretnego punktu chmury widocznego w tym pixelu. Mimo, że teoretcznie liczba punktów jest nie limitowana to chyba jesteś na tyle myślący, żeby wiedziec, że w najbliższym otoczeniu ta ilość już jest ograniczona.

Po drugie, nie mówiłem nic o GPU, tylko o tym że Unlimited Detail nie jest wspierane sprzętowo, dlatego że taki sprzęt jeszcze nie powstał a wymaga innego podejścia niż klasyczne 3d.

Ja również programuje grafikę, nie od dziś i zdążyłem się przekonać, ze już niejedno rozwiązanie, które miłośnicy przestarzałych technologii spisali na straty, w dłuższej perspektywie okazywało się przełomowe. Bardzo chętnie zobaczę przykład grafiki o podobnej ilości detalu działającej w RT z poligonów.

Na koniec dodam tylko, że nie widzę w tej technologi żadnego 'zagrożenia' dla typowego poligonowego 3d, natomiast spodziewałbym się w niedalekiej przyszłości engine'ów hybrydowych, o ile oczywiście producenci hardware'u zechcą szerzej otworzyć oczy. Bo o ile rendering postaci przy użyciu pointclouda wydaje się poronionym pomysłem, to użycie tego do tworzenia roślinności oraz innych powtarzalnych i proceduralnych elementów jest już jak najbardziej wskazane.

Odnośnik do komentarza
Udostępnij na innych stronach

A tak odnosnie poprzedniej wypowiedzi. Moze mnie ktos oswiecic jak sie oblicza normalna do punktu?

 

w podtekscie: punktu na powierzchni

skrot myslowyniekumatych>

Odnośnik do komentarza
Udostępnij na innych stronach

W każdym razie nie pisałem nic o liczeniu normalnej w pixelu tylko liczeniu jej dla konkretnego punktu chmury widocznego w tym pixelu. Mimo, że teoretcznie liczba punktów jest nie limitowana to chyba jesteś na tyle myślący, żeby wiedziec, że w najbliższym otoczeniu ta ilość już jest ograniczona.

Jeśli nie chcesz mieć np. na prostej ścianie po zbliżeniu kamery takich artefaktów http://img22.imageshack.us/img22/6489/31224541.jpg to w najbliższym otoczeniu musi być olbrzymia ilość punktów (już pomijam takie oczywiste rzeczy, jak to, że prosta ściana normalnie to 4pkt i jest idealnie płaska... a tu nawet z milionem punktów będzie nienaturalna i będą takie artefakty (za duże żeby tłumaczyć nierównością tynku, co lepiej symuluje i tak normalmapa)).

 

Ja również programuje grafikę, nie od dziś i zdążyłem się przekonać, ze już niejedno rozwiązanie, które miłośnicy przestarzałych technologii spisali na straty, w dłuższej perspektywie okazywało się przełomowe. Bardzo chętnie zobaczę przykład grafiki o podobnej ilości detalu działającej w RT z poligonów.

Możesz powiedzieć o czym mówisz, bo przez dekadę, którą zajmuje się praktycznie tylko tym nie zauważyłem nic co źle rokowało na starcie i okazało się przełomowe... ofc były rzeczy, które od ukazania się na Siggraph czekały przez 5-10 lat na wprowadzenie w grach, ale od razu było widać potencjał i perspektywy, tylko trzeba było przez lata optymalizować i przyspieszać sprzęt - w tym wypadku nie ma ani potencjału, ani perspektyw.

 

Na koniec dodam tylko, że nie widzę w tej technologi żadnego 'zagrożenia' dla typowego poligonowego 3d, natomiast spodziewałbym się w niedalekiej przyszłości engine'ów hybrydowych, o ile oczywiście producenci hardware'u zechcą szerzej otworzyć oczy. Bo o ile rendering postaci przy użyciu pointclouda wydaje się poronionym pomysłem, to użycie tego do tworzenia roślinności oraz innych powtarzalnych i proceduralnych elementów jest już jak najbardziej wskazane.

Ja też nie widzę zagrożenia, bo takiego nie ma, natomiast nie spodziewałbym się takich hybryd, bo to co zrobione za pomocą chmur pkt odstawało by strasznie jakością, a do tworzenia roślin i innych takich elementów się zdecydowanie nie nadaje.

 

A tak odnosnie poprzedniej wypowiedzi. Moze mnie ktos oswiecic jak sie oblicza normalna do punktu?

Normalnej (wektor prostopadły) do punktu w 3d nie da się określić (jest ich nieskończenie wiele). W 3d można określić tylko normalną do płaszczyzny i nie bez powodu grafika 3d opiera się o trójkąty (jedyny wielokąt którego wszystkie wierzchołki znajdują się zawsze w jednej płaszczyźnie). Masz trójkąt ABC (wektory AB, BC, AC i przemnożone przez -1 (czyli BA...) należą do płaszczyzny), więc żeby obliczyć do niego normalną bierzesz wektor AB i mnożysz go wektorowo przez wektor AC (wynikiem iloczynu wektorowego jest zawsze wektor prostopadły do mnożonych wektorów) i masz normalną do płaszczyzny (czyli dla wszystkich punktów A, B i C).

Odnośnik do komentarza
Udostępnij na innych stronach

Wykorzystujesz kilka punktów definiujących powierzchnię w otoczeniu liczonej normalnej i dalej już zwyczajnie jak z poligonami.

Swoją drogą skoro UnlimitedDetail przechowuje pozycję i kolor to może i normalną możnaby upchnąć w jakimś half-floatcie... zależy jakie struktury wykorzystują do zapisu danych. Z resztą to juz zwykłe 'gdybanie'.

 

Edit:

tak właśnie, chociażby siggraphowe nowości, które czakaja nieraz latami, miałem na myśli. Możesz być dla siebie samego wielkim autorytetem, ale nie tobie oceniać czy jest w tej technologi potencjał czy nie.

Jak pokazano w demo, właśnie do kamieni, roślinnosci i innych nieregularnych kształtów, nadaje się to doskonale, a to, że ty wolisz płaskie zmapowane trójkąciki, bo tak robiłeś przez 10 lat, na szczęście nie wszystkich interesuje. Gdyby poligony były liczone na CPU bez antialiasingu i filtrowania to ciekawe co by ładniej wyglądało.... W jednym zdaniu piszesz, że technologia nie ma przyszłosci, po czym wymieniasz przykłady rozwiązań które musiały 'tylko' poczekać na lepszy sprzęt. To już zakrawa na paranoję.

 

Podałeś przykład płaskiej ściany zupełnie potwierdzając fakt, że cudze wypowiedzi traktujesz wybiórczo i nie potrafisz sie sensownie ustosunkować. Dlatego napisałem o enginach hybrydowych, bo wiem doskonale, że nie do wszystkiego się ta technologia nadaje.

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

Voxlap był enginem stricte voxelowym, nie dzialał w oparciu o point cloudy. Natomiast wstawki voxelowe w Buildzie istniały w czasach kiedy nawet poligonowe 3d było w powijakach a ludzie myśleli że postacie ze sprite-ów to szczyt techniki.

Osobiście, jestem po prostu ciekawy jak wyglądałoby dzisiaj 3d, gdyby włożono tyle pracy w rozwój technologi voxel/pc co w poligony. Dzis można tylko zgadywać i liczyć na to że ingoranci się otrząsną ;)

 

EDIT:

swoją drogą, skoro już wspomniałem o spritach to całkiem trafna analogia do tego co się może przydarzyć z technologią 3d w przyszlości. Na poczatku były wolfensteiny, doomy i tym podobne pseudo-3d twory, które w każdym miejscu, gdzie potrzeba było czegoś więcej niż czworokąta, wykorzystywały sprite. Później udało się wprowadzić kanciaste postacie, które przynajmniej były już w pełni 3d, choć wyglądały jak klocki. Do dzisiaj problemem jest zrobienie ładnego w pełni trójwymiarowego drzewa, nie mówiąc już o choince. Może w tym momencie własnie wkracza coś nowego, co na razie tylko cześciowo, a z czasem w coraz większym zakresie zastapi kanciastość w 3d...

...bo teselacja nie sprawi w cudowny sposób, że na jodle wyrośnie 2 miliony szczegółowych igiełek.

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

Wykorzystujesz kilka punktów definiujących powierzchnię w otoczeniu liczonej normalnej i dalej już zwyczajnie jak z poligonami.

Swoją drogą skoro UnlimitedDetail przechowuje pozycję i kolor to może i normalną możnaby upchnąć w jakimś half-floatcie... zależy jakie struktury wykorzystują do zapisu danych. Z resztą to juz zwykłe 'gdybanie'.

Tylko w UnlimitedDetail nie możesz wykorzystać kilku punktów, a kilkaset, kilka tysięcy punktów z najbliższego otoczenia i liczyć powierzchnie każdy z każdym, co już jest wyzwaniem olbrzymim. Żeby upchać normalną trzeba ją na początku obliczyć (i tu jest pies pogrzebany, bo obliczenie normalnych dla wszystkich punktów na scenie nie jest w tej technice możliwe nawet mając dni czy miesiące na obliczenia) i właśnie dlatego tych normalnych tam nie ma.

 

tak właśnie, chociażby siggraphowe nowości, które czakaja nieraz latami, miałem na myśli. Możesz być dla siebie samego wielkim autorytetem, ale nie tobie oceniać czy jest w tej technologi potencjał czy nie.

Siggraphowe nowinki, mają solidne podstawy i dodatkowo coś dają.

Tu ta technologia nic nie daje (a wręcz dużo zabiera), a trzeba czekać na sprzęt 10-20 lat, żeby osiągnąć tym sposobem grafikę jak za lat 90tych.

Ja oceniam tą technologie dokładnie przez to jak ją opisali (zebrali to co od lat 90 programowanie grafiki poznało, i zrobili to coś, co może ładnie wygląda, bo jest bliska naturze (punkty to atomy w normalnym świecie), ale żeby osiągnąć grafikę na poziomie dzisiejszych wierzchołków trzeba czekać dziesięciolecia, a wtedy albo siatki będą już wiele poziomów wyżej (tym bardziej, że już teraz z tesselacją siatka ma więcej wierzchołków i dokładność (nie mówiąc już o jakości i realizmie) niż grafika na Unlimited Detail)).

 

Jak pokazano w demo, właśnie do kamieni, roślinnosci i innych nieregularnych kształtów, nadaje się to doskonale, a to, że ty wolisz płaskie zmapowane trójkąciki, bo tak robiłeś przez 10 lat, na szczęście nie wszystkich interesuje. Gdyby poligony były liczone na CPU bez antialiasingu i filtrowania to ciekawe co by ładniej wyglądało.... W jednym zdaniu piszesz, że technologia nie ma przyszłosci, po czym wymieniasz przykłady rozwiązań które musiały 'tylko' poczekać na lepszy sprzęt. To już zakrawa na paranoję.

Jak pokazano w demo nie nadaje się do kamieni, roślinności... i ogólnie do grafiki ;p.

Nie wolę płaskich trójkącików (wolę tessellację gdzie mam wszystko wydajnie, nie tracę nic z efektów, oświetlenia etc. a mam gęstą siatkę która się ładnie LoD'uje).

Tak tylko te przykłady potrzebowały tylko troszkę lepszego sprzętu i dzięki nim był zysk jakości obrazu. Tu jest strata jakości, a żeby idealny sprzęt do tego (CPU) przyspieszył tak bardzo trzeba czekać z 10-20 lat (aż procki porzucą krzem na grafen), a i wtedy będzie słabo z wydajnością.

 

Podałeś przykład płaskiej ściany zupełnie potwierdzając fakt, że cudze wypowiedzi traktujesz wybiórczo i nie potrafisz sie sensownie ustosunkować. Dlatego napisałem o enginach hybrydowych, bo wiem doskonale, że nie do wszystkiego się ta technologia nadaje.

Nie traktyhe wybiurczo tylko to było komentarzem do fragmentu w którym mówiłeś o samym czysty, UD, a do tego, że nie wszędzie się nadaje odniosłem się później (bo nie nadaje się do niczego)

 

...bo teselacja nie sprawi w cudowny sposób, że na jodle wyrośnie 2 miliony szczegółowych igiełek.

Jak to nie? Właśnie to zrobi (jak kamera zbliży się do gałęzi to siatka się zagęszcza i jest przemieszczana za pomocą normalmapy lub displacement mapy) - dzięki temu jak jesteś blisko widzisz każdą igiełkę, a jak jest daleko to nie (dzięki temu automatycznemu LoD jest wydajnie i nie potrzeba gigantycznej ilości pamięci (co więcej nie traci się innych zalet siatki)).

//edit: pewnie chcesz przykładu to masz (2:37 nie ma "igiełek" (kolców), 2:40 już ma (a to co daleko siatki nie zagęściło bo nie było sensu)):

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

Skoti - nie rozumiem dlaczego z taka zajadloscia atakujesz raczkujaca technologie (ktorej autorzy zaznaczyli ze nie sa grafikami wiec ich twory moga wygladac slabo ;)). Sluchales w ogole tych kolesi na jakiej zasadzie dziala to ich demo? Wlasnie w tym rzecz ze nie musisz juz miec superkomputera zeby to generowac. Tesalacja jest fajna ale tez sie posmarka jek bedziesz chcial wygenerowac galaz z igielkami , bo te igielki sa widoczne juz na wyciagniecie reki i to juz by byly grube tysiace poly. A teraz wez sobie spojrzyj z bliska na drzewo gdzie tuz przy kamerze masz tysiace igielek z ktorych kazda ma ilestam poly... Powodzenia w chodzeniu po lesie.. (no i jak wyobrazasz sobie uproszczenie geometrii galazki z igielkami z ktorych kazda jest czescia obiektu? Jak sie oddalisz to sie zamieni.. na klocek z namalowanymi iglami czy jak? Z tesalacja wciaz jestes skazany na rozwiazania znane od lat - to tylko usprawnienie ale nie przelom). Fajnie, ze lubisz tesalacje ale nie stanowi ona panaceum na wszystkie bolaczki - kamienie w murze to nie to samo co listki i igielki czy trawa.

Niemal wszystkie nowosci i prototypy w fazie raczkowania (ci goscie chyba dopiero szukaja inwestorow - ten ich pokaz bardziej traktowalbym jako proof of concept niz pokaz mozliwosci) nie wygladaja zachwycajaco. Wrozysz z fusow ze potrzeba dziesiecioleci zeby dalo sie to wykorzystac. Moze tak, moze nie - ale bycie takim zamknietym na nowinki jest bezsensowne. Zobaczymy co z tego wyjdzie - na pewno jest to bardziej obiecujace niz tesalacja ktora zeby byc lepsza bedzie potrzebowala coraz to lepszego sprzetu. Na razie cieszmy sie tym co mamy a potem zobaczymy co przyniesie przyszlosc.

 

W razie gdybys jednak wiedzial NA PEWNO co bedzie w przyszlosci moze bylbys tak mily i podal numery totka w przyszlym tygodniu?

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

w podtekscie: punktu na powierzchni

skrot myslowyniekumatych>

 

Tjviking: Ok, wyjasnienie mojego posta dla : Nie pytalem sie jak sie oblicza normalna dla powierzchni, po to wiem od liceum. Odnioslem sie do posta mokramyszka666, gdzie pisal o obliczaniu normalnych dla pointclouds :) Bardzo bym chcial wiedziec jak cos takiego zrobic...

 

EDIT: Jak dla mnie jedynym sposobem na obliczanie takich normalnych jest pogrupowanie punktow w strukture siatki czyli z pointclouds robi sie znowu siatka polygonow. Ale moze czegos nie chwytam.

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

Dajcie spokój, przecież ten człowiek ma myślenie ograniczone do dwóch wariantów, albo są 3 punkty albo nieskończoność...

 

Alibaba: napisałem wcześniej o co mi chodziło z wyliczeniem normalnej. Rozpatrując od początku: masz algorytm, który dla konkretnego pixela w drzewie chmur punktów odnajduje ten konkretny żeby go wyświetlić. Specjalnie dla Skotiego wyjaśnienie: nie, nie znajduje setek tysiecy tylko ten jeden konkretny. Podobną metodą, można przeszukać otoczenie tego punktu szukając, dajmy na to, 5 najbliższych punktów, które w tym niewielkim otoczeniu tworzą styczną do płaszczyny i dalej już wiadomo.

Z resztą mogą istnieć inne sposoby, bardziej wydajne i oszczędne (distance fields?) Chodziło mi tylko o to że jest to jak najbardziej możliwe i wcale nie musi trwać wieki.

Odnośnie przechowywania/generowania normalek: zbrush robi to w kilka minut, a nie dni. Obudź się Skoti. Tu nie trzeba liczyć normalnych dla wielkiej sceny, bo wystarczy dla jednej igły która jest potem transformowana i rozmieszczana na gałęziach.

Odnośnie fragmentu filmiku (2:40) ja mówię o milionach igieł a ty mi pokazujesz 5 kolcow na krzysz. Z czym do ludzi??

Im dłużej z Tobą 'rozmawiam' tym więcej argumentów nieświadomie mi podsuwasz na korzyść UD.

I na koniec powtórzę tylko po raz trzeci, bo ciągle nie dociera - wszystkie te przerażające obliczenia o których mówisz mogłoby załatwić rozwiązanie sprzętowe, dedykowane temu konkretnemu problemowi.

Odnośnik do komentarza
Udostępnij na innych stronach

Nezumi powiedział to co chciałem ale juz nie miałem siły...

W swoich wczesniejszych wywodach również chciałem się nie zamykać na polygony i całą dostepną technologie wyczytaną z nudnych książek ; ) raczej spróbować sobie wyobrazic system zbudowany z małych klocuszków gdzie każdy klocek nosiłby parametry swojej gęstości, wsp. tarcia, masę i inne podstawowe parametry fizyczne...a to jakto będzie liczone i żeby to chulało to już nie mój problem takie technologiczno/programistyczne ciapciaki jak wy muszą to rozwiązać...

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