Insérer modèle 3D

:information_source: Résumé Insert Model 3D ajoute un bouton de composition qui simplifie l’ajout de modèles 3D à un message Discourse.
:hammer_and_wrench: Dépôt https://github.com/Beholder-Vision/discourse-insert-model-3d
:open_book: Nouveau sur les thèmes Discourse ? Guide pour débutants sur l’utilisation des thèmes Discourse

Installer ce composant de thème

Bonjour à tous,
Ce composant permet à vos utilisateurs d’ajouter des modèles 3D à leurs messages en utilisant le composant Google model viewer. J’ai créé ce composant pour permettre aux utilisateurs de mon SaaS de photogrammétrie Beholder de partager les modèles qu’ils créent sur notre tout nouveau forum Discourse et j’ai pensé le partager ici au cas où il serait utile à d’autres. Je n’ai pas vu d’autre composant similaire, mais je n’ai fait qu’une recherche très rapide…

Les instructions et les captures d’écran montrant comment utiliser le composant sont ci-dessous.

Vos commentaires ou réflexions sur ce composant sont très appréciés. Le composant model viewer que j’utilise pour afficher les modèles a beaucoup de fonctionnalités, il y a donc probablement beaucoup de possibilités d’étendre ce composant en exposant certaines de ces fonctionnalités aux utilisateurs. J’ai créé ce composant en copiant, collant et modifiant les composants insert video et mermaid donc j’apprécierais vraiment si quelqu’un ayant plus d’expérience dans l’écriture de composants Discourse pouvait jeter un œil au code et me faire savoir quelles erreurs j’ai commises. :slight_smile:

Cordialement
Alan

Utilisation

Une fois le composant installé, les utilisateurs pourront ajouter des modèles 3D à leurs
messages en cliquant sur la nouvelle icône de cube dans la composition.

composer_toolbar

Actuellement, le visualiseur 3D ne téléchargera pas et n’affichera pas le modèle 3D immédiatement. Il affichera plutôt une affiche (qui peut être personnalisée) et ne chargera le modèle que lorsque l’utilisateur cliquera sur le bouton « Charger le modèle 3D ». L’idée derrière cela est d’aider les utilisateurs ayant une bande passante limitée.

Paramètres administrateur

Pour que les utilisateurs puissent télécharger des modèles avec ce composant, vous devrez ajouter .gltf et .glb à la liste des extensions autorisées.

Vous devrez également probablement augmenter la limite de taille maximale des pièces jointes.

settings_max_attachment_size

C’est probablement la principale limitation pour utiliser ce composant sur Discourse hébergé car, dans les plans d’abonnement inférieurs, la taille maximale est limitée à 30 Mo. Pour être juste, vous ne voudrez probablement pas que vos utilisateurs téléchargent des fichiers volumineux et les fichiers .glb et .gltf peuvent être considérablement réduits en taille s’ils sont générés par un programme qui prend en charge la compression de maillage Draco.

20 « J'aime »

Merci, cela a fonctionné pendant quelques jours, mais maintenant le bouton de chargement ne fonctionne plus (testé sur Firefox, Chrome et Firefox mobile)

2 « J'aime »

Oh non ! Ce n’est pas bon. Merci de m’avoir prévenu.

La même chose s’est produite sur mon forum. En regardant le message, je pense que ce qui s’est passé, c’est qu’après quelques jours, Discourse a décidé que l’image de l’affiche téléchargée et le modèle 3D n’étaient plus nécessaires, il les a donc supprimés du serveur. :frowning:

J’ai ‘réparé’ cela temporairement sur mon site en téléchargeant à nouveau le modèle et l’affiche, mais je vais maintenant lire la documentation des thèmes Discourse pour voir si je peux le réparer correctement. D’après le rapide coup d’œil que j’ai jeté en écrivant le composant de thème, la documentation indique que tant qu’un actif est référencé par un message, il sera conservé sur le serveur, mais évidemment, les URL que ce composant insère dans le message ne font pas cela pour une raison quelconque. Si un autre développeur de plugin peut offrir des conseils à ce sujet, ce serait très apprécié… :slight_smile:

2 « J'aime »

C’est un comportement étrange.

1 « J'aime »

Ouais, ma théorie actuelle est que lorsque je crée le markdown pour référencer le visualiseur de modèles, alors d’une manière ou d’une autre, l’URL du modèle téléchargé n’est pas sous la forme correcte pour la logique qui analyse les publications pour reconnaître les téléchargements utilisés.

