لذا فإن سلسلة مقالاتنا حول Windows Mixed Reality تقترب من نهايتها. في ذلك ، قمنا بتطوير تطبيق من الصفر مع الواقع المختلط على الوحدة في العمل المختبري (العمل المختبري). اليوم هو الوتر الأخير الذي سنتحدث فيه عن موضوع مثير للاهتمام للغاية - HoloLens وتكييف المشروع مع هذا الجهاز. انضم الآن!

يتكون الدليل بالكامل من 5 أجزاء. سيتم تجديده كل أسبوع. أدناه يمكنك الذهاب إلى الجزء الذي تحتاجه.
الجزء 1: تصدير تطبيق UWP لـ Windows Mixed Reality from Unity ؛
الجزء 2: إعداد البيئة (VR) ؛
الجزء 3: وحدات التحكم ؛
الجزء 4: الصوت المكاني .
الجزء 5: HoloLens والرسومات .
هولولين
حتى الآن ، يعمل تطبيقنا فقط مع سماعة رأس غامرة. ومع ذلك ، من خلال إجراء بعض التغييرات على التطبيق ، يمكننا تنفيذ الدعم لمجموعة كاملة من أجهزة الواقع المختلط (بما في ذلك HoloLens) فيه.
نظرًا لأننا استخدمنا مجموعة أدوات الحقيقة المختلطة للتحكم في الكاميرا وتنفيذ التفاعل وإضافة الأزرار ، فنحن بحاجة إلى إجراء بعض التغييرات فقط على المشروع.
إخفاء غرفة افتراضية
نحتاج إلى كتابة برنامج نصي يحدد على أي جهاز يعمل تطبيقنا - على سماعة رأس غامرة أو على جهاز HoloLens. إذا كان التطبيق يعمل على جهاز HoloLens ، يجب علينا إخفاء الغرفة الافتراضية حتى يتمكن المستخدم من التفاعل مع البيئة الحقيقية. للقيام بذلك ، نقوم أولاً بإضافة عنصر العلامة إلى الإعداد المسبق RoomPrefab ، ثم سنصل إلى هذه العلامة في البرنامج النصي الخاص بنا.
1. حدد الإعداد المسبق RoomPrefab في لوحة Hierarchy.
2. في القائمة المنسدلة Tag في لوحة Inspector ، حدد Add Tag ....

3. انقر فوق علامة + لإنشاء علامة جديدة ، وأعط هذه العلامة اسم HMDUOnly.

4. الآن انقر مرة أخرى على الإعداد المسبق RoomPrefab في لوحة Hierarchy وحدد علامة HMDUOnly من القائمة المنسدلة Tag في لوحة Inspector.
يمكنك تحديد كائنات اللعبة في البرنامج النصي
بطرق مختلفة . يمكننا إضافة علامة إلى أي كائن نحتاج إلى إخفائه (إذا كان لدينا عدة كائنات) ، ثم إخفاء كل منها بالتسلسل. إن استدعاء طريقة FindGameObjectsWithTag ليست الطريقة المثلى ، ولكنها مناسبة تمامًا لنا.
5. من قائمة Unity العليا ، حدد GameObject -> Create Empty.
6. في لوحة Hierarchy ، قم بتغيير اسم GameObject الفارغ المضاف إلى GameManager.
7. في لوحة المفتش ، انقر فوق Add Component -> New Script وأعط هذا البرنامج النصي اسم GameManager ، باختيار C حاد كلغة برمجة. انقر فوق إنشاء وإضافة لإنشاء البرنامج النصي.
8. لفتح البرنامج النصي GameManager ، انقر نقرًا مزدوجًا فوقه في لوحة المفتش أو لوحة Assets.
9. استبدل رمز البرنامج النصي GameManager بالرمز أدناه. يجب إجراء هذا الاختبار مرة واحدة فقط عند تشغيل التطبيق. سنقوم بتنفيذها داخل دالة Start () ، وحذف وظيفة Update ().
using System.Collections; using System.Collections.Generic; using UnityEngine;
أخيرًا ، من أجل التأكد من أن التطبيق يعمل بشكل صحيح على جهاز HoloLens ، نحتاج إلى جعل خلفية الكاميرا سوداء.
10. في لوحة Hierarchy ، حدد كائن MixedRealityCameraParent-> MixedRealityCamera. مرر لأسفل لوحة المفتش وحدد الأسود كقيمة لـ مدير كاميرا الواقع المختلط -> إعدادات العرض الشفافة -> معلمة لون الخلفية (مدير كاميرا الواقع المختلط -> إعدادات العرض الشفافة -> لون الخلفية).

