Fotogrammetri med program som WebODM är riktigt kraftfullt och det går att ”skanna” objekt av varierande storlek med ett stort antal bilder för att sedan beräkna dessa till detaljerade 3D modeller med texturer. Det blir inte alltid perfekt, och inte sällan kan man behöva justera en del för att det skall gå att använda modellen i exempelvis 3D visualiseringar.
Ett fotoskannat objekt kan dessutom innehålla enorma mängder av data, vilket ger bra detaljupplösning på organiska föremål som träd, stenar och liknande. I dessa fall så kan man ganska enkelt reducera antalet punkter i modellen rejält, utan att det påverkar slutresultatet allt för mycket.
Om man däremot skall skapa en modell av en byggnad, eller annat rätvinkligt föremål, så blir resultatet med fotoskanning inte alltid det bästa. Framför allt så blir det ofta väldigt mycket mer data än vad som behövs. I dessa fall kan ”direkt” modellering vara ett bättre alternativ.
I detta inlägg så testar jag att modellera ett hus i Blender, utifrån ett befintligt hus som jag har några exteriörbilder av.
För testerna så laddar jag ner ett par bilder på ett hus från Hemnet.
Jag väljer bilder så att jag får med huset från lite olika vinklar, men framför allt så att jag kan se en tänkt utgångspunkt som är synlig i båda bilderna. Det måste också vara lite perspektiv i bilden, annars blir det svårare. Det räcker faktiskt med en enda bild, men med flera så kan man vara lite mera noggrann, och man kan modellera korrekt även på ”baksidan”.
Det första som behöver göras är att fastställa lite kameraparametrar samt perspektiv i varje bild. För detta använder jag ett program kallat ”fSpy” (https://fspy.io/).
I fSpy så lägger man ut linjer som motsvarar de axlar man vill definiera. Normalt så är det x och y riktningen som läggs ut vilket skapar en ”försvinnande” punkt för varje axel, som definierar perspektivet. Man placerar även ut ett ”origo” eller en nollpunkt i bilderna, som skall vara den samma i alla bilder (bör vara det för enkelhetens skull).
Ju närmare 90° respektive par med linjer skär varandra, desto enklare blir det att få ett bra resultat. I det här fallet så är mina perspektivvinklar lite väl spetsiga, men det får duga. Om pilarna vid utgångspunkten inte pekar i rätt riktning, så kan man behöva vända några av linjernas definitioner. Målet är att pilarna pekar i önskad riktning för axlarna x, y och z.
Om det är viktigt så kan man även definiera ett referensmått i bilden. Använder man flera bilder är det extra noga att dessa mått överensstämmer mellan bilderna.
Till fSpy finns det även ett tillägg som man installerar i egenskaperna för Blender. Detta gör det möjligt att importera bilder som sparats med fSpy som referensbilder i Blender med korrekt perspektiv i olika ”kameror”.
Varje bild man läser in representeras av en egen kamera (uppe till höger i bilden ovan). När man växlar mellan dessa kameravyer (num 0, ctrl num 0), så kan man se bilderna förhoppningsvis korrekt placerade i 3D vyn. Så fort man roterar vyn så försvinner bilden, och det är bara möjligt att se dessa genom respektive kamera. Men det går utifrån dessa att skapa en enkel (eller avancerad) modell som överensstämmer med huset från olika perspektiv.
Genom att steg för steg anpassa 3D modellen till de olika kameravyerna med bilder så kan man snabbt bygga upp en skapligt överensstämmande 3D modell som inte innehåller hundratusentals punkter och komplicerade texturer.
Beroende på hur noga det behöver vara så kan man göra modellen precis så detaljerad man behöver. Det går sedan att antingen applicera bilderna som texturer, men om det räcker så är det betydligt enklare att helt enkelt lägga till färger som material för olika områden i modellen.
Den exporterade 3D modellen kan sedan exempelvis importeras i QGIS 3D.
Modellen som *.obj infogas som en punktsymbol och måste justeras in för sig. Det finns tyvärr inga datadefinierade åsidosättningar för symbolernas ”transformationer” så om man har ett punktlager med byggnader som man vill lägga till olika modeller för, eller om man vill ha exempelvis individuella rotationer för dessa, så blir det till att skapa regelbaserad stil, med en regel för varje 3D objekt. Om man exempelvis kunnat ha åsidosättning för modellens filnamn och orientering, så hade man kunnat spara denna information i attributtabellen och bara haft ett enda punktlager för alla objekt. Men det kanske är något som kommer på sikt, om det nu är någon som är intresserad av en sådan funktion.
Hej! Observera att du även kan modellera enligt samma förfarande från output av webodm, Metashape eller reality capture. En del av första steget av att aligna bilderna är att approximera kameramodellen och kamerans position – vilket är i princip vad fspy gör. Exportera alla fotons s.k exterior orientation till Blender, så har du samma förutsättningar fast med fler bilder och denna gång med bättre approximation av distortions. På så vis, genom ett par GCPs, kan vi även få modellen georeffad.