Interior mapping in unity3d

Interior mapping in unity3d

Bakgrund

Jag har äntligen börjat leka med Unity3D. Första målet är att få en överblick över hur shaders fungerar. Detta kommer att vara praktiskt oavsett vilken plattform jag sen väljer som mitt mål. Min favoritmetod när det gäller att lära sig är att importera saker från ett annat språk. Här får jag möjlighet att lära mig två nya språk samtidigt. Och allt ”trial and error” inblandat inspirerar mig ofta att göra saker som inte var avsedda från första början.

Mitt val av shader att implementera är skrivet av Joost van Dongen och han kallar det för ”inredningsmapping”. Det är en teknik för att rendera byggnader med fasad med reflektioner och belysning, och perspektiviskt korrekta interiörer (nåja, åtminstone väggarna stämmer. Möbler eller detaljer på väggarna är naturligtvis platt) sedda genom fönstren, vilket ger en illusion av geometri på en vägg med bara två trianglar. Allt gjort av en enda shader. Användningen av raycasting tillsammans med interpolerade fragment öppnar upp för många intressanta idéer. Det är dock ingen ny teknik, jag utforskar bara detta område för första gången.

I den här demon så använder jag en annan inspirationskälla också. Om du gillar Unity så har du förmodligen redan sett denna stadsbild. Jag använder det exemplet för att rita ut procedurbyggnader i ett rutnät, och samtidigt lära mig hur man skapar maskor genom att skripta. Det fick mig att lägga till vägar, trottoarer och ljus. Jag har också lagt till ett enkelt dag/natt-system som tonar ut mellan två sky-boxar (ser konstigt ut med avbleknande sol, men det räcker för denna demo), den här parametern styr också belysningen och om aktiviteten i byggnaden.

Interior mapping in unity3d 2

Optimering

En sak som jag helt saknar här är optimeringsförmåga. Unity-folk kommer att skaka på huvudet och skratta högt. Jag vet inte riktigt var jag ska börja. Byggnaderna och marken är bara några trianglar, men jag har lagt till massor av punktljus och gatlyktor. Jag borde förmodligen använda någon form av ljuskartläggning, men jag tror att det bara är en pro-licens-funktion. Marken är också ett rutnät som ser exakt likadant ut i varje cell, kanske finns det ett sätt att optimera det.

Jag har provat att kombinera maskor, men jag fastnade med ljusproblem eller beroende på att jag slog i taket för antalet maxhörn. Shadern måste vara unik för varje byggnad, så jag kan inte kombinera dem heller. Om shader-modeller använder denna shader shader modell 3.0, så kan det inte passa in på de instruktioner som behövs annars. Men för att bli av med slumpmässiga väggar från en texturatlas så kompileras den till modell 2.0. Men framerate är ganska jämn för det här experimentet och jag har åtminstone en lekplats där jag kan träna på mina kommande färdigheter.

Interior mapping in unity3d 3

Källa

Det skulle vara trevligt att göra en yt-shader istället för att få skuggor i realtid, men återigen så är jag inte ägare till en proffslicens, så det får vänta. Om du vill, så kolla in hela scenpaketet. Det här är mina första Unity-experiment, så var ärlig och berätta för mig vad som kan göras bättre.

Nu tillbaka till ritbordet, jag har en idé som involverar fysik, så det är mitt nästa stopp på Unity-bussen. Tills dess, tack för att du läste.

Lämna ett svar

Din e-postadress kommer inte publiceras.