<p>مشكلة تصيير النص الترويكا ثلاثية الأبعاد بدون أخطاء</p>

تم إنشاؤها على ٦ نوفمبر ٢٠١٩  ·  43تعليقات  ·  مصدر: protectwise/troika

اختبرنا هذا باستخدام مكون aframe وبناء الترويكا المباشر والمثال على ذلك

https://troika-examples.netlify.com/#text

Bildschirmfoto von 2019-11-06 21-33-50
Bildschirmfoto von 2019-11-06 21-33-34

ال 43 كومينتر

جوجل كروم | 78.0.3904.87 (إصدار Offizieller) (64 بت)
لينكس
جافا سكريبت | V8 7.8.279.19

البائع = 0x1002 [X.Org] ، DEVICE = 0x67ef [AMD Radeon (TM) RX 460 Graphics (POLARIS11 ، DRM 3.33.0 ، 5.3.7-301.fc31.x86_64 ، LLVM 9.0.0)] نشط

أتذكر إذا وجدت هذا في المرة الأولى يعمل

لذلك أحاول إصدار أقدم! ونعم تعمل مع e600d2cd v0.12.0
Bildschirmfoto von 2019-11-06 22-00-02

طيب آخر إصدار عمل هو
f4fcbb8d v0.12.1

v0.13.0 يكسر التقديم

ييكيس! نشكرك على الإبلاغ عن هذا ، ولتضييق نطاق الإصدار الدقيق حيث تعطل. سأبحث في هذه الالتزامات بحثًا عن أي شيء واضح ولكني قلق من أنني لن أتمكن من التحقق من الإصلاح إذا كان خاصًا بتوزيعة Linux أو برامج تشغيل GPU.

تحاول عمل حدس ... في متصفحك هل ترى السباغيتي الطائرة هنا؟ https://troika-examples.netlify.com/#bezier3d

نعم هذا يبدو جيدا

Bildschirmfoto von 2019-11-07 11-58-41

صنع مقطع فيديو صغيرًا للمشكلة ، يبدو أنه إذا كان العرض يستخدم فقط SDF (حجم صغير) فهو يعمل

على oculus ، إنه يعمل بشكل جيد

ezgif com-video-to-gif

دانغ ، هذا كسر حدسي.

هذا الفيديو رائع. يمكنني التفكير في بعض الأسباب التي قد تؤدي إلى حدوث هذا السلوك ، ولكن هذه الأسباب كان يجب أن تفشل أيضًا في 0.12.1. سوف نستمر في البحث ...

للتأكد من أننا لا نتعامل مع العديد من المشكلات المختلفة عبر الوقت ، هل يمكنك التحقق من فشل جميع الإنشاءات التالية بنفس الطريقة؟

نعم كلها تفشل مع نفس الشيء

حسنًا ، في الوقت الحالي ، أشعر بالحيرة تجاه هذا الأمر. بالانتقال إلى https://github.com/protectwise/troika/compare/v0.12.1...v0.13.0 diff ، لا أرى فرقًا من شأنه أن يتسبب في هذا السلوك. التغيير الوحيد الذي يجب أن يؤثر على عرض النص هو التبديل إلى التجريد createDerivedShader لمعالجة التظليل. لقد قارنت إخراج التظليل من هذين الإصدارين سطرًا بسطر ولا يوجد فرق في المنطق المحقون الذي يمكنني رؤيته ، فقط اختلافات طفيفة في مكان حدوثه (على سبيل المثال داخل دالة glsl بدلاً من الفراغ الرئيسي أو بترتيب مختلف قليلاً .) لا أفهم سبب تسبب ذلك في حدوث هذه المشكلة ، لكنني أفترض أنه من المحتمل وجود خطأ / غرابة في برنامج تشغيل OpenGL المحدد الذي قد يؤدي إلى تشغيله.

لست متأكدًا من أين تذهب من هنا بخلاف تجربة بعض التغييرات بناءً على الأحاسيس واختبارها. إن عدم القدرة على التكاثر بسهولة هو أمر مؤلم.