Actuellement, j’examine 2 autres endroits dans Discourse où des fichiers sont téléchargés. Dans la fenêtre modale de téléchargement d’images/fichiers, une référence est conservée à une « short_url » qui a la forme upload:// plutôt que l’URL finale qui sera utilisée par le navigateur pour télécharger la ressource. Alors peut-être que je devrai comprendre comment l’utiliser ? Alternativement, le composant GitHub - discourse/discourse-insert-video, sur lequel j’ai basé mon composant, utilise directement l’URL de la ressource. Soit ce composant souffre du même bug (peu probable :)), soit ces URL sont reconnues parce qu’elles sont insérées dans le message markdown sous forme de balises HTML (je ne peux pas le faire avec la balise model-viewer car elle ne figure pas sur la liste blanche des balises HTML).

C’est ma réflexion actuelle, ou cela pourrait être tout autre chose. Maintenant, je vais voir si je peux trouver le code qui identifie les téléchargements orphelins sur un site Discourse…

2 « J'aime »

Salut,

Désolé pour le retard dans ma réponse. J’étais occupé par du travail sous contrat la semaine dernière.

Quoi qu’il en soit, j’ai jeté un autre coup d’œil tout à l’heure et je pense avoir identifié le code qui décide si un téléchargement est conservé ou supprimé. Dans le code côté serveur pour le traitement d’un post, il y a une routine appelée ‘each_upload_url’ qui génère une liste de fichiers téléchargés référencés dans un post.

Maintenant, je ne suis pas un développeur Ruby, mais d’après ce que je peux comprendre, il recherche les URL référencées par une liste prédéfinie de balises HTML. Donc, pour le composant de thème “insert video” que j’ai copié, l’attribut src de tout élément HTML <source> est reconnu comme un téléchargement, et l’attribut poster de tout élément HTML <video> est reconnu comme un téléchargement. Pour mon composant “insert model 3d” cependant, l’élément HTML <model-viewer> n’est pas dans la liste et donc les ressources qu’il référence ne sont pas reconnues comme des téléchargements et seront donc purgées après quelques jours.

La solution à long terme pourrait être de modifier le code côté serveur afin que les attributs de model-viewer soient reconnus comme une source de téléchargements, mais je pense qu’il devrait également être possible de contourner cela pour l’instant en ajoutant des balises HTML <a> explicites reliant les téléchargements.

Je vais poster dans la catégorie Bug pour vérifier si ma compréhension est correcte, mais au cas où ma compréhension serait correcte, j’ai soumis une correction au composant de thème “Insert Model 3D” qui insère des balises <a> cachées dans le post qui référencent le modèle et l’affiche téléchargés. @patrickemin Si vous avez un peu de temps, pourriez-vous s’il vous plaît vérifier si cela résout le problème pour vous ? Vous devrez mettre à jour le composant, puis re-télécharger tous les actifs de modèle 3D qui ont été purgés.

Alan, je ne sais pas si cela résoudra l’énigme, mais cela nous a affectés par le passé en raison de bugs dans ce domaine.

Les téléchargements orphelins sont supprimés périodiquement. Dans le cadre d’un téléchargement, vous devriez obtenir une entrée dans la table uploads. Si, pour une raison quelconque, elle est manquante, le téléchargement sera éventuellement supprimé.

Cela pourrait être une piste à explorer.

Pour vérifier le modèle Upload, vous pouvez accéder à la console Rails depuis le répertoire Discourse et, par exemple :

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

Cordialement.

1 « J'aime »

Ah, c’est bon à savoir, merci Robert. Savez-vous s’il est possible d’effectuer cette vérification ou quelque chose d’équivalent sur Discourse hébergé ? Je suppose que non, donc @patrickemin, si votre serveur est auto-hébergé, cela pourrait être une bonne chose à vérifier.
Alternativement, j’ai une configuration locale de Discourse basée sur Docker sur laquelle je travaillais jusqu’à ce que j’abandonne et que je me tourne vers Discourse hébergé. Cela pourrait être une bonne excuse pour y revenir. :slight_smile:

2 « J'aime »

Quelque chose que vous devriez signaler au support.

Mais s’il est clair que cela arrive à plusieurs utilisateurs, cela vaut la peine d’enquêter sur une instance auto-hébergée avant de soumettre un ticket, je suppose.

Salut, me revoilà après quelques mois… J’ai profité de la sortie du modèle Copilot 2D vers 3D de Microsoft pour tester et votre TC fonctionne maintenant bien, avec le code ajouté le modèle ne devrait plus disparaître, voir ici.

1 « J'aime »