Three.js: فحص رأس RGBELoader السحري

تم إنشاؤها على ٥ ديسمبر ٢٠٢٠  ·  3تعليقات  ·  مصدر: mrdoob/three.js

صف الخلل

يتحقق RGBELoader من الرمز المميز السحري في بداية الملف:
https://github.com/mrdoob/three.js/blob/1e161eaeedee694861ec480f04b632443f64dbb4/examples/jsm/loaders/RGBELoader.js#L149 -L154

لدي ملف به الرأس المذكور:
image
لا يتعرف Loader على الرمز المميز السحري.

إليك محتويات line عند طباعتها لوحدة التحكم:
image

الجزء المثير للفضول هنا هو إذا حاولت نسخ ذلك والتحقق من المطابقة مرة أخرى:
image
كل شيء يبدو جيدًا ، ومع ذلك ، إذا جربته على line مباشرة ، فسترى هذا:
image

تكمن المشكلة في وجود 
 في النهاية (حرف إرجاع):
image
image

قليلا اضافية:
image
يبدو أنه تم تفسير كل من 13 و 10 على أنهما NEW_LINE حرفًا بواسطة وظيفة العرض fget

لإعادة إنتاج

  • لا يمكن مشاركة الملف في هذه اللحظة

شفرة


مثال حي

  • لا يمكن مشاركة الملف في هذه اللحظة

سلوك متوقع

لست متأكدًا ، أعتقد أنه يجب التعامل مع هذا كرأس صالح. لم تحدث هذه المشكلة عند استخدام r107 ، لذلك يبدو وكأنه خطأ في الانحدار. ولكن ربما يمكن لشخص أكثر دراية بمواصفات RGBE توضيح ذلك.

لقطات

أنظر فوق

برنامج:

  • الجهاز: [سطح المكتب]
  • نظام التشغيل: [Windows]
  • المتصفح: [كروم]
  • إصدار Three.js: [r ؟؟؟ - نعم ، 123]
Bug Loaders

التعليق الأكثر فائدة

لا يمكنني العثور على أي شيء عبر الإنترنت ينص على ضرورة تقييد البايتات التي تأتي بعد #?RADIANCE . يبدو أن هذا المرجع في المواصفات يشير إلى أنه يكفي أن تكون البايتات الأولى #?RADIANCE وأن السطر الجديد لا يحتاج إلى اتباعه.

تغيير magic_token_re من هذا

magic_token_re = /^#\?(\S+)$/

الى هذا

magic_token_re = /^#\?(\S+)/

يبدو وكأنه حل.

ال 3 كومينتر

لا يمكنني العثور على أي شيء عبر الإنترنت ينص على ضرورة تقييد البايتات التي تأتي بعد #?RADIANCE . يبدو أن هذا المرجع في المواصفات يشير إلى أنه يكفي أن تكون البايتات الأولى #?RADIANCE وأن السطر الجديد لا يحتاج إلى اتباعه.

تغيير magic_token_re من هذا

magic_token_re = /^#\?(\S+)$/

الى هذا

magic_token_re = /^#\?(\S+)/

يبدو وكأنه حل.

Usnul هل تمانع في اختبار هذا الإصلاح؟

نعم ، هذا يعمل.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات