Autor Wątek: Cube mapy - real vs fake  (Przeczytany 1573 razy)

Offline Dragomirus

  • Użytkownik

# Listopad 13, 2017, 18:04:41
Ostatnio natrafiłem na jedną dziwną rzecz w silniku do wiedźmina 2. Otóż jak się okazuje elementy metaliczne mają coś takiego jak cubemap do odbijania otoczenia. Ku mojemu zdziwieniu nie jest to jednak prawdziwa wyrenderowana cube mapa a fejkowa (wcześniej przygotowana, gdzie jest po prostu słońce i jakiś kawałek losowego terenu rozmazany) i teraz moje pytanie jest czy to normalne w dzisiejszych grach? Niestety nie mam wglądu w silnik wieśka 3, ale możliwe, że tego nie zmieniali.

Po prostu chciałbym wiedzieć, czy rzeczywiście dla przedmiotów jest sens generowanie cube mapy w czasie rzeczywistym czy nie lepiej użyć fake cube mapy (oczywiście nie mówię tutaj o wodzie itd, ale o na przykład mieczu czy czegoś w tym stylu). No i jak jest w dzisiejszych silnikach jeżeli ktoś wie :)
« Ostatnia zmiana: Listopad 13, 2017, 18:08:01 wysłana przez Dragomirus »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Mergul

  • Użytkownik

# Listopad 13, 2017, 20:50:43
Mamy różnie generowane cubemapy. Przede wszystkim rzeczywiste obrazu zrobione przez dobre aparaty, używane są zazwyczaj tylko i wyłącznie jako główna envmapa (envmapa nieba, otoczenia keidy żadnej innej nie ma w pobliżu). Daje bardzo dobrą jakość, dobre oddanie koloru rzeczywistego. Lokalne cubemapy to zazwyczaj cubemapy prerenderowane w silniku, często z proxy, np. kulą albo boxem. No i są jeszcze envmapy renderowane w realtime. Zazwyczaj renderuje się 1-2 na klatke, albo nawet częsciami. Używa się tego dla gier z dynamicznym systemem dnia i nocy, gdzie słońce ciągle się przemieszcza. Jest np. też taka możliwość że prerenderujesz sobie w silniku envmape do GBuffera i w real-time przeliczasz tylko światła, tak jak w defferedzie :)

Offline Dragomirus

  • Użytkownik

# Listopad 13, 2017, 22:34:12
Dzięki za odpowiedź, strasznie byłem ciekawy i jednocześnie zaskoczony tym bo nigdy się wcześniej z takim czymś nie spotkałem, żeby prerenderować sobie cube mape, a jak widać oszczędza to dużo fpsów pewnie :). Co do dynamicznego oświetlenia to mam coś takiego zaimplementowane w moim silniku i teraz pytanie czy w takim przypadku robię zamiast jednej prerenderowanej cube mapy robię dwie, gdzie na jednej jest otoczenie, a na drugiej samo słońce lub księżyć i blenduje te dwie tekstury? Bardzo jestem ciekaw jak to się robi żeby dodać właśnie to źrodło światła :)

Offline Mergul

  • Użytkownik

# Listopad 13, 2017, 22:45:09
Dynamiczne oswietlenie to tak jak mówiłem. Nie ma sposob który pozwoli Ci na zapisanie dynamicznego oświetlenia w cubemapie. W przypadku światła takiego jak żarówka, które można zapalić albo zgasić można zrobić dwie cubemapy. Dla światła dynamicznego takiego jak słońce (jeżeli mamy cykl dnia i nocy) to niestety trzeba wypalać cubmapki co jakiś czas na nowo. Dzięki temu że światło przemieszcza się powoli. Envmapki w budynkach mogą być  wypalone raz i nie przechowywać informacji o niebie. Jest jeszcze taka możliwość żeby zrobić cubmape w której zamiast wynikowego koloru zapisać coś w stylu intensywności światła i zmieniać kolor cubemapy w czasie rzeczywistym.

Offline wezu

  • Użytkownik

# Listopad 14, 2017, 13:10:34
Cubemap z niebem wcale nie musi mieć słońca, słońce może nawet przeszkadzać gdy trudno je zgrać z kierunkiem światła i dostaje się dwa odbłyski, jeden ze światła, a drugi z cubemapy.

W zasadzie to cubmap daje prawidłowe odbicia tylko dla jednego punktu (no, niech będzie obiektu jak się perspektywę poprawi) więc siłą rzeczy jak ta sama kostka ma być użyta dla wszystkich obiektów sceny, to może mieć tylko to co jest wspólne dla wszystkich odbić w scenie - niebo i odległy horyzont.

No i generalnie poza wodą i lustrami to człowiek nie spotyka się na codzień z wyraźnymi, nie zniekształconymi odbiciami i łatwo daje się oszukać.

Teraz popularne jest rysowanie odbić z ekranu (screen space local reflection).

Offline Dragomirus

  • Użytkownik

# Listopad 14, 2017, 14:03:15
Ok dzięki za odpowiedź i super, że pomogliście to zrozumieć od środka bo pewnie w żadnej książce czy tutorialu bym tego nie znalazł. Jeszcze raz dzięki :)