حسنًا ، أفهم ذلك ، وأعتقد أيضًا أن هذه مشكلة برنامج تشغيل opengl: / إحدى النتائج هي عندما أقوم بتوسيع نطاق رؤية فيديو الخط ->
ezgif com-video-to-gif (1)

كمرجع هنا إصدارات opengl
GL_VENDOR X.Org GL_RENDERER AMD Radeon (TM) RX 460 Graphics (POLARIS11، DRM 3.33.0، 5.3.8-300.fc31.x86_64، LLVM 9.0.0) GL_VERSION 4.5 (Core Profile) Mesa 19.2.2

لول هذا نوع من التأثير الأنيق! 🤣

أي فكرة عما يمكنني اختباره؟

تضمين التغريدة وجدت شيئًا مثيرًا للاهتمام إذا أضفت ضبابًا إلى المشهد فهو يعمل!

Bildschirmfoto von 2019-11-11 11-54-36

مع ضباب aframe مضاف مع sceneEl.setAttribute ("fog"، "type: linear؛ far: 300؛ color: 0xefd1b5")؛

فضولي و فضولي. هل يعمل مربع الاختيار "الضباب" في صفحة أمثلة الترويكا أيضًا؟

حسنًا ، لا ، هذا لا يغير شيئًا

ها نعم إنه يعمل إذا قمت بتعيين MeshBasicMaterial واخترت الضباب!

حسنًا ، شكرًا لأنه ربما يعطيني دليلًا لمزيد من التحقيق.

سأحاول أن أجد بعض الوقت في وقت لاحق اليوم لدفع فرع ببعض المحاولات لإجراء تغييرات منفصلة ، ومعرفة ما إذا كان أي منها يساعد.

حسنًا ، هذه هي المحاولة الأولى - أخبرني إذا لم يكن هناك تغيير أو تغيير ولكن لا يزال عربات التي تجرها الدواب أو تم إصلاحه: https://5dc9dc90ab55b5000a1db32c--troika-examples.netlify.com/#text

تبدو وكأنها لقطة جيدة جدا! :>

Bildschirmfoto von 2019-11-11 23-40-48

يبدو الاستخدام العادي مع MeshStandard و MeshBasic Material ثابتًا بالنسبة لي

فقط مع مادة تظليل مخصصة هي عربات التي تجرها الدواب
Bildschirmfoto von 2019-11-11 23-42-22

هذا عظيم! نحن نصل إلى مكان ما.

هل يمكنك تجربة هذا الآن من فضلك: https://5dc9e7dcea3f6e00084d01a6--troika-examples.netlify.com/#text
أحاول عزل أحد السببين الجذريين المحتملين بهذا السبب.

حسنًا ، هذا يعمل بشكل صحيح فقط مع تمكين MeshBasicMaterial والضباب

إذن ، إنها بعض الغرابة في أمر التنفيذ. كان الاختلاف الوحيد بين هذين الاختبارين الأخيرين هو ما يرقى إلى تعيين هوية ( gl_FragColor = functionThatReturnsArg(gl_FragColor); ) يحدث إما بعد أو قبل منطق تظليل النص المخصص. إذا جاء بعد أن يعمل ، وإذا حدث قبل ذلك ، فإنه يفشل (ما لم يتم تمكين الضباب ، مما يضيف gl_FragColor.rgb = ... إضافيًا قبل منطق النص ، وهذا يعمل أيضًا ولكن فقط في MeshBasicMaterial. تنهد .

إليك اختراق مقرف لمعرفة ما إذا كانت إضافة gl_FragColor = gl_FragColor; في النهاية تمنحه دفعة: https://5dc9f0d8e82cdf00089f6b6c--troika-examples.netlify.com/#text

حسنًا ، نفس الشيء مع الأخير يعمل فقط مع BasicMaterial و Fog on ...

حسنًا ، المزيد من المحاولات لك ...

1) https://5dcadbdfa8565d0008ff1af5--troika-examples.netlify.com/#text
2) https://5dcadfaac107620008043289--troika-examples.netlify.com/#text
3) https://5dcae02c8de52400077b3a8b--troika-examples.netlify.com/#text

