
-
Lleva tu proyecto SceneKit a RealityKit
Comprende el paso a estado obsoleto de SceneKit y explora cómo realizar la transición de tus proyectos 3D a RealityKit, el motor 3D de alto nivel recomendado por Apple. Aclararemos qué impacto tiene el paso a estado obsoleto de SceneKit para sus proyectos, compararemos conceptos clave entre los dos motores y te mostraremos cómo transferir un juego de muestra de SceneKit a RealityKit. También exploraremos el potencial de RealityKit en todas las plataformas compatibles para ayudarte a crear increíbles experiencias 3D con tus apps y juegos.
Capítulos
- 0:00 - Comenzar
- 5:03 - Diferencias fundamentales
- 8:59 - Conversión de activos
- 11:57 - Composición de la escena
- 15:21 - Animaciones
- 16:58 - Luces
- 18:37 - Audio
- 21:19 - Efectos visuales
Recursos
Videos relacionados
WWDC25
WWDC24
- Compose interactive 3D content in Reality Composer Pro
- Enhance your spatial computing app with RealityKit audio
WWDC23
-
Buscar este video…
Hola, te doy la bienvenida. Soy Max Cobb, ingeniero de software aquí en Apple. Quiero comenzar con un pequeño repaso del pasado. Si eres desarrollador de SceneKit, tal vez reconozcas un juego de muestra divertido e inspirador que Apple compartió hace años. En este proyecto, un panda rojo, llamado Max, corre en una escena volcánica, resolviendo acertijos para salvar a sus amigos y luchar con enemigos. Este se creó con una estructura llamada SceneKit, que permite crear apps nativas en 3D sin necesidad de inflar sus paquetes con un motor de juego completo de terceros. SceneKit existe desde hace muchos años. Desde OS X Mountain Lion. Eso fue hace 13 años. Muchas cosas cambiaron en el ecosistema de Apple Developer. Nuevos paradigmas de codificación, hardware y plataformas. Hubo un gran cambio en la forma en que las personas crean apps e interactúan con ellas. SceneKit se diseñó con una arquitectura que tenía mucho sentido en ese momento. Pero a medida que el ecosistema avanzó, fue muy difícil mantener actualizado SceneKit sin introducir cambios importantes en las apps 3D existentes. Es por eso que Apple dejará de dar soporte a SceneKit en todas sus plataformas.
¿Qué significa eso para los proyectos existentes? ¿va a seguir funcionando mi app? ¿Tengo que reescribirla? ¿Qué puedo usar en su lugar? Veamos qué significa esto para los desarrolladores de SceneKit. Déjame decirte que no es necesario que vuelvas a escribir las apps. Se trata de una desactivación temporal, entonces las apps que usan SceneKit seguirán funcionando. Pero si planeas una nueva app o una actualización importante, no se recomienda usar SceneKit.
SceneKit ahora está entrando en modo de mantenimiento. Apple solo corregirá errores críticos, así que no esperes nuevas funcionalidades u optimizaciones. Actualmente, no hay planes para eliminar SceneKit, y Apple dará a los desarrolladores un aviso con antelación si esto cambia.
Pero si quieres usar la tecnología de vanguardia de Apple y su combinación líder de hardware y software, la mejor opción es RealityKit.
RealityKit es un motor 3D moderno, de uso general y alto nivel. Es potente y accesible, brinda acceso a los estándares de la industria y permite crear renderizaciones hermosas y realistas con funcionalidades avanzadas que hacen que tu app brille. Es la tecnología que potencia apps de terceros y funcionalidades del sistema, como Vista rápida en la Mac, para previsualizar modelos 3D con un botón. Las nuevas etiquetas del App Store en iOS 26 son uno de los grandes cambios para que tus apps sean más visibles. Estas etiquetas tienen íconos 3D estilizados, renderizados con RealityKit. Este es un ejemplo en el que App Store muestra una lista de juegos etiquetados por tener buenos gráficos en 3D. También Swift Charts usa RealityKit para ofrecer una tercera dimensión a las visualizaciones de datos.
RealityKit no solo se usa en visionOS, sino que es fundamental para la plataforma. Todo en visionOS aprovecha RealityKit, incluidos los botones de las apps y las ventanas que los contienen. RealityKit hace que el contenido de tu app parezca estar realmente en el entorno del mundo real.
RealityKit prioriza SwiftUI, para que los desarrolladores de SwiftUI se sientan como en casa. Es compatible con: VisionOS, iOS, macOS, iPadOS y, este año, RealityKit llegará a una nueva plataforma: tvOS, ofreciendo otro destino para apps y otro contenido creado con RealityKit. Este año también hay nuevas funcionalidades avanzadas e interesantes. Para más información, consulta la sesión “Novedades de RealityKit” de mi colega Lawrence Wong. Hoy, te ayudaré a comprender cómo funciona RealityKit en comparación con SceneKit, qué es diferente, las nuevas posibilidades y cómo puedes comenzar desde el mundo de SceneKit. Además, quiero modernizar mi juego, con nuevas funcionalidades y compatible con las plataformas que tengo en mente. Explicaré los pasos principales que hice al migrar este divertido juego de SceneKit a RealityKit. El código de muestra de este proyecto está disponible para descargar y explorar. Bien, esta es la agenda. Empezaré explicando las diferencias conceptuales entre estos dos motores de renderizado y cómo interactuar con ellos. No hay juego en 3D sin algunos recursos interesantes. Exploraré formas de convertir los recursos de SceneKit al formato que quieras en RealityKit. Te mostraré las herramientas para crear escenas en RealityKit y a comparar las funcionalidades de SceneKit y RealityKit, empezando por las animaciones. Para darle estilo a mi escena, agrego luces dinámicas, inmersión y personalidad, audio personalizado y efectos visuales, como posprocesamiento de partículas. Todo lo que necesito para transferir un juego así de SceneKit a RealityKit. Bien, empecemos. Me centraré en cuatro áreas clave: Arquitectura, sistemas de coordenadas, recursos y vistas. Empezando con arquitectura, SceneKit se basa en nodos. Eso significa que cada objeto de la escena es un nodo y tienen comportamientos predefinidos en forma de propiedades.
Cada nodo tiene propiedades para las funcionalidades, como la geometría, las animaciones y las luces.
Cuando creo un nodo vacío, no tiene geometría ni propiedades especiales y se coloca en el origen de su elemento principal.
Al renderizar a Max, puedo asignar el modelo a la propiedad de geometría de un nodo.
Cuando Max camina por la escena, la app asigna un reproductor de animación al nodo y lo reproduce.
Los pasos que escuchas son de un reproductor de audio, también asignado al mismo nodo.
Así funciona una arquitectura basada en nodos. Todo gira en torno al nodo y sus propiedades. Por el contrario, RealityKit usa un patrón de diseño llamado Entity Component System, o ECS. Cada objeto de la escena es una entidad y modifico su comportamiento adjuntando componentes a ella. Cada comportamiento en RealityKit es un componente.
Desde su transformación hasta comportamientos avanzados como física, partículas y portales, la lista de componentes crece a medida que RealityKit evoluciona. Los nuevos componentes incluyen componentes de presentación de imágenes y gestos. Estas son las diferencias de arquitectura que hay que considerar al trasladar apps de SceneKit a RealityKit. El siguiente es sencillo. Al usar un nuevo motor de renderizado, no puedes hacer mucho sin entender el sistema de coordenadas.
Los sistemas de coordenadas son fáciles de traducir entre SceneKit y RealityKit porque son iguales. En ambos sistemas, el eje X apunta a la derecha, el eje Y hacia arriba y el eje Z directamente a la cámara.
SceneKit es flexible en cuanto a los formatos de modelo que acepta y el motor los serializa en archivos SCN. Esto es conveniente, pero no es un estándar unificado en la industria. La mayoría de estos formatos son propietarios y admiten funcionalidades, lo que complica los flujos de recursos.
RealityKit, está diseñado en torno a un estándar abierto de la industria llamado Descripción de escena universal o USD.
Es un formato introducido por Pixar en 2012 para resolver problemas en la creación de recursos, como el intercambio de datos y la colaboración. Este es el estándar de Apple en todas las plataformas. Necesitaré convertir algunos archivos SCN a USD para mi juego, así que veremos esos detalles. La última diferencia central que quiero resaltar son las vistas. Las vistas son componentes básicos que representan una parte de la IU de una app. En SceneKit y en RealityKit, es una ventana gráfica que renderiza contenido en 3D.
Con SceneKit, puedo renderizar contenido con un SCNView o un SceneView si uso SwiftUI. También está ARSCNView, que permite renderizar objetos virtuales en el mundo real con ARKit. Con RealityKit, es fácil: el contenido renderiza a través de un RealityView, que se diseñó para ofrecer todas las prestaciones que conocemos con SwiftUI. Puedo renderizar escenas virtuales o colocar objetos en el mundo real con esta vista. El mismo contenido se implementa y adapta en todas las plataformas de Apple compatibles, e incluso realiza un renderizado estereoscópico en visionOS, sin cambios en el código. Estos son los conceptos básicos que debes tener en cuenta al realizar la transición a RealityKit: arquitectura, sistemas de coordenadas, compatibilidad de recursos y vistas. Todo gran juego debe tener recursos interesantes. Veamos lo que tengo actualmente en mi juego. En el catálogo de recursos de arte, tengo modelos 3D. Estos modelos están en formato de archivo SCN. Esto es genial para SceneKit, pero tengo que convertir todos estos recursos a USD para usarlos en RealityKit. Estas son algunas opciones. Si tienes los modelos en su formato original, esa sería la mejor opción. Lo más probable es que tu herramienta de creación de contenido digital o DCC admita USD. Estoy usando Blender, entonces puedo exportar el contenido a este formato.
Si no tienes los archivos originales, hay otras opciones para convertir tu recurso SCN existente directamente a USD. Un método, probablemente el más fácil, es en Xcode. Selecciona un recurso. Esta vez elegiré enemy1. Ve a File, Export..., y, en las opciones, elige Universal Scene Description Package, que es un archivo USD comprimido.
Los resultados de exportar así pueden variar, pero para la mayoría de los modelos de mi juego, esto funciona bien. También puede que tengas animaciones en archivos SCN separados, común en SceneKit. En mi juego de SceneKit, las animaciones para el personaje principal, como caminar, saltar y girar, se encuentran en archivos separados sin geometría. ¿Cómo exporto las animaciones a USD y las vuelvo a aplicar a la geometría? Por suerte, Apple actualizó una CLI que viene con Xcode 26 llamada SCN tool para facilitar este proceso. Veamos cómo se usa. Puedo invocar SCN tool con xcrun scntool.
Esto muestra una lista de opciones disponibles. Para convertir, puedo escribir xcrun scntool --convert especificando el archivo. Y --format usdz como tipo de salida. Esto solo convertiría el archivo SCN a USD de la misma manera que hice en Xcode. Para agregar la animación, uso --append-animation para cada archivo de animación SCN que quiero exportar.
Guárdalo en el escritorio.
Veamos el archivo convertido.
Genial, mi geometría tiene la información de la animación en USD. Hice esto con todos mis recursos y los organicé para que funcionara con mi flujo de trabajo preferido. Ahora estoy listo para comenzar a armar el juego. Lo que me lleva a otro tema, la composición de escenas. Con la versión de SceneKit, el editor de SceneKit en Xcode permitió unir todas las piezas. RealityKit tiene una herramienta para facilitar esto que se llama Reality Composer Pro. Reality Composer Pro está entre Xcode y el DCC de mi elección, como Blender o Maya. Sirve para componer mi escena, agregar componentes a entidades, crear y modificar sombreadores y preparar la escena para Xcode. Puedo integrar todos mis nuevos recursos USD y empezar a armar el juego de nuevo. Reality Composer Pro viene con Xcode. Lo abriré ahora.
Crearé mi proyecto con el nombre PyroPanda.
Reality Composer Pro me da una escena predeterminada sin contenido. Puedo arrastrar todos los recursos recién convertidos a mi proyecto.
Para agregarlos a mi escena, hago clic con el botón derecho y selecciono Add to Scene.
O puedo arrastrar un recurso desde el explorador de proyectos a la ventana gráfica.
Cambiar la posición de las entidades es fácil. Puedo usar este control para poner a Max en el inicio del juego. Más o menos ahí. Reality Composer Pro es una buena herramienta para componer mi escena de una manera visual, que permite editar materiales, sombreadores, y más. ¿Recuerdas que dije que Reality Composer Pro está entre mi DCC y Xcode? Ahora tengo que traer el contenido a mi app. Esa es la siguiente tarea. El proyecto de Reality Composer Pro es un paquete de Swift. Para agregarlo como una dependencia local en Xcode, en las dependencias de mi paquete de proyecto, hago clic en Add Local… y selecciono mi app.
En el archivo Swift de la vista de contenido, tengo que importar RealityKit y mi nuevo paquete, PyroPanda, aquí.
En mi ContentView, agregaré un RealityView.
Luego tengo que cargar la escena como una entidad, especificando que viene de ese paquete.
Por último, agregar la entidad a mi contenido de RealityView.
También agregaré un control de cámara para mostrarte el resultado.
Antes dediqué un rato a construir la escena con Reality Composer Pro. Este es el resultado completo. Agregué los modelos restantes, asigné las texturas y creé los sombreadores dinámicos para la lava, las plantas y uno de los enemigos, dando más personalidad al entorno volcánico. Puedes consultar el código de muestra para ver cómo se creó cada pieza de esta escena. Hay muchas cosas que puedes hacer con Reality Composer Pro. Para más información, consulta una de estas dos sesiones de años anteriores de la WWDC. Está empezando a tomar forma. Ahora haré que Max cobre vida con algo de animación. Cuando convertí a Max, también agregué una animación. Cuando un archivo USD tiene animaciones, RealityKit las expone en AnimationLibraryComponent. Esto facilita el acceso y reproducción de las animaciones en entidades. Hago referencia a las animaciones desde un único archivo USD llamado “Max”. En Reality Composer Pro, puedo ver las referencias a las animaciones en el inspector.
Puedo activar cada animación de mi proyecto con el nombre de este componente.
En la versión de SceneKit, así es como se reproducía la animación de giro. Primero, encontré el Max_rootNode en mi escena y cargué spinAnimation por separado. Luego, recorrí la escena de animación hasta encontrar el reproductor de animación SCN y guardé una referencia. Agregué el AnimationPlayer a Max, con la referencia “giro” y reproduje la animación en el nodo. En RealityKit, acceder a la animación con AnimationLibraryComponent hace que esto sea conveniente. Busca la entidad Max por su nombre, en este caso “Max.” Toma AnimationLibraryComponent del conjunto de componentes de Max y selecciona la animación deseada por nombre. Reprodúcelo en la entidad. Mientras Max se mueve por la escena, mi app reproduce diferentes animaciones que representan el movimiento. Consulta el código fuente de la app para ver cómo se conecta esto. Algo que agrega un elemento de realismo y ambiente es la iluminación. Cuando se aplica bien, la diferencia es enorme. La iluminación en mi app se puede lograr a través de Reality Composer Pro sin ningún código adicional. Veamos cómo se ve. Puedo insertar una luz desde el ícono de agregar, al final de la jerarquía de entidades, y elijo una luz direccional.
Es una entidad vacía con solo un componente de luz direccional. En este tipo de luz, solo la orientación cambia la forma en que ilumina otras entidades.
La colocaré aquí para más claridad visual y la giraré alrededor del eje X.
La luz se ve bien, pero le falta algo. ¡No hay sombras! En la lista de componentes, puedo agregar un componente de sombra direccional marcando aquí.
Ahora puedo ver cómo el terreno y Max proyectan sombras sobre el resto de la escena. Conseguir lo mismo con el código es muy similar. Para SceneKit, creo un SCNLight, establezco el tipo en direccional y asigno castShadow a true. Luego creo un nuevo nodo y asigno la luz a la propiedad light del nodo.
Para RealityKit, creo una entidad con dos componentes. Un DirectionalLightComponent y un DirectionalLightComponent.Shadow. Luz direccional es una de las opciones de iluminación de RealityKit. Otras son luces puntuales, focos y luces basadas en imágenes, que usan texturas para iluminar la escena. Mi juego se ve visualmente más dinámico ahora, así que agregaré algunos elementos de audio para aumentar la interacción. Veamos la pista de audio ambiental que está en bucle en la escena. En SceneKit, cargo el archivo de audio ambiental como fuente de audio. Puedo modificar las propiedades para cambiar la forma de reproducción. En este caso, quiero que se reproduzca en bucle y que no sea posicional ni espacial, es decir, que el volumen del audio no cambie según la distancia de la cámara al nodo de origen. Agrega un reproductor de audio al nodo de relieve e inicia la reproducción. El acceso a los archivos de audio en RealityKit es muy parecido al de las animaciones: con los componentes. El componente esta vez se llama AudioLibraryComponent. Puedo configurar la reproducción de audio desde Reality Composer Pro, en lugar de hacer todo en mi app. Veamos cómo se ve esa configuración. Ya adjunté un AudioLibraryComponent a la entidad de relieve con una referencia al archivo de audio ambiental. Como no quiero que suene como si viniera de una fuente específica, puedo agregar un componente de audio ambiental a la entidad.
Este archivo de audio es extenso, y por defecto, RealityKit lo cargará completo en la memoria al momento de ejecución. Puedo cambiar esto y transmitir el recurso de audio mientras se reproduce.
Cuando la pista termine, quiero que la reproducción comience de nuevo, así que seleccionaré la casilla Loop.
Todo está conectado y el audio está listo para reproducirse en RealityKit. Hay dos formas de hacerlo. La primera es con AudioLibraryComponent.
Puedo obtener el AudioLibraryComponent del conjunto de componentes del terreno, hacer referencia al audioResource ambiental por nombre y reproducirlo en esa misma entidad. RealityKit ve los ajustes que hice con Reality Composer Pro, por lo que reproducirá en bucle y transmitirá el audio como pista ambiental. También puedo usar un truco de una acción de entidad integrada llamada PlayAudioAction.
PlayAudioAction examina el AudioLibraryComponent de la entidad de destino y encuentra el archivo de audio con nombre.
Convierto esa acción en una animación y la reproduzco en la misma entidad.
Las acciones de entidad son útiles para minimizar el código real en mi app.
Uso esta acción y otras para varios eventos de mi juego. Por ejemplo, cuando el personaje principal salta o ataca.
Para el último paso en esta sesión, veamos los efectos visuales incluidos en mi juego. Los efectos visuales pueden convertir una escena 3D de algo preciso en una experiencia emotiva. Empezando por las partículas, tengo efectos de partículas muy interesantes que se crearon para el juego original desde el editor de SceneKit en Xcode. Estas se guardan como archivos SCN. No hay ninguna herramienta para convertir estos archivos en algo compatible con RealityKit, pero puedo crear efectos de partículas muy similares con Reality Composer Pro. Vamos a Reality Composer Pro y veamos qué aspecto tienen las partículas. Prefiero dejar mis partículas como USD separados, para agregar un archivo haciendo clic en Reality Composer Pro. Lo llamaré volcano_smoke.
Puedo agregar un Particle Emitter a la entidad raíz de este archivo.
Luego, al presionar el botón de reproducir arriba de los componentes, se activan las partículas predeterminadas.
Hay algunos ajustes entre los que puedo elegir, incluido mi favorito, Impact.
Este ajuste tiene una buena textura para el humo, por lo que es excelente para este efecto. Estos ajustes pueden ser familiares si vienes de SceneKit, con algunas diferencias.
Comparé las configuraciones de Reality Composer Pro con las de las partículas de mi juego original en SceneKit y creé un efecto de humo de volcán similar a la versión de SceneKit.
Ahora, lo arrastraré a mi escena principal y veré cómo se ve con todos los demás modelos.
Genial, eso es exactamente lo que quería. El paso final es el posprocesamiento. Aquí puedes agregar los toques finales con una pasada final de tu salida renderizada antes de que aparezca en tu app.
En el juego original, la cámara tenía un efecto de resplandor, haciendo que las luces brillantes se filtraran, creando un brillo tenue y radiante que intensificaba la atmósfera sobrenatural.
Esto se hizo modificando propiedades en la cámara activa de la escena. Si bien esto es cómodo, los desarrolladores, y sobre todo los desarrolladores de juegos, prefieren tener mayor control de efectos como este, por rendimiento y por preferencias artísticas.
¿Pero qué pasa con RealityKit?
Aunque RealityKit no incluye intencionalmente una propiedad directa para este efecto, ahora puedes agregar efectos de posprocesamiento a las RealityViews en iOS, iPadOS, macOS y tvOS. Esto requiere una configuración, pero no significa que tengas que escribir todos los sombreadores de metal desde cero. Apple tiene sombreadores de metal optimizados que puedes usar para comenzar. Crearé un efecto de resplandor con la API de posprocesamiento, que puedo agregar. De la textura original de mi juego, quiero extraer los aspectos más destacados y escribirlos en una textura separada. Luego lo difumino para suavizar los bordes y, finalmente, combino esa textura borrosa sobre la original para crear el efecto.
Para hacer esto en mi app, necesito definir un tipo, BloomPostProcess, que se ajuste a PostProcessEffect.
Dentro del método postProcess, creo una textura de metal temporal para escribir datos del efecto. Puedo usar un sombreador de rendimiento para extraer solo las partes más brillantes, que es de donde quiero el resplandor. Desenfoco la zona con un desenfoque gaussiano. Por último, coloco la imagen borrosa encima de la textura original. El código completo de estos pasos está disponible en la descarga.
Para aplicar este efecto a mi RealityView, puedo crear una instancia de BloomPostProcess y aplicarla a los efectos de renderizado.
Esto le da un toque final genial a mi juego. El entorno se vuelve más vibrante y es una experiencia increíble para jugar. Ya casi termino mi app gracias a RealityKit. Funciona exactamente igual en iOS, iPadOS, macOS y tvOS. Con una base de código central y una escena RealityKit, puedo lanzar mi app en todas estas plataformas. Mira cómo funciona en la plataforma más reciente de RealityKit, tvOS, compatible con controlador.
Ahora puedo usar juegos de RealityKit en el Apple TV.
En visionOS, hay algo aún más especial que puedo hacer. Al colocar mi escena en una vista de inmersión progresiva, puedo agregar un portal al mundo de PyroPanda que se renderiza en 3D frente a mí.
Este tipo de experiencia solo es posible con RealityKit y visionOS.
Repasemos lo que vimos hoy. SceneKit está obsoleto. Si bien es importante, no significa que debas preocuparte por tus apps de SceneKit existentes por ahora. El mejor camino a seguir es RealityKit, que trae posibilidades únicas para tus apps y juegos. Comenté las principales diferencias conceptuales y de herramientas para desarrolladores de RealityKit, así como los pasos más importantes que seguí al migrar un juego desde SceneKit a RealityKit.
Te recomiendo consultar estas sesiones para ayudarte con la creación de increíbles app y juegos con RealityKit, junto con otras sesiones de años anteriores y la documentación de RealityKit. En la descarga de la app de muestra, hay más detalles sobre áreas que no pude comentar, como el movimiento de cámara, el control del personaje y controladores del juego. La tecnología siempre evoluciona. Apple quiere que la retirada de SceneKit sea lo más fácil posible para desarrolladores como tú. Nos entusiasma el futuro de RealityKit y queremos ver qué harán con él. Gracias por acompañarnos, y disfruta de la conferencia.
-
-
16:33 - Animations in RealityKit
// RealityKit guard let max = scene.findEntity(named: "Max") else { return } guard let library = max.components[AnimationLibraryComponent.self], let spinAnimation = library.animations["spin"] else { return } max.playAnimation(spinAnimation)
-
18:18 - Directional Light Component in RealityKit
// RealityKit let lightEntity = Entity(components: DirectionalLightComponent(), DirectionalLightComponent.Shadow() )
-
24:37 - Create Bloom effect using RealityKit Post processing API
final class BloomPostProcess: PostProcessEffect { let bloomThreshold: Float = 0.5 let bloomBlurRadius: Float = 15.0 func postProcess(context: borrowing PostProcessEffectContext<any MTLCommandBuffer>) { // Create metal texture of the same format as 'context.sourceColorTexture'. var bloomTexture = ... // Write brightest parts of 'context.sourceColorTexture' to 'bloomTexture' // using 'MPSImageThresholdToZero'. // Blur 'bloomTexture' in-place using 'MPSImageGaussianBlur'. // Combine original 'context.sourceColorTexture' and 'bloomTexture' // using 'MPSImageAdd', and write to 'context.targetColorTexture'. } } // RealityKit content.renderingEffects.customPostProcessing = .effect( BloomPostProcess() )
-
-
- 0:00 - Comenzar
SceneKit está descontinuado en todas las plataformas Apple. Las apps y juegos SceneKit existentes seguirán funcionando, pero solo recibirán correcciones de errores críticos en el futuro. Se recomienda a los desarrolladores que utilicen RealityKit, un motor 3D moderno y potente que aprovecha SwiftUI y es compatible con visionOS, iOS, macOS, iPadOS y ahora con tvOS.
- 5:03 - Diferencias fundamentales
SceneKit y RealityKit son motores de renderizado 3D de Apple. SceneKit está basado en nodos, con propiedades para geometría, animaciones, audio, física y luces. RealityKit utiliza el Sistema de Componentes de Entidad (ECS), donde las entidades se modifican al agregar componentes. Ambos motores utilizan el mismo sistema de coordenadas para diestros. SceneKit utiliza archivos SCN propietarios, mientras que RealityKit emplea el estándar industrial abierto USD.
- 8:59 - Conversión de activos
Al realizar la transición a RealityKit, ten en cuenta la arquitectura, los sistemas de coordenadas, el soporte de activos y las vistas. Los activos, especialmente los modelos 3D, deben convertirse del formato SCN al formato USD. La mejor opción es exportar directamente desde la herramienta DCC original como Blender. Si los archivos originales no están disponibles, Xcode ofrece una función de exportación, aunque los resultados pueden variar. Para animaciones en archivos SCN separados, se puede usar la herramienta SCN CLI incluida con Xcode 26 para convertir y agregar animaciones a archivos USDZ.
- 11:57 - Composición de la escena
Reality Composer Pro, una herramienta incluida con Xcode, facilita la composición de escenas para proyectos de visionOS. Permite a los usuarios importar activos USD, organizar entidades, editar materiales, sombreadores y luces, y preparar escenas para Xcode.
- 15:21 - Animaciones
Mira cómo animar el personaje 3D Max de SceneKit en RealityKit. Después de convertir a Max a un archivo USD con animaciones, el ejemplo accede a estas animaciones a través de AnimationLibraryComponent en Reality Composer Pro. Esto simplifica el proceso en comparación con la versión anterior de SceneKit, donde las animaciones debían cargarse y administrarse por separado. Ahora, puedes encontrar fácilmente la entidad Max, seleccionar la animación deseada por nombre y reproducirla en la app.
- 16:58 - Luces
La iluminación en Reality Composer Pro es una herramienta poderosa que puede mejorar enormemente el realismo y el ambiente en una escena. Con la app, puedes agregar fácilmente luces direccionales, ajustar su orientación y habilitar sombras para crear profundidad y dimensión. El proceso es similar en SceneKit y RealityKit, y RealityKit ofrece varios tipos de iluminación, incluidas luces puntuales, reflectoras y basadas en imágenes.
- 18:37 - Audio
El proyecto SceneKit mejora la participación del juego agregando audio ambiental. Carga un archivo de audio como fuente, lo configura para que se reproduzca en bucle no espacial y lo adjunta al nodo de terreno. En RealityKit, el proceso es similar: adjunta un AudioLibraryComponent a la entidad de terreno, agrega un componente de audio ambiental para deshabilitar el audio posicional. Para optimizar el uso de la memoria, configura el audio para que se transmita.
- 21:19 - Efectos visuales
Esta última sección cubre cómo usar efectos visuales en RealityKit al trasladar tu proyecto SceneKit. El ejemplo comienza mostrando cómo crear efectos de partículas en Reality Composer Pro con un archivo USD llamado 'volcano_smoke'. El desarrollador compara las configuraciones de Reality Composer Pro con las de SceneKit, lo que le permite lograr un efecto de humo de volcán similar en RealityKit. Luego, el ejemplo pasa al posprocesamiento, que agrega los toques finales al resultado renderizado. En la versión original de SceneKit del juego, se utilizó un efecto de floración para crear un brillo suave y radiante alrededor de luces brillantes. Si bien RealityKit no tiene una propiedad simple para este efecto, ahora puedes agregar efectos de posprocesamiento a RealityViews usando la API de posprocesamiento. El ejemplo crea un efecto de floración personalizado al extraer reflejos, difuminarlos y mezclarlos nuevamente sobre la textura original. Este efecto mejora el entorno del juego, haciéndolo más vibrante. Luego se demuestra el juego al ejecutarse en varias plataformas de Apple, incluidas iOS, iPadOS, macOS y tvOS, lo que muestra las capacidades multiplataforma de RealityKit.