إضافة الخرائط المكانية
كل شيء جاهز تقريبًا! الآن نحن بحاجة إلى تمكين
رسم الخرائط المكانية . توفر تقنية التصوير الفضائي عرضًا تفصيليًا للأسطح المادية في بيئة HoloLens ، مما يسمح للمطورين بإنشاء تطبيقات ذات واقع مختلط مثيرة للإعجاب مع احتمالاتهم. في حالتنا ، سيسمح التخطيط المكاني للمستخدم بوضع السماعات بطريقة طبيعية ، بحيث لا يتم إخفاؤها بواسطة الأسطح المادية.
أولاً ، دعنا نتأكد من أن عناصر تحكم كائن Bounding Box (المربع المحيط) المسؤول عن النقل والتدوير غير مخفية.
1. حدد موقع AppBarCustom في المجلد Assets -> Prefabs في لوحة Project.
2. قم بتعيين القيمة 0 للخاصية Hover Offset Y Scale (Hover Offset Scale).

الآن دعنا نضيف مكونات الخرائط المكانية إلى المشهد.
3. حدد موقع الإعداد المسبق SpatialMapping في الأصول -> HoloTookit -> SpatialMapping -> مجلد Prefabs (الموارد -> HoloTookit -> Spatial Mapping -> Prefabs).
4. اسحبه إلى لوحة التسلسل الهرمي لمشهدنا.

لفتات HoloLens
حتى الآن ، تم تنفيذ جميع أنواع التفاعل في تطبيقنا باستخدام وحدات التحكم في الحركة. إذا كان التطبيق سيتم تشغيله على جهاز HoloLens (أو محاكيه) ، فنحن بحاجة إلى استخدام طريقة أخرى لتحريك مكبر الصوت والتبديل إليه في رمز البرنامج. يمكن أيضًا إعادة استخدام طريقة BoundingBox لـ HoloLens ، لكننا نريد تحسين التفاعل من خلال إجراء بعض التغييرات.
1. حدد الإعداد المسبق للسماعة في لوحة المشروع.
2. انقر فوق إضافة مكون -> انقر للمكان. هذا هو برنامج نصي لـ HoloLens من مجموعة أدوات MR التي تتيح للمستخدم لمس الأشياء أو الصور المجسمة ونقلها بسهولة في الفضاء.
3. قم بتعطيله حتى لا يبدأ بشكل افتراضي. لتعطيل نص برمجي ، ما عليك سوى إلغاء تحديد المربع المجاور لاسمه في لوحة المفتش. سيضيف هذا المكون أيضًا نص Interpolator إلى الإعداد المسبق للمتحدث.

4. أضف البرنامج النصي إلى مكبر الصوت الجاهز باختيار Add Component -> New Script ، وقم بتسمية البرنامج النصي SpeakerMovement.
5. قم بتحرير البرنامج النصي - انقر فوقه نقرًا مزدوجًا واستبدل رمز البرنامج النصي بالرمز أدناه.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR.WSA;
من خلال تحديد مساحة الاسم للسيناريوهات المستخدمة ، سنستخدم نفس الاختبار الذي تم استخدامه في البرنامج النصي GameManager لإخفاء الغرفة. هذه المرة ، عندما يتم الكشف عن جهاز HoloLens ، سيقوم الاختبار بإيقاف تشغيل أحد البرامج النصية وتشغيل آخر. نظرًا لأننا قمنا بتغيير الإعداد المسبق للمتكلم ، فسيؤثر هذا التغيير على جميع المتحدثين في المشهد. إذا قمت بتغيير أحد مثيلات مكبر الصوت المسبق ، فانقر فوق تطبيق في الزاوية العلوية اليمنى من لوحة المفتش لتحديث هذا الاختبار.
انتهى! يمكنك الآن إنشاء التطبيق وتشغيله على سماعة رأس غامرة أو جهاز HoloLens ، ثم وضع مكبرات الصوت في أي مكان في الغرفة وتدويرها والتحكم فيها.
الرسومات (اختياري)
دعونا نرى كيف يمكننا تحسين الجانب المرئي لتطبيقنا ، لأنه حتى التحسين الصغير يمكن أن يغير إدراكه بشكل كبير. إذا كنت ترغب في معرفة كيفية جعل التطبيق أكثر جاذبية دون صعوبة كبيرة ، يمكنك استخدام التعليمات أدناه.
إضافة صندوق سكايب مخصص
1. في القائمة العلوية ، حدد Window -> Lighting -> Settings (Window -> Lighting -> Settings).
2. اسحب skyboxorning.mat skybox من مجلد Assets -> Textures إلى خاصية Skybox Material.
المعالجة اللاحقة
ملاحظة يمكن تنفيذ الإجراءات التالية لأي كاميرا في المشهد ، ولكن لا يمكن عرضها في المحرر.
1. حدد عنصر MixedRealityCameraParent -> عنصر MixedRealityCamera في لوحة التسلسل الهرمي للمشهد.
2. انقر على إضافة مكون -> سلوك المعالجة اللاحقة.
3. حدد موقع عنصر CustomProfile.asset في الأصول -> مجلد PostProcessing واسحبه إلى خاصية ملف تعريف البرنامج النصي لسلوك معالجة المعالجة.
جرب الملف الشخصي لما بعد المعالجة بقدر ما تحتاج ، لكن تذكر أن
المعالجة اللاحقة تستهلك الموارد .
مبروك! لقد أكملت هذه الممارسة.
الأصلالمؤلف: إريك أهلستروم ، cbarkerms ، ماديسون هايت