Augmented Reality med egen model

 
Motorcykel.jpg

Vi fortsætter med at teste Apple’s Augmented Reality (AR) kit for at se, hvilke muligheder kittet giver os som udviklere. Vi har tidligere kigget på Apple’s demoprojekter, hvor vi fik besøg af en kamæleon.

Denne gang vil vi undersøge, hvad det kræver at udskifte en af Apple’s modeller med en ny model og få den vist i en Augmented Reality app.

Først starter vi med et nyt projekt og vælger en “Augmented Reality App”, hvor man får Apple’s model, som er et svævende kampfly. Det er dette kampfly vi vil prøve at udskifte med en anden model.

Augmented Reality App.png

I den indbyggede model af et kampfly, kan man se at “.scn”-filen indeholder selve modellen, lys, materialer og links til teksturer.

Filerne “.scn” er Apple-specifikke filer. Hvis man vil fremstille eller købe modeller, kan man med fordel bruge enten “.obj”  eller en “.dae”-fil. Disse filer kan Xcode konvertere til .scn, som derefter kan bruges i app’en.

 

Den indbyggede model

Når vi ser på selve modellen, kan vi se et koordinatsystem, hvor den blå z-akse er fremad, den grønne y-akse er op, og den røde x-akse er til venstre. Hvis modellen ikke vender den rigtige vej eller ikke er centreret, kan man skifte til det lokale koordinatsystem og rette modellen, så den både er placeret rigtigt og vender rigtigt i forhold til verdenens koordinatsystem.

AR jetfly.png

 

Hvis man har en model, som ikke har fået bundet teksturen korrekt op eller ikke har lys på de forskellige materialer, kan man også ændre disse værdier og tilføje lys til scenen. Man kan finde materiale-oplysningerne ved at skifte over til “Material Inspector”, som vist på næste billede.

Augmented Reality jetfly.png

 

Ny model til Augmented Reality app’en

Når man laver et projekt med 3D-modeller, kan man vælge at få en modellør til at lave modeller specifikt til projektet, men det er også muligt at finde mange modeller på internettet. Hvis man vælger at bruge en model, som er købt over internettet, skal man dog være opmærksom på, at der kan være problemer med at få den til at virke i Xcode.

Til vores projekt valgte vi at finde nogle gratis modeller på https://free3d.com/, hvor vi fik dem fremvist og konverteret via http://www.meshlab.net/. Hvis man har et modelleringsværktøj såsom Maya, 3DS MAX eller Blender, kan man med fordel bruge dem til at se og redigere i modellerne. Blender er et gratis modelleringsværktøj, mens man skal købe licenser til både Maya og 3DS MAX.

Da Xcode har nemmest ved at konvertere modeller i formatet OBJ eller DAE til det indbyggede SCN-format, bør man undgå modeller i andre formater.  I så fald skal man åbne dem i et modelleringsværktøj for at gen-eksportere dem til et format, som Xcode kan forstå.

Når man har importeret enten en OBJ eller DAE, er der en mulighed i “Editor”: “Convert to SceneKit scene file format”, som herefter genererer en SCN-fil. (Se #1 på nedenstående billede).

 (#1: Convert to SceneKit scene file format, #2 Enable default lighting,  #3 Roter figuren under Euler , #4 farver, lys og teksturer,  #5 Scene Graph View, #6: lokal- og verdenskoordinater)

(#1: Convert to SceneKit scene file format, #2 Enable default lighting,  #3 Roter figuren under Euler , #4 farver, lys og teksturer,  #5 Scene Graph View, #6: lokal- og verdenskoordinater)

 

Som man kan se på billedet, er der opstået et problem, hvor materialernes farver ikke er taget med. Man kan manuelt gå ind og tilføje farver, lys og teksturer til alle de materialer, der er på modellen (#4 på billedet).

Modellen vender tydeligvis forkert. For at vende modellen, kan man rotere den ved at ændre i værdierne (se #3), så modellen vender rigtigt i forhold til verdenskoordinaterne. Man kan skifte mellem lokal- og verdenskoordinater (se #6).

Hvis man ikke får nogle muligheder i højre side af skærmen, kan det skyldes, at man ikke har markeret selve “meshet”. Det kan vælges ved at folde “Scene Graph View” ud (#5 på billedet).

Det kan også ske, at en model er helt sort, når man åbner filen. Det kan ske, hvis der hverken er farver eller lys i scenen. Ved at trykke på modellen i midten af skærmen vil muligheden i menuen “Enable default lighting” blive aktiveret, som man derefter kan tænde for, så man kan se modellen. Når man har tændt for dette lys, ændrer knappen til “Disable default lighting” (se #2).

 

Implementation af den nye model

Derefter skal vi ind i ViewController-filen, og indsætte vores nye SCN fil (se #3 på billedet nedenfor). Det anbefales, at man lægger selve SCN-filen i en .scnassets-mappe (se #1), når man importerer 3D-modeller til Xcode. Teksturerne bør trækkes ud derfra og lægges ind i en xcassets-mappe (se #2). Gør man dette, kan Apple netop optimere app’en til den hardware, den bliver installeret på. Anbefalingen kan også ses på Apple Developer.

 (#1 .scnassets mappe, #2 xcassets-mappe , #3 SCN fil i ViewController-filen)

(#1 .scnassets mappe, #2 xcassets-mappe , #3 SCN fil i ViewController-filen)

Augmented Reality Motorcykel.jpg

Fra dette punkt bør man stadig finpudse farverne og eventuelt bruge andre shaders, så der kommer mere spil i farver, refleksioner og skygger.

 

Afrunding

Vi har fundet en ny 3D-model fra internettet, rettet i dens udseende, og fået den vist i et standard Augmented Reality-projekt i Xcode.

Som man kan se på det endelige billede, kræver det stadig finpudsning for at få den til at se mere realistisk ud. Hvis den skal bruges som en produktdemonstration, skal man derfor forvente at bruge en del tid på at få modellen til at stå helt skarpt. Man behøver dog ikke altid at justere farver og lys, hvis de er inkluderet i modellen. Man kan være heldig at arbejde på en model, som har teksturer på alle overflader, og derfor kun behøver at få hvid farve på alle overflader. En hvid farve på en tekstur vil nemlig kun give den lys, men vil ikke ændre nogle farver på den.

 

Af Tim Kofoed
Senior App Udvikler

 
InformationTim KofoedAPI, UX, GDPR