RealityUI es una colección de servicios públicos y objetos de UI para RealityKit. Los objetos de la UI incluidos en la realidad de la realidad tienen como objetivo ofrecer estándares familiares de interfaz de usuario, pero en una configuración 3D para la realidad aumentada y virtual a través de RealityKit.
RealityUI también tiene una colección de componentes para interactuar con cualquier entidad a través de interacciones táctil o de arrastre.



Agregue la URL de este repositorio a su proyecto XCode 11+ en Project > Swift Packages .
https://github.com/maxxfrazer/RealityUI.git
Agregue import RealityUI a la parte superior de su archivo Swift para comenzar.
RUI los componentes utilizados en la realidad deben estar registrados antes de que se usen, simplemente llame a RealityUI.registerComponents() . Para obtener más información sobre lo que se entiende al registrar componentes, consulte la documentación de Apple aquí.
Con VisionOS, los gestos se pueden habilitar en una vista de realidad utilizando modificadores View/addRUIDragGesture() o View/addRUITapGesture() , o agregando los gestos directamente con .gesture(RUIDragGesture()) o .gesture(RUITapGesture()) . El RealityView podría verse algo así:
RealityView { content in
let swtch = RUISwitch ( )
swtch . scale = . init ( repeating : 0.1 )
content . add ( swtch )
} . addRUIDragGesture ( )El fragmento anterior agrega un interruptor/alternar interactivo a la escena.
Este gesto funciona para cualquier entidad con RuidragComponent, por ejemplo:
RealityView { content in
let movable = try ! await ModelEntity ( named : " toy_biplane " )
movable . generateCollisionShapes ( recursive : false )
movable . components . set ( RUIDragComponent ( type : . move ( nil ) ) )
movable . components . set ( InputTargetComponent ( ) )
content . add ( movable )
} . addRUIDragGesture ( ) 
Habilitar los gestos realizados se pueden hacer llamando RealityUI.enableGestures(.all, on: ARView) , siendo ARView su instancia de un objeto Arview.
Ruislider, Ruiswitch, Ruistepper y Ruibutton usan RUIDragComponent , que requiere .ruiDrag . Si está agregando elementos que usan el componente RUITapComponent puede usar el gesto .tap . Solo recomendaría usar .all al habilitar los gestos, ya que estos inevitablemente se moverán a medida que se desarrolle RealityUi.
RealityUI.enableGestures(.all, on: arView)
Por defecto, todas las entidades realizadas son bastante grandes. Esto se usa para estandarizar los tamaños para que siempre sepa qué esperar. Por ejemplo, todos los pulgares de UI son esferas con un diámetro de 1 metro, que es 1 unidad en la realidad, ± cualquier ajuste de relleno. Todas las entidades de realidad se enfrentan [0, 0, -1] de forma predeterminada. Para que apunten a la cámara de usuario, o .zero , puede usar el .look(at:,from:,relativeTo:) método como así: .look(at: .zero, from: [0, 0, 1]) . O si desea que gire de inmediato si lo ha colocado en [0, 0, -1] , establezca la orientación a simd_quatf(angle: .pi, axis: [0, 1, 0]) . El uso del método .oke () funciona aquí configurando el valor at: en la dirección en la que se debe usar el botón.
Ruiswitch es un interruptor de palanca 3D con un estado de encendido y apagado. El cuadro limitado predeterminado es 2x1x1m

Más detalles
Ruistepper se usa para incrementar o disminuir un valor. El cuadro limitado predeterminado es 2x1x0.25m

Más detalles
Una pista interactiva para representar un valor interpolado. El cuadro limitado predeterminado es de 10x1x1m, incluido el pulgar.

Más detalles
Ruibutton se usa para iniciar una acción específica. La acción aquí solo se activará si el gesto comienza en un botón y también termina en el mismo botón. Esto es similar al evento UICONTROL de TouchUPinSide. El cuadro delimitador de botón predeterminado antes de presionar el botón en la base es [1, 1, 0.3]

Más detalles
Todas las entidades de control de la realidad usan gestos personalizados que no son estándar en la realidad, pero algunas de ellas han sido aisladas para que cualquiera pueda usarlos para manipular su propia escena de realidad.
Arrastre los objetos en cualquier lugar del espacio con 3 grados de libertad con ruidragComponent, utilizando el tipo .move.

Este tipo tiene una restricción opcional, para fijar el movimiento dentro de ciertos criterios:
Restricción del cuadro : restringe el movimiento dentro de un BoundingBox especificado, proporcionando un área definida donde la entidad puede moverse.
Restricción de puntos : limita el movimiento a un conjunto de puntos predefinidos, representados como una matriz de SIMD3<Float> .
Restricción de abrazadera : utiliza una función de sujeción personalizada para controlar el movimiento. Esta función toma un SIMD3<Float> como entrada y devuelve un SIMD3<Float> para determinar la nueva posición.
Desbloquee la capacidad de rotar una entidad de realidad con solo un dedo.

Más detalles
¡Cree un objeto en su escena de RealityKit con una acción, y se recogerá automáticamente cada vez que el usuario lo aproveche!
No hay GIF para este, pero consulte RuitapComponent para ver cómo agregar esto a una entidad en su aplicación.
Si, en cambio, quería usar algo similar a un toque de "retoque dentro", puede usar ruidragComponentType/Click.

No hay muchas animaciones agregadas de forma predeterminada a RealityKit, especialmente ninguna que pueda establecer para repetir. Vea la página Wiki sobre cómo usar estas animaciones.
Gire una entidad alrededor de un eje fácilmente usando Ruispin.
Más detalles
Agite una entidad para atraer la atención, o señalar que algo era incorrecto.
Más detalles
Ya es posible colocar el texto en realidad, pero sentí que necesitaba una pequeña actualización.
Con Ruitext, puede crear fácilmente una entidad con el texto especificado colocado con su centro de caja delimitador en el medio de su entidad.

Más detalles
Más información sobre todo lo que se proporciona en este paquete Swift en la documentación.
También vea el proyecto de ejemplo para iOS en este repositorio.