يعمل الثلاثة نفس الشيء فقط مع تمكين BasicMaterial و Fog

قرف. شكرًا لك على صبرك الشديد في اختبار كل تخميناتي الجامحة. هذا لا يزال غير منطقي بالنسبة لي.

اختبار فرضية أخرى: https://5dcaea1c9bbf6e00074b3c7a--troika-examples.netlify.com/#text

np ، هذا دائمًا ينقطع مع الضباب وإيقاف وجميع المواد

هل يمكنك الحصول على المزيد من لقطات الشاشة من أمثلة أخرى لي عندما تحصل على لحظة:

1) https://troika-examples.netlify.com/#arcs مع تحديد تظليل "مزدوج المشتق"
2) https://troika-examples.netlify.com/#ui
3) https://troika-examples.netlify.com/#bezier3d بقيمة غير صفرية للخيار "متقطع"

تستخدم هذه الأمثلة تقنيات مماثلة مثل تظليل جزء النص ، لذلك أريد أن أرى ما إذا كان هناك قاسم مشترك في سلوكهم.

Bildschirmfoto von 2019-11-13 14-49-48
Bildschirmfoto von 2019-11-13 14-49-18
Bildschirmfoto von 2019-11-13 14-49-02

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

بضع محاولات:
1) https://5dcc2b581b644200098d5e75--troika-examples.netlify.com/#text
2) https://5dcc302d78835c00089437e2--troika-examples.netlify.com/#text
3) https://5dcc31b70765f2000991ad0f--troika-examples.netlify.com/#text

طيب الكل 1. 2. و 3. يعمل مع جميع المواد وبدون ضباب!

😮 مذهل!

حسنًا ، هناك شيء أخير يجب التحقق منه وبعد ذلك يجب أن يكون لدي معلومات كافية لإصلاح نهائي:
https://5dcc47d956b59f00070bea55--troika-examples.netlify.com/#text

وهل يمكنك التحقق من أن خانة الاختيار Shadows تعمل أيضًا من فضلك؟

هممم هذا لا يعمل ... غريب:>
Bildschirmfoto von 2019-11-13 21-02-11
Bildschirmfoto von 2019-11-13 21-01-56
Bildschirmfoto von 2019-11-13 21-01-45

هذه في الواقع أخبار جيدة! يشير إلى شرطي محدد للغاية على أنه سبب المشكلة:

if (uTroikaSDFDebug) {
    gl_FragColor *= 0.5;
  } else {
    discard;
  }

يبدو أن استبدال هذا الشرط بـ discard فقط هو ما جعله يبدأ في العمل. وهو أمر غريب للغاية ، لأن uTroikaSDFDebug هو زي موحد لذلك يجب أن يذهب دائمًا إلى else أي حال. لكن لسبب ما لا يحب نظامك ذلك.

لذلك سأزيل الشرط فقط. يمكنني محاولة إعادة صياغته على أنه DEFINE أو شيء ما ولكنه ليس مفيدًا على أي حال.

سأعمل على هذا في إصلاح نهائي على المستوى الرئيسي ، هل قمت بالتحقق من ذلك مرة أخرى ، ثم قم بنشر إصدار جديد وتحديثه في مكون aframe. قد يستغرق يوما أو يومين بالرغم من ذلك.

إتقان البناء للاختبار ، عندما تسنح لك الفرصة: https://troika-examples.netlify.com/#text

نعم ، هذا يعمل مع جميع المواد وتشغيل الضباب / إيقاف تشغيله!

arpu شكرًا لك مرة أخرى على وقتك وصبرك في مساعدتي في تعقب هذه المشكلة. تم نشر هذا الإصلاح في 0.15.7.

لقد صدمت أيضًا aframe-troika-text إلى الإصدار 0.1.2 الذي يستخدم الإصدار الثابت. يحتوي أيضًا على إصلاحات لـ ThreeJS r110 التي ذكرتها من قبل.

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