إدراج نموذج ثلاثي الأبعاد

:information_source: ملخص إدراج نموذج ثلاثي الأبعاد يضيف زر إنشاء يبسط إضافة النماذج ثلاثية الأبعاد إلى منشور Discourse.
:hammer_and_wrench: المستودع https://github.com/Beholder-Vision/discourse-insert-model-3d
:open_book: جديد على سمات Discourse؟ دليل المبتدئين لاستخدام سمات Discourse

تثبيت مكون السمة هذا

مرحباً بالجميع،
يتيح هذا المكون لمستخدميك إضافة نماذج ثلاثية الأبعاد إلى منشوراتهم باستخدام مكون عارض نماذج Google. لقد أنشأت هذا المكون للسماح لمستخدمي خدمة SaaS للصور المجسمة الخاصة بي Beholder بمشاركة النماذج التي ينشئونها على منتدى Discourse الجديد اللامع الخاص بنا، وفكرت في مشاركته هنا أيضًا في حال كان مفيدًا لأشخاص آخرين. لم أتمكن من العثور على مكون مشابه آخر، ولكنني أجريت بحثًا سريعًا جدًا…

توجد تعليمات ولقطات شاشة توضح كيفية استخدام المكون أدناه.

نرحب بأي ملاحظات أو أفكار حول هذا المكون. يحتوي مكون عارض النماذج الذي أستخدمه لعرض النماذج على الكثير من الوظائف، لذا من المحتمل أن يكون هناك مجال كبير لتوسيع هذا المكون من خلال الكشف عن بعض هذه الوظائف للمستخدمين. لقد أنشأت هذا المكون عن طريق النسخ واللصق وتعديل مكونات إدراج الفيديو و mermaid، لذا سأكون ممتنًا جدًا لو ألقى شخص لديه خبرة أكبر في كتابة مكونات Discourse نظرة على الكود وأخبرني بالأخطاء التي ارتكبتها. :slight_smile:

مع خالص التقدير
آلان

الاستخدام

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

composer_toolbar

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

إعدادات المسؤول

لكي يتمكن المستخدمون من تحميل النماذج بهذا المكون، ستحتاج إلى إضافة .gltf و .glb إلى قائمة الامتدادات المصرح بها.

ستحتاج أيضًا على الأرجح إلى زيادة حد حجم المرفق الأقصى.

settings_max_attachment_size

هذا هو القيد الرئيسي المحتمل لاستخدام هذا المكون على Discourse المستضاف، حيث أن الخطط الاشتراكية الأقل تحد من الحجم الأقصى إلى 30 ميجابايت. لكي نكون منصفين، ربما لا تريد أن يقوم المستخدمون بتحميل ملفات ضخمة، ويمكن تقليل حجم ملفات .glb و .gltf بشكل كبير إذا تم إنشاؤها بواسطة برنامج يدعم ضغط شبكة Draco.

20 إعجابًا

شكراً، لقد نجح الأمر لبضعة أيام ولكن الآن زر التحميل لا يعمل بعد الآن (تم اختباره على فايرفوكس وكروم وفايرفوكس للجوال)

إعجابَين (2)

يا إلهي! هذا ليس جيدًا. شكراً لإعلامي.

حدث نفس الشيء في منتدى الخاص بي. بالنظر إلى المنشور، أعتقد أن ما حدث هو أنه بعد بضعة أيام قرر Discourse أن صورة الملصق التي تم تحميلها والنموذج ثلاثي الأبعاد لم تعد مطلوبة، لذلك قام بحذفها من الخادم. :pensive_face:

لقد “أصلحت” هذا مؤقتًا على موقعي عن طريق إعادة تحميل النموذج والملصق، ولكني الآن سأقرأ وثائق سمات Discourse لمعرفة ما إذا كان بإمكاني إصلاحه بشكل صحيح. من المسح السريع الذي قمت به عند كتابة مكون السمة، رأيت أن الوثائق تقول أنه طالما أن الأصل مشار إليه بواسطة منشور، فسيتم الاحتفاظ به على الخادم، ولكن من الواضح أن عناوين URL التي يضعها هذا المكون في المنشور لا تفعل ذلك لسبب ما. إذا كان بإمكان أي كاتب مكون إضافي آخر تقديم المشورة بشأن هذا الأمر، فسيكون ذلك محل تقدير كبير… :blush:

إعجابَين (2)

هذا سلوك غريب.

إعجاب واحد (1)

نعم، نظريتي الحالية هي أنه عندما أقوم بإنشاء علامة markdown للإشارة إلى عارض النماذج، فإن عنوان URL للنموذج الذي تم تحميله بطريقة ما ليس بالشكل الصحيح لأي منطق يقوم بفحص المنشورات للتعرف على التحميلات المستخدمة.

حاليًا، أنظر إلى مكانين آخرين في Discourse حيث يتم تحميل الملفات. في نافذة تحميل الصور/الملفات، يتم الاحتفاظ بمرجع لـ “short_url” الذي له شكل upload:// بدلاً من عنوان URL النهائي الذي سيستخدمه المتصفح لتنزيل المورد. لذا ربما أحتاج إلى معرفة كيفية استخدام ذلك؟ بدلاً من ذلك، يستخدم المكون https://github.com/discourse/discourse-insert-video، الذي استندت إليه في مكوني، عنوان URL للمورد مباشرة. إما أن يعاني هذا المكون من نفس الخطأ (غير مرجح :slight_smile: ) أو أن عناوين URL هذه يتم التعرف عليها لأنها مدرجة في رسالة markdown كعلامات HTML (لا يمكنني فعل ذلك مع علامة model-viewer لأنها ليست في القائمة البيضاء لعلامات HTML).

هذا هو تفكيري الحالي، أو قد يكون شيئًا آخر تمامًا. الآن سأذهب لأرى ما إذا كان بإمكاني العثور على الكود الذي يحدد التحميلات اليتيمة على موقع Discourse…

إعجابَين (2)

مرحباً،

أعتذر عن التأخير في الرد على هذا. كنت مشغولاً بعمل تعاقدي الأسبوع الماضي.

على أي حال، لقد ألقيت نظرة أخرى الآن، وأعتقد أنني حددت الكود الذي يقرر ما إذا كان التحميل سيعيش أم يموت. في كود جانب الخادم لمعالجة منشور، توجد روتينية تسمى ‘each_upload_url’ والتي ستنشئ قائمة بالملفات التي تم تحميلها والتي تمت الإشارة إليها في منشور.

الآن أنا لست مطور Ruby، ولكن من ما يمكنني فهمه، فإنه يبحث عن عناوين URL المشار إليها بواسطة قائمة محددة مسبقًا من علامات HTML. لذلك بالنسبة لمكون سمة إدراج الفيديو الذي نسخته، فإن السمة src لأي عنصر HTML <source> يتم التعرف عليها كتحميل، والسمة poster لأي عنصر HTML <video> يتم التعرف عليها كتحميل. بالنسبة لمكون إدراج النموذج ثلاثي الأبعاد الخاص بي، فإن عنصر HTML <model-viewer> ليس في القائمة وبالتالي لا يتم التعرف على الأصول التي يشير إليها كتحميلات وبالتالي بعد بضعة أيام سيتم تطهيرها.

قد يكون الحل طويل الأمد لهذا هو تغيير كود جانب الخادم بحيث يتم التعرف على سمات model-viewer كمصدر للتحميلات، ولكن أعتقد أنه يجب أن يكون من الممكن أيضًا التحايل على هذا في الوقت الحالي عن طريق إضافة علامات HTML <a> صريحة تربط بالتحميلات.

سأقوم بالنشر في فئة Bug للتحقق من صحة فهمي، ولكن على افتراض أن فهمي صحيح، فقد قدمت إصلاحًا لمكون سمة Insert Model 3D الذي يدرج بعض علامات <a> المخفية في المنشور التي تشير إلى النموذج المحمل والملصق. @patrickemin إذا كان لديك بعض الوقت، هل يمكنك من فضلك التحقق مما إذا كان هذا يحل المشكلة بالنسبة لك؟ ستحتاج إلى تحديث المكون ثم إعادة تحميل أي أصول نماذج ثلاثية الأبعاد تم تطهيرها.

آلان، لست متأكدًا مما إذا كان هذا سيحل اللغز، ولكنه أثر علينا في الماضي حيث كانت هناك أخطاء في هذا المجال.

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

قد يكون هذا سطرًا للتحقيق.

للتحقق من نموذج التحميل، يمكنك الدخول إلى وحدة تحكم Rails من دليل Discourse و على سبيل المثال:

./launcher enter app
rails c
Upload.last(3)

تحياتي

إعجاب واحد (1)

أوه، هذا مفيد لمعرفته، شكرًا روبرت. هل تعرف ما إذا كان من الممكن إجراء هذا الفحص أو شيء مكافئ له على منصة Discourse المستضافة؟ أفترض أن الإجابة لا، لذا يا @patrickemin إذا كان خادمك مستضافًا ذاتيًا، فقد يكون هذا شيئًا جيدًا للتحقق منه.
بدلاً من ذلك، لدي إعداد محلي قائم على Docker لمنصة Discourse كنت أعمل عليه حتى استسلمت ولجأت إلى منصة Discourse المستضافة. قد يكون هذا عذرًا جيدًا للعودة إليه. :slight_smile:

إعجابَين (2)

شيء ستحتاج إلى طرحه على الدعم.

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

مرحباً، عدت إليكم بعد بضعة أشهر… لقد اغتنمت الفرصة التي أصدرت فيها Microsoft نموذج Copilot 2D إلى 3D لاختباره، وجهاز TC الخاص بك يعمل الآن بشكل جيد، مع إضافة الكود لن يختفي النموذج، انظر هنا.

إعجاب واحد (1)