[ad_1]
Negli ultimi mesi, gli esperti Apple hanno risposto a domande su visionOS nei laboratori di sviluppo Apple Vision Pro di tutto il mondo. Ecco le risposte ad alcune delle domande più frequenti che sono state poste, inclusi approfondimenti su nuovi concetti come entità, spazi immersivi, forme di collisione e molto altro.
Come posso interagire con un’entità utilizzando i gesti?
Esistono tre elementi importanti per abilitare l’interazione tra entità basata sui gesti:
- L’entità deve avere un InputTargetComponent. Altrimenti, non riceverà alcun input gestuale.
- L’entità deve avere un CollisionComponent. Le forme del componente di collisione definiscono le regioni che i gesti possono effettivamente colpire, quindi assicurati che le forme di collisione siano specificate in modo appropriato per l’interazione con la tua entità.
- Il gesto che stai utilizzando deve essere mirato all’entità con cui stai tentando di interagire (o a qualsiasi entità). Per esempio:
private var tapGesture: some Gesture {
TapGesture()
.targetedToAnyEntity()
.onEnded { gestureValue in
let tappedEntity = gestureValue.entity
print(tappedEntity.name)
}
}
È anche una buona idea fornire a un’entità interattiva un HoverEffectComponent, che consente al sistema di attivare un effetto di evidenziazione standard quando l’utente guarda l’entità.
Dovrei utilizzare un gruppo di finestre, uno spazio immersivo o entrambi?
Considera le differenze tecniche tra finestre, volumi e spazi immersivi quando decidi quale tipo di scena utilizzare per una particolare funzionalità nella tua app.
Ecco alcune differenze tecniche significative che dovresti considerare nella tua decisione:
- Le finestre e i volumi di altre app aperte dall’utente vengono nascosti quando uno spazio immersivo è aperto.
- Windows e volumi ritagliano il contenuto che supera i limiti.
- Gli utenti hanno il pieno controllo sul posizionamento di finestre e volumi. Le app hanno il pieno controllo sul posizionamento dei contenuti in uno spazio immersivo.
- I volumi hanno una dimensione fissa, le finestre sono ridimensionabili.
- ARKit fornisce dati alla tua app solo se dispone di uno spazio aperto e immersivo.
Esplora il codice di esempio Hello World per familiarizzare con i comportamenti di ciascun tipo di scena in visionOS.
Come posso visualizzare le forme di collisione nella mia scena?
Utilizza la visualizzazione di debug Forme di collisione nel menu Visualizzazioni debug, dove puoi trovare anche molte altre visualizzazioni di debug utili. Per informazioni sulle visualizzazioni di debug, consulta Diagnosi dei problemi nell’aspetto di un’app in esecuzione.
Posso posizionare le visualizzazioni SwiftUI all’interno di uno spazio immersivo?
SÌ! Puoi posizionare le viste SwiftUI in uno spazio immersivo con i metodi offset(x:y:) e offset(z:). È importante ricordare che questi offset sono specificati in punti, non in metri. Puoi utilizzare PhysicalMetric per convertire i metri in punti.
Cosa succede se voglio posizionare le mie viste SwiftUI rispetto a un’entità in una vista reale?
Utilizza l’API degli allegati RealityView per creare una vista SwiftUI e renderla accessibile come ViewAttachmentEntity. Questa entità può essere posizionata, orientata e ridimensionata proprio come qualsiasi altra entità.
RealityView { content, attachments in
let attachmentEntity = attachments.entity(for: "uniqueID")!
content.add(attachmentEntity)
} attachments: {
Attachment(id: "uniqueID") {
Text("My Attachment")
}
}
Posso posizionare le finestre a livello di codice?
Non sono disponibili API per posizionare le finestre, ma ci piacerebbe conoscere il tuo caso d’uso. Si prega di inviare una richiesta di miglioramento. Per ulteriori informazioni su questo argomento, consulta Posizionamento e dimensionamento delle finestre.
C’è un modo per sapere cosa sta guardando l’utente?
Come indicato in Adozione delle migliori pratiche per la privacy e le preferenze dell’utente, il sistema gestisce gli input della fotocamera e del sensore senza passare le informazioni direttamente alle app. Non c’è modo di ottenere movimenti oculari precisi o una linea di vista esatta. Crea invece elementi di interfaccia con cui le persone possano interagire e lascia che sia il sistema a gestire l’interazione. Se hai un caso d’uso che non puoi realizzare in questo modo e purché non richieda il tracciamento oculare esplicito, invia una richiesta di miglioramento.
Quando vengono richiamate le azioni onHover e onContinuousHover su visionOS?
Le azioni onHover e onContinuousHover vengono richiamate quando un dito passa sopra la vista o quando il puntatore di un trackpad connesso passa sopra la vista.
Posso mostrare le texture del mio ambiente immersivo nella mia app?
Se la tua app ha un ImmersiveSpace aperto, puoi creare una sfera grande con UnlitMaterial e ridimensionarla per avere una geometria rivolta verso l’interno:
struct ImmersiveView: View {
var body: some View {
RealityView { content in
do {
let mesh = MeshResource.generateSphere(radius: 10)
var material = UnlitMaterial(applyPostProcessToneMap: false)
let textureResource = try await TextureResource(named: "example")
material.color = .init(tint: .white, texture: .init(textureResource))
let entity = ModelEntity(mesh: mesh, materials: [material])
entity.scale.x *= -1
content.add(entity)
} catch {
}
}
}
}
Ho video stereo esistenti. Come posso convertirli in MV-HEVC?
AVFoundation fornisce API per scrivere video in formato MV-HEVC.
Per convertire i tuoi video in MV-HEVC:
- Crea un asset AVA per ciascuna delle viste sinistra e destra.
- Utilizza AVOutputSettingsAssistant per ottenere le impostazioni di output che funzionano per MV-HEVC.
- Specificare la regolazione della disparità orizzontale e il campo visivo (questo è specifico della risorsa). Ecco un esempio:
var compressionProperties = outputSettings[AVVideoCompressionPropertiesKey] as! [String: Any]
compressionProperties[kVTCompressionPropertyKey_HorizontalDisparityAdjustment as String] = horizontalDisparityAdjustment
compressionProperties[kCMFormatDescriptionExtension_HorizontalFieldOfView as String] = horizontalFOV
let taggedBuffers: [CMTaggedBuffer] = [
.init(tags: [.videoLayerID(0), .stereoView(.leftEye)], pixelBuffer: leftSample.imageBuffer!),
.init(tags: [.videoLayerID(1), .stereoView(.rightEye)], pixelBuffer: rightSample.imageBuffer!)
]
let didAppend = adaptor.appendTaggedBuffers(taggedBuffers,
withPresentationTime: leftSample.presentationTimeStamp)
Come posso illuminare la mia scena in RealityKit su visionOS?
Puoi illuminare la scena in RealityKit su visionOS:
- Utilizzando un ambiente di illuminazione automatica fornito dal sistema che si aggiorna in base all’ambiente circostante del mondo reale.
- Fornire la propria illuminazione basata su immagini tramite un ImageBasedLightComponent. Per vedere un esempio, crea una nuova app visionOS, seleziona RealityKit come Immersive Space Renderer e seleziona Full come Immersive Space.
Vedo che CustomMaterial non è supportato su visionOS. Esiste un modo per creare materiali con ombreggiature personalizzate?
Puoi creare materiali con ombreggiature personalizzate in Reality Composer Pro utilizzando Shader Graph. Un materiale creato in questo modo è accessibile alla tua app come ShaderGraphMaterial, in modo che tu possa modificare dinamicamente gli input allo shader nel tuo codice.
Per un’introduzione dettagliata allo Shader Graph, guarda Esplora i materiali in Reality Composer Pro.
Come posso posizionare le entità rispetto alla posizione del dispositivo?
In un ImmersiveSpace, puoi ottenere la trasformazione completa del dispositivo utilizzando il metodo queryDeviceAnchor(atTimestamp:).
Ulteriori informazioni sulla creazione di app per visionOS
Domande e risposte: progettazione spaziale per visionOS
Ottieni consigli esperti dal team di progettazione Apple sulla creazione di esperienze per Apple Vision Pro.
Guarda ora
Riflettori puntati su: sviluppo per visionOS
Scopri come gli sviluppatori di djay, Blackbox, JigSpace e XRHealth hanno iniziato a progettare e creare app per Apple Vision Pro.
Guarda ora
Riflettori puntati su: Strumenti di sviluppo per visionOS
Scopri come gli sviluppatori utilizzano Xcode, Reality Composer Pro e il simulatore visionOS per iniziare a creare app per Apple Vision Pro.
Guarda ora
Il codice di esempio contenuto nel presente documento è fornito sotto Licenza del codice campione Apple.
[ad_2]
Source link