Fisheye skevhet för sfärisk spegel fulldome projektionSkrivet av Paul Bourke, July 2012Marie Stefanova, August 2017
Följande är ett försök till en teknisk beskrivning av hur fisheye-bilder är skev för användning i en kupol med sfärisk spegel projektion teknik. Det finns för närvarande ett antal paket för att stödja denna skevhet, de har författarna warpplayer, World Wide Teleskop, Programvara Bisque, en patch för Quartz Composer, Mixer, och Unity3D implementationer … och andra. Innan man inför den skevhet en kort diskussion om hur fisheye och skev fisheye-baserade prognoser är i allmänhet konfigureras i ett planetarium (eller andra kupoler som iDome). Beroende på om datorn innehåller en display (bärbara datorer eller iMac) eller om det är en dator med ett grafikkort och två grafik rör, operatören inte (i allmänhet) använd kupolen för att navigera utan snarare en personlig platt skärm. De två vanligaste driftsformer då är följande:
Det är författarna råd att fisheye bör göras till en konsistens av tillräcklig upplösning (se senare) och sedan presenteras/skev på både föraren och projicerade skärmen. Om operatörerna displayen är fisheye och projektorn visas är skev, eller både skev är en fråga för de utvecklare som bygger på att underlätta genomförande och/eller resultat, båda är acceptabla. Observera att data projektorer har förmåga att spegla bilden vertikalt eller horisontellt, vilket det inte behöver vara en angelägenhet för programvaran. Men för att underlätta kompatibilitet med andra program, horisontell spegling till projektorn visas kan vara till hjälp. I alla fall bilden på operatör skärmen får inte vara spegelvänt. Den Här diskussionen kommer att starta från den position av att ha ett fisheye-bild, tekniker för att skapa ett fisheye med nuvarande realtid grafik-Api: er (t.ex.: OpenGL och DirectX är en separat diskussion. De innebär i allmänhet antingen multipass rendering av cubic ansikten (miljö kartor) som sedan monteras ihop till en fisheye, eller innebär en vertex shader. Några diskussioner om detta finns här för Unity3D och här Blender. Motivation för detta uppstod från utvecklarna av Stellarium och NightShade, två astronomi visualisering paket som även de har med ojämna stöd för sfärisk spegel, det var genomföras på ett annat sätt. Den föreslagna metoden tar fisheye bild, i allmänhet det skulle vara som levererats till en off-screen textur, denna textur appliceras sedan till ett nät som genomför den önskade skevhet. Det finns några mycket viktiga konsekvenser för detta är:
Den “magiska” självklart förekommer i detaljer i mesh-filen. Författaren kommer att innehålla några standard mesh-filer som för närvarande är i gemensam användning. Men helst en mesh-filen måste skapas med kunskap om projektorn/mirror/dome geometri samt optik för några av dessa komponenter. I nuvarande version av Stellarium och Nightshade, geometri och optisk specifikation av projection system är inbyggda i koden användaren matar in ett antal parametrar tills bilden ser ut korrekt på kupolen. Författaren hävdar att det bästa sättet att göra detta är att ha en extern applikation som skapar warp mesh-filer (för de fall där provet mesh-filer är otillräckligt), på detta sätt alla applikationer kan dela en skev beskrivning. Det bör noteras att den aktuella parametern är inställd i Stellarium och Nightshade är otillräcklig på två fronter: det finns parametrar som är relevanta för prognosen optik som inte omfattas, och de parametrar som används är något godtyckligt i den meningen att de inte följer standard metoder för att beskriva projektorn optik. Just nu finns det minst tre alternativ för att skapa exakta warp mesh-filer, är baserad på en Mixer, och en är författarnas egen meshmapper som levereras med warpplayer programvara. Här Nedan finns några “standard” mesh-filer som har använts fram till nu. Notera att med standard warp mesh-filer: den fysiska geometri av projektorn och spegeln behöver justeras, medan den egna mesh-filen kalibrering innebär att en mesh-fil kan skapas som riktar sig till en viss geometrisk/optiska arrangemang. I allmänhet standard mesh-filer är ofta tillfredsställande för uppblåsbara kupoler medan fast kupoler garanterar ett bättre resultat.
Observera att sfärisk spegel projektion är bara meningsfullt för dataprojektion och sedan när projektorn körs i fullskärmsläge. Den form av mesh är inte en funktion av projektorn resolution, utan snarare av bildförhållande. Detta förklarar varför det finns bara tre standard warp-filer som anges ovan, att de motsvarar de tre mest förekommande dataprojektor bildförhållanden. En aspekt av 5×4 ingår inte, eftersom de är relativt ovanliga i dag och inte perfekt sfärisk spegel projektion. Om läsaren laddar ner en av varpen mesh-filerna ovan de kommer att iakttas för att vara ren ASCII-textfiler. Den första raden visar den inmatade bilden typ, som är “2” för fisheye-bilder … kom ihåg denna grundläggande teknik som kan användas för ingående bild prognoser andra som fisheye, till exempel standard perspektiv filer, sfäriska (equirectangular) prognoser, cylindriska, etc. Men i fallet av ett planetarium och skevhet ett fisheye-bild den första raden är alltid “2”, detta kan också användas som test att en vald warp-fil är lämpligt. Den andra raden innehåller två siffror som anger mått av 2D-mesh, den första siffran är antalet noder horisontellt (Nx) och den andra antalet noder vertikalt (Ny). Detta och andra aspekter illustreras i nästa figur. De följande raderna i filen innehåller 5 nummer de är:
Observera att medan (x,y) positioner i de noder här bilda ett regelbundet rutnät, de behöver inte. Ibland är det lättare att genomföra varp med en vanlig (x,y) grid och varierande (u,v), ibland en variabel (x,y) – arrangemanget är att föredra, även om det fortfarande är topologiskt ett rutnät. Det är bara två parametrar som användaren måste ange, de är:
Mus val Musen för att klicka på en skev fisheye behöver några speciella hantering. Medan det finns ett antal olika sätt objekt val kan hanteras i realtid Api: er, är det i allmänhet så att de kräver pixel position innan skevhet. Så här kommer det att antas ansökan redan kan hantera musen för att klicka på och objekt val i fisheye utrymme, kommer följande att sedan beskriva hur man härleda pixel position i fisheye ges en pixel position i skeva fisheye.
Gett konventionen i ovanstående figur förfarandet är som följer.
|