Realityui هي مجموعة من المرافق وأشياء واجهة المستخدم لـ RealityKit. تهدف كائنات واجهة المستخدم المدرجة في الواقع إلى تقديم معايير واجهة المستخدم المألوفة ، ولكن في إعداد ثلاثي الأبعاد للواقع المعزز والافتراضي من خلال RealityKit.
يحتوي Realityui أيضًا على مجموعة من المكونات للتفاعل مع أي كيان من خلال تفاعلات اللمس أو السحب.



أضف عنوان URL لهذا المستودع إلى مشروع XCODE 11+ ضمن Project > Swift Packages .
https://github.com/maxxfrazer/RealityUI.git
أضف import RealityUI إلى أعلى ملف Swift الخاص بك للبدء.
يجب تسجيل جميع المكونات المستخدمة في الواقع قبل استخدامها ، RUI عليك سوى استدعاء RealityUI.registerComponents() . لمزيد من المعلومات حول المقصود بتسجيل المكونات ، انظر وثائق Apple هنا.
مع VisionOs ، يمكن تمكين الإيماءات على عرض الواقع باستخدام المعدلات View/addRUIDragGesture() أو View/addRUITapGesture() .gesture(RUITapGesture()) أو عن طريق إضافة الإيماءات مباشرة مع .gesture(RUIDragGesture()) قد يبدو 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.enableGestures(.all, on: ARView) ، مع ARView هو مثيلك لكائن ARVIEW.
يستخدم Ruislider و Ruiswitch و Ruistepper و Roibultton كلها RUIDragComponent ، والذي يتطلب .ruiDrag . إذا كنت تضيف عناصر تستخدم مكون RUITapComponent فيمكنك استخدام Gesture .tap . أوصي فقط باستخدام .all ذلك عند تمكين الإيماءات ، لأن هذه ستتحرك حتما مع تطور الواقع.
RealityUI.enableGestures(.all, on: arView)
بشكل افتراضي ، كل كيانات الواقعية كبيرة جدًا. يستخدم هذا لتوحيد الأحجام بحيث تعرف دائمًا ما يمكن توقعه. على سبيل المثال ، جميع إبهام واجهة المستخدم عبارة عن كرات يبلغ قطرها 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 هو مفتاح تبديل ثلاثي الأبعاد مع حالة تشغيل وخارجها. مربع المحيط الافتراضي هو 2x1x1m

مزيد من التفاصيل
يستخدم Ruistepper لزيادة أو تقليل القيمة. مربع المحيط الافتراضي هو 2x1x0.25m

مزيد من التفاصيل
مسار تفاعلي لتمثيل قيمة محرف. مربع المحيط الافتراضي هو 10x1x1m بما في ذلك الإبهام.

مزيد من التفاصيل
يستخدم Roibultton لبدء إجراء محدد. لن يتم تشغيل الإجراء هنا إلا إذا بدأت الإيماءة على زر ، وينتهي أيضًا على نفس الزر. هذا مشابه لحدث Touchupinside UIControl. المربع المحيط بالزر الافتراضي قبل الضغط على الزر في القاعدة هو [1, 1, 0.3]

مزيد من التفاصيل
تستخدم جميع كيانات التحكم في الواقع إيماءات مخصصة ليست قياسية في الواقع ، ولكن تم عزل بعضها حتى يتمكن أي شخص من استخدامها للتلاعب بمشهد الواقع الخاص بهم.
اسحب الكائنات في أي مكان في الفضاء مع 3 درجات من الحرية مع RuidragComponent ، باستخدام نوع .move.

هذا النوع له قيد اختياري ، لإصلاح الحركة ضمن معايير معينة:
قيود المربع : يقيد الحركة داخل BoundingBox محدد ، مما يوفر منطقة محددة حيث يمكن للكيان التحرك.
قيود النقاط : يحد الحركة إلى مجموعة من النقاط المحددة مسبقًا ، ممثلة كمجموعة من SIMD3<Float> .
قيود المشبك : يستخدم دالة التثبيت المخصصة للتحكم في الحركة. تأخذ هذه الوظيفة SIMD3<Float> كمدخلات وإرجاع SIMD3<Float> لتحديد الموضع الجديد.
افتح القدرة على تدوير كيان stileskit بإصبع واحد فقط.

مزيد من التفاصيل
قم بإنشاء كائن في مشهد RealityKit الخاص بك مع إجراء ، وسيتم التقاطه تلقائيًا كلما قام المستخدم بنقره!
لا GIF لهذا الحجم ، ولكن تحقق من RuitapComponent لمعرفة كيفية إضافة هذا إلى كيان في التطبيق الخاص بك.
إذا كنت ترغب بدلاً من ذلك في استخدام شيء مشابه لنقص "اللمس في الداخل" ، فيمكنك استخدام RuidRagComponentType/Click.

لا توجد العديد من الرسوم المتحركة بشكل افتراضي إلى RealityKit ، لا سيما أنه لا شيء يمكنك ضبطه على التكرار. انظر صفحة الويكي حول كيفية استخدام هذه الرسوم المتحركة.
تدور كيان حول محور باستخدام Ruispin بسهولة.
مزيد من التفاصيل
هز كيانًا لجذب الانتباه ، أو الإشارة إلى أن شيئًا ما غير صحيح.
مزيد من التفاصيل
من الممكن بالفعل وضع النص في RealityKit ، لكنني شعرت أنه يحتاج إلى القليل من الترقية.
باستخدام Ruitext ، يمكنك بسهولة إنشاء كيان مع النص المحدد الموضوعة مع مركز الصندوق المحدد في منتصف الكيان.

مزيد من التفاصيل
مزيد من المعلومات حول كل ما هو متوفر في هذه الحزمة السريعة في الوثائق.
انظر أيضًا Project Project for iOS في هذا المستودع.