استكشاف الأخطاء وإصلاحها
تسرد هذه الصفحة المشكلات الشائعة التي تتداخل مع Azure Remote Rendering وطرق حلها.
لا يمكن للعميل الاتصال بالخادم
تأكد من أن جدران الحماية الخاصة بك (على الجهاز، داخل أجهزة التوجيه، وما إلى ذلك) لا تحظر المنافذ المذكورة في متطلبات النظام.
فشل تحميل النموذج
عند تحميل نموذج (على سبيل المثال، عبر نموذج Unity) يفشل على الرغم من أن تكوين الكائن الثنائي كبير الحجم صحيح، فمن المحتمل أن تخزين الكائن الثنائي كبير الحجم غير مرتبط بشكل صحيح. يتم شرح الارتباط المناسب في ربط فصل حساب التخزين. بعد الربط الصحيح، قد يستغرق الأمر ما يصل إلى 30 دقيقة حتى تصبح التغييرات سارية المفعول.
لا يمكن ربط حساب التخزين بحساب ARR
في بعض الأحيان أثناء ربط حساب تخزين، لا يتم سرد حساب Remote Rendering. لإصلاح هذه المشكلة، انتقل إلى حساب ARR في مدخل Microsoft Azure وحدد الهوية ضمن مجموعة الإعدادات على اليسار. تأكد من تعيين الحالة إلى تشغيل.
يتعذر تحميل النموذج من خلال رمز SAS المميز
إذا فشل تطبيق العميل في تحميل نموذج من التخزين من خلال رمز SAS مميز صالح، فقد يكون سببه مستوى الوصول إلى الشبكة العامة المكون على تخزين blob. لا يعمل تحميل نموذج ARR من رمز SAS المميز إلا إذا تم تكوينه باستخدام الخيار "ممكن من جميع الشبكات":
إذا كان التقييد بنقاط النهاية الخاصة مطلبا، فيجب ربط حساب التخزين ويجب تحميل النموذج من خلال مسار التعليمات البرمجية غير SAS كما هو موضح هنا.
خطأ 'Disconnected: VideoFormatNotAvailable
'
تحقق من أن وحدة معالجة الرسومات تدعم فك ترميز فيديو الأجهزة. راجع كمبيوتر التطوير.
إذا كنت تعمل على كمبيوتر محمول مع وحدتي معالجة الرسومات، فمن الممكن أن وحدة معالجة الرسومات التي تعمل عليها بشكل افتراضي، لا توفر وظيفة فك ترميز فيديو الأجهزة. إذا كان الأمر كذلك، فحاول إجبار تطبيقك على استخدام وحدة معالجة الرسومات الأخرى. غالبا ما يكون تغيير وحدة معالجة الرسومات المستخدمة ممكنا في إعدادات برنامج تشغيل GPU.
فشل استرداد حالة الجلسة/التحويل
يؤدي إرسال أوامر REST API بشكل متكرر جدا إلى تقييد الخادم وإرجاع الفشل في النهاية. رمز حالة HTTP في حالة التقييد هو 429 ("طلبات كثيرة جدا"). وكقاعدة عامة، يجب أن يكون هناك تأخير من 5-10 ثوانٍ بين المكالمات اللاحقة.
لاحظ أن هذا الحد لا يؤثر فقط على استدعاءات REST API عند استدعائها مباشرة ولكن أيضا نظرائهم C#/C++، مثل Session.GetPropertiesAsync
أو Session.RenewAsync
أو Frontend.GetAssetConversionStatusAsync
. تقوم بعض الدالات أيضا بإعادة المعلومات عند حفظها لإعادة المحاولة. على سبيل المثال، RenderingSessionPropertiesResult.MinimumRetryDelay
يحدد عدد الثوان التي يجب انتظارها قبل محاولة إجراء فحص آخر. عند توفرها، فإن استخدام مثل هذه القيمة التي تم إرجاعها هو الأفضل، لأنه يسمح لك بإجراء عمليات التحقق قدر الإمكان، دون تقييدها.
إذا واجهت تقييدا من جانب الخادم، فقم بتغيير التعليمات البرمجية لإجراء المكالمات بشكل أقل تكرارا. سيقوم الخادم بإعادة تعيين حالة التقييد كل دقيقة، لذلك من الآمن إعادة تشغيل التعليمات البرمجية بعد دقيقة.
برنامج ترميز H265 غير متوفر
هناك سببان لرفض الخادم الاتصال بخطأ codec not available
.
لم يتم تثبيت برنامج ترميز H265:
تأكد أولا من تثبيت ملحقات فيديو HEVC كما هو مذكور في قسم البرامج لمتطلبات النظام.
إذا كنت لا تزال تواجه مشكلات، فتأكد من أن بطاقة الرسومات تدعم H265، وأن لديك أحدث برنامج تشغيل للرسومات مثبتا. راجع قسم Development PC من متطلبات النظام للحصول على معلومات خاصة بالمورد.
تم تثبيت برنامج الترميز، ولكن لا يمكن استخدامه:
سبب هذه المشكلة هو إعداد أمان غير صحيح على DLLs. لا تظهر هذه المشكلة عند محاولة مشاهدة مقاطع الفيديو المرمزة باستخدام H265. إعادة تثبيت برنامج الترميز لا يحل المشكلة أيضا. بدلا من ذلك، قم بتنفيذ الخطوات التالية:
فتح PowerShell مع حقوق المسؤول وتشغيل
Get-AppxPackage -Name Microsoft.HEVCVideoExtension*
(لاحظ أن '*' هو لأنه بالنسبة لبعض إصدارات تثبيت الحزمة، يكون الاسم
HEVCVideoExtensions
على عكسHEVCVideoExtension
). يجب أن يقوم هذا الأمر إخراجInstallLocation
برنامج الترميز، شيء مثل:InstallLocation : C:\Program Files\WindowsApps\Microsoft.HEVCVideoExtension_1.0.23254.0_x64__5wasdgertewe
فتح هذا المجلد في مستكشف Windows
يجب أن يكون هناك x86 ومجلد فرعي x64 . انقر بزر الماوس الأيمن فوق أحد المجلدات واختر خصائص
- حدد علامة التبويب الأمان وحدد الزر إعدادات متقدمة
- حدد تغيير للمالك
- كتابة المسؤولين في حقل النص
- حدد التحقق من الأسماء وموافق
كرر الخطوات أعلاه للمجلد الآخر
كرر أيضا الخطوات المذكورة أعلاه على كل ملف DLL داخل كلا المجلدين. يجب أن يكون هناك أربعة DLLs تماما.
للتحقق من صحة الإعدادات الآن، قم بالخطوات التالية لكل من DLLs الأربعة:
- تحديد تحرير أمان > الخصائص >
- انتقل إلى قائمة كافة المجموعات / المستخدمين وتأكد من أن كل واحد يحتوي على مجموعة القراءة والتنفيذ الصحيحة (يجب وضع علامة اختيار في عمود السماح )
جودة فيديو منخفضة
يمكن اختراق جودة الفيديو إما عن طريق جودة الشبكة أو برنامج ترميز الفيديو H265 المفقود.
- راجع الخطوات لتحديد مشاكل الشبكة.
- راجع متطلبات النظام لتثبيت أحدث برنامج تشغيل للرسومات.
الفيديو المسجل مع MRC لا يعكس جودة التجربة المباشرة
يمكن تسجيل فيديو على HoloLens من خلال Mixed Reality Capture (MRC). ومع ذلك، فإن جودة الفيديو الناتجة أسوأ من التجربة المباشرة لسببين:
- يبلغ معدل إطار الفيديو 30 هرتز مقابل 60 هرتز.
- لا تمر صور الفيديو عبر خطوة معالجة إعادة الحماية في المرحلة المتأخرة، لذلك يبدو أن الفيديو أكثر تقطيعا.
كلاهما قيود متأصلة لتقنية التسجيل.
شاشة سوداء بعد تحميل النموذج بنجاح
إذا كنت متصلا بوقت تشغيل العرض وقمت بتحميل نموذج بنجاح، ولكن فقط ترى شاشة سوداء بعد ذلك، فقد يكون لهذا بعض الأسباب المميزة.
نوصي باختبار الأشياء التالية قبل إجراء تحليل أكثر تعمقا:
- هل برنامج ترميز H265 مثبت؟ على الرغم من أنه يجب أن يكون هناك احتياطي إلى برنامج ترميز H264، فقد رأينا حالات لم يعمل فيها هذا الاحتياطي بشكل صحيح. راجع متطلبات النظام لتثبيت أحدث برنامج تشغيل للرسومات.
- عند استخدام مشروع Unity، أغلق Unity، واحذف المكتبة المؤقتة ومجلدات obj في دليل المشروع وقم بتحميل/إنشاء المشروع مرة أخرى. في بعض الحالات تسببت البيانات المخزنة مؤقتا في عدم عمل العينة بشكل صحيح دون سبب واضح.
إذا لم تساعد هاتان الخطوتان، فمن المطلوب معرفة ما إذا كان العميل يتلقى إطارات الفيديو أم لا. يمكن الاستعلام عن ذلك برمجيا كما هو موضح في فصل استعلامات الأداء من جانب الخادم. يحتوي على FrameStatistics struct
عضو يشير إلى عدد إطارات الفيديو التي تم تلقيها. إذا كان هذا الرقم أكبر من 0 ويزداد بمرور الوقت، يتلقى العميل إطارات فيديو فعلية من الخادم. لذا، يجب أن تكون مشكلة من جانب العميل.
لا يتم تطبيق قيمة التحجيم في إعدادات التحويل على النموذج
إذا ظهر نموذج في العرض أو التشغيل السريع مع تغيير الحجم دون تغيير على الرغم من تطبيق التحجيم كجزء من معلمات الهندسة لإعدادات التحويل، فمن المحتمل أن يكون ذلك بسبب ميزة التحجيم التلقائي المضمنة في العينة. أي أن العينة تحجيم النموذج لتتناسب بشكل أفضل مع طريقة العرض frustum، بغض النظر عن تحجيم الإدخال الخاص به.
في حالة العرض، يمكن تعطيل التحجيم التلقائي عن طريق تحديد MaxSize
صفر في قسم النموذج Transform
داخل ملف models.xml. يتطلب هذا النهج المستند إلى البيانات تحميل النموذج من خلال XML في المقام الأول، لأنه في جميع الحالات MaxSize
الأخرى يتم تعيين الإعدادات الافتراضية إلى 1 متر. هناك أيضا MinSize
خاصية التي افتراضيا إلى 0.5 متر، مما يؤدي إلى زيادة جميع النماذج الأصغر حجما.
لمزيد من المعلومات حول طرق تحميل النماذج في العرض، راجع الفصل إضافة أصول النموذج ثلاثي الأبعاد إلى عرض ARR في وثائق العرض.
المشكلات الشائعة من جانب العميل
يتجاوز النموذج حدود الجهاز الظاهري المحدد، وتحديدا الحد الأقصى لعدد البدائيات:
راجع حدود حجم الخادم المحددة.
النموذج ليس داخل الكاميرا frustum:
في كثير من الحالات، يتم عرض النموذج بشكل صحيح ولكن يقع خارج frustum الكاميرا. السبب الشائع هو أن النموذج قد تم تصديره بمحور بعيد خارج المركز بحيث يتم قصه بواسطة مستوى القطع البعيد للكاميرا. يساعد على الاستعلام عن مربع إحاطة النموذج برمجيا وتصور المربع باستخدام Unity كمربع سطر أو طباعة قيمه إلى سجل التصحيح.
علاوة على ذلك، تنشئ عملية التحويل ملف json الإخراج جنبا إلى جنب مع النموذج المحول. لتصحيح مشكلات تحديد موضع النموذج، يجدر النظر في boundingBox
الإدخال في قسم outputStatistics:
{
...
"outputStatistics": {
...
"boundingBox": {
"min": [
-43.52,
-61.775,
-79.6416
],
"max": [
43.52,
61.775,
79.6416
]
}
}
}
يتم وصف المربع المحيط على min
أنه وموضع max
في مساحة ثلاثية الأبعاد، بالمتر. لذا فإن إحداثيات 1000.0 تعني أنها على بعد كيلومتر واحد من الأصل.
يمكن أن تكون هناك مشكلتان مع مربع الإحاطة هذا الذي يؤدي إلى هندسة غير مرئية:
- يمكن أن يكون المربع بعيدا عن الوسط، لذلك يتم قص الكائن تماما بسبب اقتصاص مستوى بعيد.
boundingBox
ستبدو القيم في هذه الحالة كما يلي:min = [-2000, -5,-5], max = [-1990, 5,5]
، باستخدام إزاحة كبيرة على المحور س كمثال هنا. لحل هذا النوع من المشكلات، قم بتمكينrecenterToOrigin
الخيار في تكوين تحويل النموذج. - يمكن توسيط الصندوق ولكن تكون أوامر بحجم كبير جدا. وهذا يعني أنه على الرغم من أن الكاميرا تبدأ في وسط النموذج، يتم قص هندسيتها في جميع الاتجاهات. ستبدو القيم النموذجية
boundingBox
في هذه الحالة كما يلي:min = [-1000,-1000,-1000], max = [1000,1000,1000]
. عادة ما يكون سبب هذا النوع من المشكلة هو عدم تطابق مقياس الوحدة. للتعويض، حدد قيمة تحجيم أثناء التحويل أو ضع علامة على النموذج المصدر بالوحدات الصحيحة. يمكن أيضا تطبيق التحجيم على العقدة الجذر عند تحميل النموذج في وقت التشغيل.
لا يتضمن مسار عرض Unity خطافات العرض:
يقوم Azure Remote Rendering بربط البنية الأساسية لبرنامج ربط العمليات التجارية لعرض Unity للقيام بتكوين الإطار مع الفيديو، والقيام بإعادة المشروع. للتحقق من وجود هذه الخطافات، افتح القائمة Window > Analysis > Frame debugger. قم بتمكينه وتأكد من وجود إدخالين للبنية HolographicRemotingCallbackPass
الأساسية لبرنامج ربط العمليات التجارية:
للإصلاح، تأكد من استخدام أصل HybridRenderingPipeline المتوفر:
.. كما هو موضح بمزيد من التفصيل في Unity Render Pipelines.
يتم عرض نمط لوحة الدقق بعد تحميل النموذج
إذا كانت الصورة المعروضة تبدو كما يلي:
ثم يصل العارض إلى حدود المضلع لحجم التكوين القياسي. للتخفيف، إما التبديل إلى حجم التكوين المتميز أو تقليل عدد المضلعات المرئية.
الصورة المعروضة في Unity مقلوبة
تأكد من اتباع برنامج Unity التعليمي: عرض النماذج البعيدة بالضبط. تشير الصورة مقلوبة إلى أن Unity مطلوب لإنشاء هدف عرض خارج الشاشة. هذا السلوك غير مدعوم حاليا ويخلق تأثيرا كبيرا على الأداء على HoloLens 2.
قد تكون أسباب هذه المشكلة هي MSAA أو HDR أو تمكين المعالجة اللاحقة. تأكد من تحديد ملف التعريف منخفض الجودة وتعيينه كافتراضي في Unity. للقيام بذلك، انتقل إلى تحرير > إعدادات المشروع... > الجودة.
عند استخدام المكون الإضافي OpenXR في Unity 2020، هناك إصدارات من URP (Universal Render Pipeline) التي تنشئ هدف العرض الإضافي خارج الشاشة بغض النظر عن تمكين المعالجة اللاحقة. ومن ثم من المهم ترقية إصدار URP يدويا إلى 10.5.1 على الأقل (أو أعلى). يتم وصف عملية الترقية هذه في متطلبات النظام.
لا يتم تحويل التعليمات البرمجية ل Unity باستخدام Remote Rendering API برمجيا
استخدام تتبع الأخطاء عند التحويل البرمجي لمحرر Unity
قم بتبديل نوع بناء حل Unity إلى Debug. عند اختبار ARR في محرر Unity، يتوفر التعريف UNITY_EDITOR
فقط في بنيات "تتبع الأخطاء". هذا الإعداد غير مرتبط بنوع البناء المستخدم للتطبيقات المنشورة، حيث يجب أن تفضل إصدارات "الإصدار".
تحويل حالات الفشل برمجيا عند تجميع نماذج Unity ل HoloLens 2
لقد شهدنا حالات فشل زائفة عند محاولة تحويل عينات Unity برمجيا (التشغيل السريع، ShowCaseApp، ... ) ل HoloLens 2. يشكو Visual Studio من عدم القدرة على نسخ بعض الملفات على الرغم من وجودها هناك. إذا واجهت هذه المشكلة:
- قم بإزالة كافة ملفات Unity المؤقتة من المشروع وحاول مرة أخرى. أي، أغلق Unity، واحذف المكتبة المؤقتة ومجلدات obj في دليل المشروع وقم بتحميل/إنشاء المشروع مرة أخرى.
- تأكد من وجود المشاريع في دليل على القرص بمسار قصير إلى حد معقول، حيث يبدو أن خطوة النسخ تواجه أحيانا مشاكل في أسماء الملفات الطويلة.
- إذا لم يساعد ذلك، فقد يتداخل MS Sense مع خطوة النسخ. لإعداد استثناء، قم بتشغيل أمر التسجيل هذا من سطر الأوامر (يتطلب حقوق المسؤول):
reg.exe ADD "HKLM\SOFTWARE\Policies\Microsoft\Windows Advanced Threat Protection" /v groupIds /t REG_SZ /d "Unity"
فشل إصدارات Arm64 لمشاريع Unity لأن AudioPluginMsHRTF.dll مفقود
AudioPluginMsHRTF.dll
تمت إضافة ل Arm64 إلى حزمة Windows Mixed Reality (com.unity.xr.windowsmr.metro) في الإصدار 3.0.1. تأكد من أن لديك الإصدار 3.0.1 أو أحدث مثبتا عبر مدير الحِزَم Unity. من شريط قائمة Unity، انتقل إلى Window > مدير الحِزَم وابحث عن حزمة Windows Mixed Reality.
لا يعمل المكون الإضافي Unity Cinemachine
في وضع الوضع البعيد
في وضع الوضع البعيد، تنشئ التعليمة البرمجية لربط ARR Unity ضمنيا كاميرا وكيلة تقوم بإجراء العرض الفعلي. في هذه الحالة، يتم تعيين قناع القذف للكاميرا الرئيسية على 0 ("لا شيء") لإيقاف تشغيل العرض بشكل فعال لذلك. ومع ذلك، قد تعتمد بعض المكونات الإضافية التابعة لجهة خارجية (مثل Cinemachine
) التي تحرك الكاميرا على بعض بتات الطبقة التي يتم تعيينها على الأقل.
لهذا الغرض، يسمح لك رمز الربط بتغيير الصورة النقطية للطبقة للكاميرا الرئيسية برمجيا. على وجه التحديد، الخطوات التالية مطلوبة:
- إنشاء طبقة جديدة في Unity لا تستخدم لعرض أي هندسة مشهد محلي. في هذا المثال، افترض أن الطبقة تسمى "Cam".
- مرر قناع البت هذا إلى ARR حتى يقوم ARR بتعيينه على الكاميرا الرئيسية:
RemoteManagerUnity.CameraCullingMask = LayerMask.GetMask("Cam");
- تكوين الخصائص
Cinemachine
لاستخدام هذه الطبقة الجديدة:
لا يتأثر وضع الوضع المحلي بهذه المشكلة، حيث في هذه الحالة لا يعيد ربط ARR توجيه العرض إلى كاميرا وكيل داخلية.
لا يقوم التطبيق الأصلي المستند إلى C++ بالتحويل البرمجي
خطأ "لم يتم العثور على المكتبة" لتطبيق UWP أو DLL
داخل حزمة C++ NuGet، يوجد microsoft.azure.remoterendering.Cpp.targets
ملف يحدد النكهة الثنائية التي يجب استخدامها. لتعريف UWP
، تتحقق الشروط الموجودة في الملف من .ApplicationType == 'Windows Store'
لذلك يجب التأكد من تعيين هذا النوع في المشروع. يجب أن يكون هذا هو الحال عند إنشاء تطبيق UWP أو DLL من خلال معالج مشروع Visual Studio.
الصور المجسمة غير المستقرة
في حالة ما إذا كانت الكائنات المعروضة تتحرك جنبا إلى جنب مع حركات الرأس، فقد تواجه مشكلات في إعادة مشروع المرحلة المتأخرة (LSR). راجع القسم المتعلق بإعادة مشروع المرحلة المتأخرة للحصول على إرشادات حول كيفية التعامل مع مثل هذا الموقف.
هناك سبب آخر لعدم استقرار الصور المجسمة (الخفقان أو التحويب أو التشويه أو الصور المجسمة للقفز) وهو ضعف الاتصال بالشبكة، ولا سيما عدم كفاية النطاق الترددي للشبكة أو زمن انتقال عال جدا. مؤشر جيد لجودة اتصال الشبكة هو قيمة ServiceStatistics.VideoFramesReused
إحصائيات الأداء . تشير الإطارات المعاد استخدامها إلى المواقف التي يلزم فيها إعادة استخدام إطار فيديو قديم على جانب العميل بسبب عدم توفر إطار فيديو جديد - على سبيل المثال بسبب فقدان الحزمة أو بسبب التباينات في زمن انتقال الشبكة. إذا كان ServiceStatistics.VideoFramesReused
أكبر من الصفر بشكل متكرر، فهذا يشير إلى وجود مشكلة في الشبكة.
قيمة أخرى يجب النظر إليها هي ServiceStatistics.LatencyPoseToReceiveAvg
. يجب أن يكون باستمرار أقل من 100 مللي ثانية. قد تشير رؤية القيم الأعلى إلى أنك متصل بمركز بيانات بعيد جدا.
للحصول على قائمة بتخفيف المخاطر المحتملة، راجع إرشادات اتصال الشبكة.
يعرض المحتوى المحلي (UIs، ...) على HoloLens 2 مع أدوات تشويه أكثر بكثير من دون ARR
يرجع هذا المنتج إلى إعداد افتراضي يتاجر بجودة إسقاط المحتوى المحلي لأداء وقت التشغيل. راجع الفصل حول أوضاع وضع إعادة الحماية لمعرفة كيفية تغيير وضع الإسقاط بحيث يتم عرض المحتوى المحلي في نفس مستوى جودة إعادة الحماية كما هو الحال بدون ARR.
Z-القتال
بينما يوفر ARR وظائف التخفيف من حدة القتال z، لا يزال من الممكن أن يظهر القتال z في المشهد. يهدف هذا الدليل إلى استكشاف أخطاء هذه المشاكل المتبقية وإصلاحها.
الخطوات الموصى بها
استخدم سير العمل التالي للتخفيف من حدة القتال من z:
اختبر المشهد بالإعدادات الافتراضية ل ARR (z-fighting mitigation on)
تعطيل التخفيف من حدة القتال z عبر واجهة برمجة التطبيقات الخاصة به
تغيير مستوى الكاميرا القريبة والقصى إلى نطاق أقرب
استكشاف أخطاء المشهد وإصلاحها عبر القسم التالي
التحقيق في القتال المتبقي من z
وإذا استنفدت الخطوات المذكورة أعلاه ولم يكن القتال المتبقي من الألف إلى الياء مقبولا، فإنه يتعين التحقيق في السبب الكامن وراء القتال بين الألف والياء. كما هو مذكور في صفحة ميزة التخفيف من حدة القتال z، هناك سببان رئيسيان للقتال من الألف إلى الياء: فقدان دقة العمق في أقصى نطاق العمق، والأسطح التي تتقاطع أثناء كونها ثنائية العمق. فقدان دقة العمق هو احتمال رياضي ولا يمكن تخفيفه إلا باتباع الخطوة 3 أعلاه. تشير الأسطح المشتركة إلى خلل في أصل المصدر ويتم إصلاحها بشكل أفضل في بيانات المصدر.
يحتوي ARR على ميزة لتحديد ما إذا كانت الأسطح يمكن أن تحارب z: تمييز Checkerboard. يمكنك أيضا تحديد ما يسبب القتال z بصريا. تعرض الحركة الأولى التالية مثالا على فقدان دقة العمق في المسافة، وتعرض الحركة الثانية مثالا على الأسطح الكبلوارية تقريبا:
قارن هذه الأمثلة ب z-fighting لتحديد السبب الجذري أو اتبع سير العمل خطوة بخطوة هذا بشكل اختياري:
- ضع الكاميرا فوق أسطح z-fighting للنظر مباشرة إلى السطح.
- حرك الكاميرا ببطء للخلف، بعيدا عن الأسطح.
- إذا كان القتال z مرئيا طوال الوقت، تكون الأسطح بشكل مثالي.
- إذا كان القتال z مرئيا معظم الوقت ، فإن الأسطح هي تقريبا coplanar.
- إذا كان القتال z مرئيا فقط من بعيد، فإن السبب هو عدم دقة العمق.
يمكن أن يكون للسطوح الطائرة المشتركة العديد من الأسباب المختلفة:
تم تكرار كائن بواسطة التطبيق المصدر بسبب خطأ أو نهج سير عمل مختلفة.
تحقق من هذه المشاكل مع دعم التطبيق والتطبيق المعني.
يتم تكرار الأسطح وعكسها لتظهر على الوجهين في أجهزة العرض التي تستخدم قص الوجه الأمامي أو الوجه الخلفي.
الاستيراد عبر تحويل النموذج يحدد الجانب الأساسي للنموذج. يفترض أن تكون الوجهين هو الافتراضي. يتم عرض السطح كحائط رفيع مع إضاءة صحيحة ماديا من كلا الجانبين. يمكن تضمين أحادي الجانب من خلال العلامات الموجودة في أصل المصدر، أو فرضها بشكل صريح أثناء تحويل النموذج. بالإضافة إلى ذلك، ولكن اختياريا، يمكن تعيين الوضع الأحادي على "عادي".
تتقاطع الكائنات في أصول المصدر.
الأشياء التي تم تحويلها بطريقة تتداخل بعض أسطحها أيضا يخلق القتال z. يمكن أن يؤدي تحويل أجزاء من شجرة المشهد في المشهد المستورد في ARR أيضا إلى إنشاء هذه المشكلة.
يتم تأليف الأسطح عن قصد للمس، مثل الشارات أو النص على الجدران.
الرسومات الاصطناعية باستخدام عرض استريو متعدد التمرير في تطبيقات C++ الأصلية
في بعض الحالات، يمكن أن تؤدي تطبيقات C++ الأصلية المخصصة التي تستخدم وضع عرض استريو متعدد التمريرات للمحتوى المحلي (العرض إلى العين اليمنى والأيسر في تمريرات منفصلة) بعد استدعاء BlitRemoteFrame إلى حدوث خطأ في برنامج التشغيل. ينتج عن الخطأ أخطاء غير حتمية في النقط، مما يؤدي إلى اختفاء المثلثات الفردية أو أجزاء من المثلثات من المحتوى المحلي بشكل عشوائي. لأسباب تتعلق بالأداء، يوصى على أي حال بعرض المحتوى المحلي باستخدام تقنية عرض استريو أحادية التمرير أكثر حداثة، على سبيل المثال باستخدام SV_RenderTargetArrayIndex.
أخطاء تنزيل ملف التحويل
قد تواجه خدمة التحويل أخطاء في تنزيل الملفات من تخزين كائن ثنائي كبير الحجم بسبب قيود نظام الملفات. يتم سرد حالات فشل محددة أدناه. يمكن العثور على معلومات شاملة حول قيود نظام ملفات Windows في وثائق تسمية الملفات والمسارات ومساحات الأسماء .
مسار الاصطدام واسم الملف
في تخزين الكائن الثنائي كبير الحجم، من الممكن إنشاء ملف ومجلد بنفس اسم الإدخالات التابعة. لا يسمح نظام ملفات Windows بذلك. وفقا لذلك، تصدر الخدمة خطأ تنزيل في هذه الحالة.
طول المسار
هناك حدود طول المسار التي يفرضها Windows والخدمة. يجب ألا تتجاوز مسارات الملفات وأسماء الملفات في تخزين الكائن الثنائي كبير الحجم 178 حرفا. على سبيل المثال، بالنظر إلى من blobPrefix
models/Assets
، وهو 13 حرفا:
models/Assets/<any file or folder path greater than 164 characters will fail the conversion>
تنزل خدمة التحويل جميع الملفات المحددة ضمن blobPrefix
، وليس فقط الملفات المستخدمة في التحويل. قد تكون الملفات/المجلد المسببة للمشكلات أقل وضوحا في هذه الحالات لذلك من المهم التحقق من كل شيء موجود في حساب التخزين ضمن blobPrefix
. راجع أمثلة الإدخالات أدناه لمعرفة ما يتم تنزيله.
{
"settings": {
"inputLocation": {
"storageContainerUri": "https://contosostorage01.blob.core.windows.net/arrInput",
"blobPrefix": "models/Assets",
"relativeInputAssetPath": "myAsset.fbx"
...
}
}
}
models
├───Assets
│ │ myAsset.fbx <- Asset
│ │
│ └───Textures
│ | myTexture.png <- Used in conversion
│ |
| └───MyFiles
| myOtherFile.txt <- File also downloaded under blobPrefix
|
└───OtherFiles
myReallyLongFileName.txt <- Ignores files not under blobPrefix
لا يعرض HoloLens2 "التقاط صورة" (MRC) أي محتوى محلي أو بعيد
تحدث هذه المشكلة عادة إذا تم تحديث مشروع من WMR إلى OpenXR وكان المشروع يصل إلى إعدادات HolographicViewConfiguration Class (Windows.Graphics.Holographic). واجهة برمجة التطبيقات هذه غير مدعومة في OpenXR ويجب عدم الوصول إليها.