RealityUI เป็นชุดของยูทิลิตี้และวัตถุ UI สำหรับความเป็นจริง วัตถุ UI ที่รวมอยู่ใน RealityUI มุ่งมั่นที่จะเสนอมาตรฐานส่วนต่อประสานผู้ใช้ที่คุ้นเคย แต่ในการตั้งค่า 3 มิติสำหรับความเป็นจริงที่เพิ่มขึ้นและเสมือนจริงผ่านทางความเป็นจริง
RealityUI ยังมีคอลเลกชันของส่วนประกอบสำหรับการเชื่อมต่อกับเอนทิตีใด ๆ ผ่านการสัมผัสหรือการลาก



เพิ่ม URL ของที่เก็บนี้ลงในโครงการ Xcode 11+ ของคุณภายใต้ Project > Swift Packages
https://github.com/maxxfrazer/RealityUI.git
เพิ่ม import RealityUI ไปที่ด้านบนของไฟล์ Swift ของคุณเพื่อเริ่มต้น
ส่วนประกอบทั้งหมดที่ใช้ใน RealityUI จะต้องลงทะเบียนก่อนที่จะใช้เพียงแค่เรียก RealityUI.registerComponents() ที่ใดก็ได้ในแอพของคุณก่อนที่ชั้นเรียนใด ๆ ที่เริ่มต้นด้วย RUI จะเริ่มต้นเพื่อหลีกเลี่ยงปัญหา สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่มีความหมายโดยการลงทะเบียนส่วนประกอบดูเอกสารประกอบของ Apple ที่นี่
ด้วย VisionOS สามารถเปิดใช้งาน .gesture(RUIDragGesture()) ในความเป็นจริงโดยใช้ View/addRUIDragGesture() หรือ View/addRUITapGesture() หรือโดย .gesture(RUITapGesture()) เพิ่มท่าทางโดยตรงด้วย The 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 ( ) 
การเปิดใช้งานท่าทางความเป็นจริง UI สามารถทำได้โดยเรียก RealityUI.enableGestures(.all, on: ARView) โดย ARView เป็นอินสแตนซ์ของคุณในวัตถุ Arview
Ruislider, Ruiswitch, Ruistepper และ Ruibutton ทุกคนใช้ RUIDragComponent ซึ่งต้องใช้ .ruiDrag ruidrag หากคุณกำลังเพิ่มองค์ประกอบที่ใช้ส่วนประกอบ RUITapComponent คุณสามารถใช้ท่าทาง .tap ฉันอยากจะแนะนำให้ใช้ .all เมื่อเปิดใช้งานท่าทางตามที่สิ่งเหล่านี้จะย้ายไปรอบ ๆ อย่างหลีกเลี่ยงไม่ได้เมื่อความเป็นจริง UIDS พัฒนาขึ้น
RealityUI.enableGestures(.all, on: arView)
โดยค่าเริ่มต้นเอนทิตีความเป็นจริงทั้งหมดมีขนาดค่อนข้างใหญ่ สิ่งนี้ใช้เพื่อสร้างมาตรฐานขนาดเพื่อให้คุณรู้ว่าจะคาดหวังอะไร ตัวอย่างเช่นนิ้วหัวแม่มือ UI ทั้งหมดเป็นทรงกลมที่มีเส้นผ่านศูนย์กลาง 1 เมตรซึ่งเป็น 1 หน่วยในชุดจริง±การปรับการขยายใด ๆ เอนทิตีความเป็นจริงทั้งหมดเผชิญ [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]) การใช้วิธี. ดู () ทำงานที่นี่โดยการตั้งค่า at: ค่าไปยังทิศทางที่ปุ่มควรใช้จาก
Ruiswitch เป็นสวิตช์สลับ 3 มิติที่มีสถานะเปิดและปิด กล่องขอบเขตเริ่มต้นคือ 2x1x1m

รายละเอียดเพิ่มเติม
Ruistepper ใช้เพื่อเพิ่มหรือลดค่า กล่องขอบเขตเริ่มต้นคือ 2x1x0.25m

รายละเอียดเพิ่มเติม
แทร็กแบบโต้ตอบเพื่อแสดงถึงค่าที่ถูกแก้ไข กล่องขอบเขตเริ่มต้นคือ 10x1x1m รวมถึงนิ้วหัวแม่มือ

รายละเอียดเพิ่มเติม
Ruibutton ใช้เพื่อเริ่มต้นการกระทำที่ระบุ การกระทำที่นี่จะทริกเกอร์เฉพาะเมื่อท่าทางเริ่มต้นด้วยปุ่มและจบลงที่ปุ่มเดียวกัน สิ่งนี้คล้ายกับเหตุการณ์ Touchupinside UICONTROL ปุ่มขอบเขตปุ่มเริ่มต้นก่อนที่จะกดปุ่มลงในฐานคือ [1, 1, 0.3]

รายละเอียดเพิ่มเติม
หน่วยงานควบคุมความเป็นจริงทั้งหมดใช้ท่าทางที่กำหนดเองที่ไม่ได้มาตรฐานในชุดความเป็นจริง แต่บางคนถูกแยกออกมาเพื่อให้ทุกคนสามารถใช้พวกเขาเพื่อจัดการกับฉากความเป็นจริงของตัวเอง
ลากวัตถุที่ใดก็ได้ในอวกาศด้วยอิสระ 3 องศากับ RuidragComponent โดยใช้ประเภท. move

ประเภทนี้มีข้อ จำกัด ทางเลือกในการแก้ไขการเคลื่อนไหวภายในเกณฑ์บางอย่าง:
ข้อ จำกัด ของกล่อง : จำกัด การเคลื่อนไหวภายใน BoundingBox ที่ระบุโดยให้พื้นที่ที่กำหนดซึ่งเอนทิตีสามารถเคลื่อนที่ได้
ข้อ จำกัด คะแนน : จำกัด การเคลื่อนไหวของชุดของจุดที่กำหนดไว้ล่วงหน้าซึ่งแสดงเป็นอาร์เรย์ของ SIMD3<Float>
ข้อ จำกัด ของแคลมป์ : ใช้ฟังก์ชั่นการยึดที่กำหนดเองเพื่อควบคุมการเคลื่อนไหว ฟังก์ชั่นนี้ใช้ SIMD3<Float> เป็นอินพุตและส่งคืน SIMD3<Float> ที่แก้ไขแล้วเพื่อกำหนดตำแหน่งใหม่
ปลดล็อกความสามารถในการหมุนเอนทิตีของ REALIDENTKIT ด้วยนิ้วเดียว

รายละเอียดเพิ่มเติม
สร้างวัตถุในฉากเรียลลิตี้ของคุณด้วยการกระทำและมันจะถูกหยิบขึ้นมาโดยอัตโนมัติทุกครั้งที่ผู้ใช้แตะมัน!
ไม่มี GIF สำหรับอันนี้ แต่ตรวจสอบ RuitapComponent เพื่อดูวิธีเพิ่มสิ่งนี้ลงในเอนทิตีในแอปพลิเคชันของคุณ
หากคุณต้องการใช้สิ่งที่คล้ายกับการแตะ "Touch Up Inside" แทนคุณสามารถใช้ RuidragComponentType/คลิก

มีภาพเคลื่อนไหวไม่มากที่เพิ่มโดยค่าเริ่มต้นใน RealityKit โดยเฉพาะอย่างยิ่งไม่มีใครที่คุณสามารถตั้งค่าให้ทำซ้ำได้ ดูหน้า Wiki เกี่ยวกับวิธีการใช้ภาพเคลื่อนไหวเหล่านี้
หมุนเอนทิตีรอบแกนได้อย่างง่ายดายโดยใช้ ruispin
รายละเอียดเพิ่มเติม
เขย่าเอนทิตีเพื่อดึงดูดความสนใจหรือส่งสัญญาณบางอย่างไม่ถูกต้อง
รายละเอียดเพิ่มเติม
เป็นไปได้แล้วที่จะวางข้อความใน RealityKit แต่ฉันรู้สึกว่ามันต้องการการอัพเกรดเล็กน้อย
ด้วย Ruitext คุณสามารถสร้างเอนทิตีได้อย่างง่ายดายด้วยข้อความที่ระบุไว้ด้วยจุดศูนย์กลางกล่องที่อยู่ตรงกลางของเอนทิตีของคุณ

รายละเอียดเพิ่มเติม
ข้อมูลเพิ่มเติมเกี่ยวกับทุกสิ่งที่มีให้ในแพ็คเกจ Swift นี้ในเอกสารประกอบ
ดูโครงการตัวอย่างสำหรับ iOS ในที่เก็บนี้