Wat betekent het om “ licht te bakken ”?

Wat betekent het om een lightmap te bakken? Ik hoorde dit in Unity3d en vond opnieuw deze LightUp-plug-in voor sketchup die lightmap bakt.

Van wat ik observeer, geeft de gebakken lightmap het 3D-object een veel realistischer gevoel. Is het doel van het bakken van licht op een object om die cg-animatie te geven die je ziet op vooraf gegenereerde animaties?

Reacties

  • Ook elke keer dat je bakt iets, of het nu fysica, verlichting of iets anders is. Het betekent dat je iets hebt ingesteld dat veel tijd nodig heeft om in realtime weer te geven / te verwerken, of je wilt dat het elke keer op dezelfde manier wordt afgespeeld, dus je hoeft het maar één keer te doen en de resultaten op te slaan voor later gebruik, en omdat alle berekeningen zijn gedaan, het weergeven van wat er gebakken is, is snel en altijd hetzelfde bij alle playthroughs.
  • AttackingHobo, dat is een geweldige manier om het te zeggen. Ik begrijp het nu. Maar nieuwsgierig, hoe zou natuurkunde worden gebakken? Produceert Luxrender fotorealistische weergaven omdat ze de fysica van het licht kunnen berekenen?
  • Fysica kan worden gebakken voor complexe scènes door eenmaal alle objectposities en rotaties enz. Voor elke tijdstap te simuleren en op te slaan. In plaats van alle waarden live opnieuw te berekenen, worden ze gewoon afgespeeld op basis van de opgeslagen waarden.

Antwoord

Als je een statisch (niet-bewegend) licht hebt in een game, heb je twee opties om dit licht weer te geven. Je zou het hetzelfde kunnen weergeven als een dynamisch licht; dat wil zeggen, voer het door de shaderpijplijn die het effect ervan op alles eromheen, elk frame, op weg naar het scherm zal berekenen. Dit is natuurlijk behoorlijk duur. Of een editor kan het licht in de scène bakken.

Wat ik altijd aan bakken heb gedacht, was misschien een eenvoudigere versie: in feite neemt de editor gewoon de texturen van alles rond het licht en berekent het effect van het licht op die texturen (maakt ze helderder, kleurt ze misschien, schaduwen, enz.), en slaat ze op als vervangende texturen om te gebruiken. Dus alle texturen rond het licht zien eruit alsof ze een licht werpen, maar looptijd is er feitelijk geen licht vanuit een rekenstandpunt; het is in wezen een optische illusie.

Unity lijkt echter een lichtkaart te genereren. Dit is vergelijkbaar met het bovenstaande begrip , maar de gebakken verlichting wordt apart gehouden in plaats van de onderliggende textuur te wijzigen, en ik neem aan dat een arcering de twee tijdens runtime samenvoegt. Dit zou het voordeel hebben dat het voordeel van betegelde texturen behouden blijft (dat wil zeggen laag geheugengebruik) laat het licht er precies in gebakken zijn, daarom kunnen ze betegeld blijven, en de arcering zou erg licht zijn, vooral in vergelijking met het behandelen van het licht als dynamisch.

Een licht moet duidelijk statisch zijn om dit te laten werken; dat wil zeggen, je kunt het niet verplaatsen tijdens het spelen, omdat het licht in de texturen is ingebakken. Ook zullen alle dynamische objecten in de kamer (zoals het personage van de speler) het licht niet laten schijnen, dus er moet een soort uitzondering zijn, waar het licht wordt weergegeven voor dynamische objecten maar niet (opnieuw) wordt weergegeven op de statische omgeving.

Opmerkingen

  • En omdat de belichting meestal zacht is, kan de lichtkaart in een lagere resolutie worden opgeslagen dan de rest van de texturen, ziet hij er nog steeds goed uit, maar wordt hij sneller weergegeven en neemt hij minder geheugen in beslag.
  • +1, dit is een heel mooi en uitgebreid antwoord, bedankt. 🙂

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *