真人岛是用于RealityKit的实用程序和UI对象的集合。 REANEUI中包含的UI对象旨在提供熟悉的用户界面标准,但在3D设置中,用于通过RealityKit增强和虚拟现实。
真人岛还拥有一系列通过触摸或拖动交互与任何实体接口的组件。



将此存储库的URL添加到您的Xcode 11+项目Project > Swift Packages下的URL。
https://github.com/maxxfrazer/RealityUI.git
将import RealityUI添加到Swift文件的顶部以启动。
在使用之前,必须在使用真元中使用的所有组件在使用之前注册,只需在您的应用程序中的任何地方都拨打RealityUI.registerComponents()在初始化RUI的任何类中的任何类中,以避免与此问题进行问题。有关注册组件的含义的更多信息,请在此处查看Apple的文档。
使用Visionos,可以使用View/addRUIDragGesture()或View/addRUITapGesture()修饰符在真人秀上启用手势,也可以通过.gesture(RUIDragGesture())或.gesture(RUITapGesture())直接添加手势。真人秀可能看起来像这样:
RealityView { content in
let swtch = RUISwitch ( )
swtch . scale = . init ( repeating : 0.1 )
content . add ( swtch )
} . addRUIDragGesture ( )上面的摘要在场景中添加了一个交互开关/切换。
例如,此手势适用于RuidragComponent的任何实体,例如:
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 ( ) 
可以通过调用RealityUI.enableGestures(.all, on: ARView)来启用真人秀手势,其中ARView是您的Arview对象的实例。
Ruislider,Ruiswitch,Ruistepper和Ruibutton都使用RUIDragComponent ,这需要.ruiDrag 。如果要添加使用组件RUITapComponent元素,则可以使用engure .tap 。我只建议在启用手势时使用.all ,因为随着eraneui的发展,这些手势不可避免地会四处移动。
RealityUI.enableGestures(.all, on: arView)
默认情况下,所有真人秀实体都很大。这用于标准化尺寸,以便您始终知道会发生什么。例如,所有的UI拇指都是直径为1米的球体,在RealityKit中为1个单位,±任何填充调整。默认情况下,所有真人秀实体面对[0, 0, -1] 。要让它们指向用户摄像机或.zero ,您可以使用.look(at:,from:,relativeTo:)方法类似so: .look(at: .zero, from: [0, 0, 1]) 。或者,如果您希望将其立即转动,如果将其定位在[0, 0, -1]处,则将方向设置为simd_quatf(angle: .pi, axis: [0, 1, 0]) 。使用.look()方法在此处通过设置at:值为方向应使用该按钮的方向。
Ruiswitch是一个带有开机和关闭状态的3D拨动开关。默认边界框是2x1x1m

更多细节
Ruistepper用于增加或降低值。默认边界框是2x1x0.25m

更多细节
一个交互式轨道,代表插值值。默认边界框为10x1x1m,包括拇指。

更多细节
Ruibutton用于启动指定的操作。只有在手势开始按按钮开始并以同一按钮结束时,此处的动作才会触发。这类似于Touchupinside Uicontrol事件。将按钮压入基座之前,默认按钮边界框是[1, 1, 0.3]

更多细节
所有真人真ui控制实体都使用在现实中不是标准化的自定义手势,但是其中一些是孤立的,因此任何人都可以使用它们来操纵自己的真人秀场景。
使用.move类型,在带有3个自由度的空间中将对象带有3个自由度。

这种类型具有可选的约束,可以在某些标准下修复运动:
盒子约束:限制指定BoundingBox中的移动,提供了实体可以移动的定义区域。
点约束:将运动限制为一组预定义的点,表示为SIMD3<Float>的数组。
夹具约束:使用自定义夹具功能来控制运动。此功能将SIMD3<Float>作为输入,并返回修改后的SIMD3<Float>以确定新位置。
仅用一根手指旋转真人股实体的能力。

更多细节
通过操作在您的真人秀kit场景中创建一个对象,每当用户点击时,它都会自动拾取!
没有GIF,但请查看RuitapComponent,以查看如何将其添加到应用程序中的实体。
如果您想使用类似于“内部”点击的东西,则可以使用RuidragComponentType/click。

默认情况下,没有太多的动画添加到RealityKit,尤其是您无法重复的动画。请参阅有关如何使用这些动画的Wiki页面。
使用Ruispin轻松围绕轴旋转实体。
更多细节
摇动一个实体以吸引注意力,或者表明某些东西是不正确的。
更多细节
已经可以将文本放在RealyKit中,但我觉得它需要一些升级。
使用Ruitext,您可以轻松地创建一个带有指定文本的实体,其边界框中心位于实体的中间。

更多细节
有关文档中此Swift软件包中提供的所有信息的更多信息。
还可以在此存储库中查看iOS的示例项目。