Překračujeme hranice reality: naše první kroky s Apple Vision Pro

15.4.2024
ZAJÍMAVOSTI
Jakub Skořepa
iOS Competence Lead

V Green:Code se nám do rukou dostaly brýle Apple Vision Pro. Náš coCEO Vašek Bittner je prostě boží a dokáže cokoliv, sehnat brýle pro něj nebyl problém. Jelikož brýle nejsou zatím dostupné mimo USA, tak to pro nás byla vzrušující příležitost a taky trochu výzva. 3D video a dinosauři, na které si můžete sáhnout jsou cool, ale mnohem víc cool je vytvořit něco vlastního. Neváhali jsme ani minutu a začali jsme psát Green:Code visionOS appku.



Výzvy při programování: realita je jiná

Programování pro iOS ve Swift a SwiftUI je pro nás každodenní realita, přesto nás vývoj aplikací pro spatial computing ve visionOS několikrát nachytal. Bylo nutné zakomponovat knihovnu RealityKit, komponentu ImmersiveSpace a nástroj Reality Composer Pro na vytvoření virtuální scény, kde máte pocit jako když koukáte na skutečné auto přímo ve vašem obýváku, kanceláři nebo prostě kde zrovna chcete.

3D model středem vesmíru

Ještě mnohem větší oříšek, než nové principy programování ve 3D, byla příprava 3D modelu auta. A jaké lepší auto pro Apple Vision Pro použít než Škoda Vision iV? Rozhodnutí bylo jednoduché. Ze začátku nám auto lítalo v prostoru, nemělo kola, mělo jen půlku střechy nebo třeba chyběly barvy. Nezbývalo něž zasednout a shlédnout pár hodin WWDC videí, kde Apple vše vysvětluje, abychom dokázali Vision iV zkrotit a správně jej umístit v prostoru.

ImmersiveSpace nás kompletně pohltil

Aplikace začne v klasickém okně, zde se krásně uplatní „obyčejné“ SwiftUI. To nevypadá moc odlišně, dokud si nevšimneme komponenty Model3D.

HStack {
  VStack(alignment: .leading, spacing: 48) {
    Text(car.name)
    Text(car.highlights)
  }

  Spacer()

  Model3D(named: car.resourceName) { mode
in
    model
      .resizable()
      .scaledToFill()
      .frame(depth: modelDepth)
      .offset(z: modelDepth)
  } placeholder: {
    ProgressView()
  }
}


Nicméně naším cílem bylo umístit Škoda Vision iV v reálné velikosti přímo před uživatele tak, aby nabyl dojmu že si na něj může sáhnout. Nemusíme ani zmiňovat, že snad všichni to hned vyzkoušeli :)...Také zkoušeli nastoupit, nastartovat a odjet. Tak daleko ta technologie bohužel ještě není. Umístění auta v prostoru se nám nakonec povedlo a umožnilo nám prozkoumat nové dimenze interakce a poskytlo cenné zkušenosti o možnostech a omezeních technologie rozšířené reality v podání Apple Vision Pro.

import SwiftUI
import RealityKit
import RealityKitContent

@main
struct
GreenCodeApp: App {
  @Environment(\.openImmersiveSpace)
var openImmersiveSpace
  @Environment(\.dismissImmersiveSpace)
var dismissImmersiveSpace

  @State
var selectedCar: Car?

  
var body: some Scene {
    WindowGroup("Hello Green:code", id: "welcome") {
      WelcomeView(selectedCar: $selectedCar)
    }
    .windowStyle(.plain)
    .onChange(of: selectedCar) { _, newValue
in
      Task {
        
if newValue == nil {
          
await dismissImmersiveSpace()
        }
else {
          
await openImmersiveSpace(id: "ImmersiveSpace")
        }
      }
    }

    ImmersiveSpace(id: "ImmersiveSpace") {
      ImmersiveView(car: selectedCar)
    }
  }
}

struct ImmersiveView: View {

  
let car: Car

  
var body: some View {
    RealityView { content in
      
guard let scene = try? await Entity(named: car.resourceName) else { return }
      content.add(scene)
    }
  }
}


Co jsme se naučili a několik slov na závěr

Projekt nám odhalil, že úspěch v rozšířené realitě vyžaduje nejen technické dovednosti, ale také schopnost přizpůsobit se novým způsobům interakce mezi člověkem a digitálním světem. Naše zkušenosti s Apple Vision Pro naznačují začátek nové éry v naší práci i každodenním životě. Otevírá se nám svět, ve kterém budou rozhraní mezi digitálním a fyzickým prostředím stále fluidnější a interaktivnější.

Naše první práce s brýlemi se neobešla bez několika výzev a překážek. I tak to byla velmi poučná a zajímavá zkušenost. Ukázalo se, že přechod z tradičního iOS vývoje na vývoj pro rozšířenou realitu není jen o změně technického prostředí, ale také o rozšiřování našeho chápání toho, jak mohou lidé s technologiemi interagovat.

Naše cesta s Apple Vision Pro je teprve na začátku. Už teď se ale těšíme na další projekty, které nám umožní prozkoumat nové hranice rozšířené reality. S každým krokem se učíme, adaptujeme a inovujeme – a to je přesně to, co nás jako vývojáře posouvá vpřed. Ve světě, kde se technologie neustále vyvíjí, je naše zkušenost s Apple Vision Pro jasným připomenutím, že budoucnost je už tady. A my jsme na ni připraveni!