Realityui는 RealityKit의 유틸리티 및 UI 객체 모음입니다. RealityUI에 포함 된 UI 객체는 친숙한 사용자 인터페이스 표준을 제공하는 것을 목표로하지만 RealityKit을 통해 증강 및 가상 현실을위한 3D 설정입니다.
RealityUi에는 터치 또는 드래그 상호 작용을 통해 모든 엔티티와 인터페이스하기위한 구성 요소 모음이 있습니다.



이 저장소의 URL을 Project > Swift Packages 에서 Xcode 11+ 프로젝트에 추가하십시오.
https://github.com/maxxfrazer/RealityUI.git
Swift 파일의 상단에 import RealityUI 추가하여 시작하십시오.
RealityUI에 사용되는 모든 구성 요소는 사용하기 전에 등록해야합니다. RUI 로 시작하는 클래스가 초기화되기 전에 RealityUI.registerComponents() 전화하기 만하면됩니다. 구성 요소를 등록함으로써 무엇을 의미하는지에 대한 자세한 내용은 Apple의 문서를 참조하십시오.
VisionOS를 사용하면 View/addRUIDragGesture() 또는 View/addRUITapGesture() 수정자를 사용하여 현실 View에서 제스처를 활성화하거나 .gesture(RUIDragGesture()) 또는 .gesture(RUITapGesture()) 와 직접 제스처를 추가하여 제스처를 활성화 할 수 있습니다. RealityView는 다음과 같이 보일 수 있습니다.
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 gestures를 활성화하면 RealityUI.enableGestures(.all, on: ARView) 호출하여 ARView Arview 객체의 인스턴스입니다.
Ruislider, Ruiswitch, Ruistepper 및 Ruibutton은 모두 .ruiDrag 가 필요한 RUIDragComponent 사용합니다. 구성 요소 RUITapComponent 사용하는 요소를 추가하는 경우 제스처 .tap 사용할 수 있습니다. 제스처를 활성화 할 때 .all 사용하는 것이 좋습니다. 현실이 발전함에 따라 필연적으로 움직일 것입니다.
RealityUI.enableGestures(.all, on: arView)
기본적으로 모든 RealityUI 엔티티는 상당히 큽니다. 이것은 항상 무엇을 기대 해야하는지 알 수 있도록 크기를 표준화하는 데 사용됩니다. 예를 들어, 모든 UI 엄지 손가락은 직경이 1 미터 인 구의 구체이며, 이는 RealityKit의 1 단위, ± 패딩 조정입니다. 모든 Realityui 엔티티는 기본적으로 [0, 0, -1] 에 직면합니다. 사용자 카메라 또는 .zero 가리키려면 .look(at:,from:,relativeTo:) 와 같은 방법 : .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]

자세한 내용
모든 RealityUi Control Entities는 RealityKit에서 표준이 아닌 맞춤 제스처를 사용하지만 일부는 격리되어 누구나 자신의 RealityKit 장면을 조작하기 위해 사용할 수 있습니다.
.move 유형을 사용하여 Ruidragcomponent를 사용하여 3 도의 자유로 우주의 물체를 드래그하십시오.

이 유형은 특정 기준 내에서 움직임을 수정하기위한 선택적 제약 조건이 있습니다.
박스 제약 조건 : 지정된 BoundingBox 내에서 움직임을 제한하여 엔티티가 이동할 수있는 정의 된 영역을 제공합니다.
점 제약 조건 : SIMD3<Float> 의 배열로 표시되는 미리 정의 된 점 세트로 이동을 제한합니다.
클램프 제약 조건 : 사용자 정의 클램핑 기능을 사용하여 움직임을 제어합니다. 이 기능은 SIMD3<Float> 입력하여 수정 된 SIMD3<Float> 를 반환하여 새 위치를 결정합니다.
단 하나의 손가락으로 RealityKit 엔티티를 회전하는 기능을 잠금 해제하십시오.

자세한 내용
액션으로 RealityKit 장면에서 객체를 만들면 사용자가 탭 할 때마다 자동으로 픽업됩니다!
이것에 대한 GIF는 없지만 RuitapComponent를 확인하여 응용 프로그램의 엔티티에이를 추가하는 방법을 확인하십시오.
대신 "내부 터치"탭과 유사한 것을 사용하려면 ruidragcomponentType/클릭을 사용할 수 있습니다.

RealityKit에 기본적으로 추가 된 애니메이션은 많지 않으며 특히 반복 할 수있는 것은 없습니다. 이 애니메이션을 사용하는 방법에 대한 Wiki 페이지를 참조하십시오.
Ruispin을 사용하여 쉽게 축 주위를 돌리십시오.
자세한 내용
주목을 끌기 위해 엔티티를 흔들거나 무언가가 잘못되었다고 신호를 보냅니다.
자세한 내용
RealityKit에 텍스트를 배치 할 수는 있지만 약간의 업그레이드가 필요하다고 생각했습니다.
Ruitext를 사용하면 엔티티 중간에 경계 박스 센터가있는 지정된 텍스트가있는 엔티티를 쉽게 만들 수 있습니다.

자세한 내용
문서 의이 Swift 패키지에 제공된 모든 것에 대한 자세한 내용.
이 저장소에서 iOS의 예제 프로젝트도 참조하십시오.