真人島是用於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的示例項目。