Inserisci modello 3D

:information_source: Riepilogo Insert Model 3D aggiunge un pulsante composer che semplifica l’aggiunta di modelli 3D a un post di Discourse.
:hammer_and_wrench: Repository https://github.com/Beholder-Vision/discourse-insert-model-3d
:open_book: Nuovo per i temi di Discourse? Guida per principianti all’uso dei temi di Discourse

Installa questo componente tema

Ciao a tutti,
Questo componente consente ai tuoi utenti di aggiungere modelli 3D ai loro post utilizzando il componente Google model viewer. Ho creato questo componente per consentire agli utenti del mio SaaS di fotogrammetria Beholder di condividere modelli che creano sul nostro nuovo forum Discourse e ho pensato di condividerlo anche qui nel caso fosse utile ad altri. Non ho trovato un componente simile, ma ho fatto solo una ricerca molto rapida…

Le istruzioni e gli screenshot che mostrano come utilizzare il componente sono di seguito.

Qualsiasi feedback o pensiero su questo componente è molto apprezzato. Il componente model viewer che uso per visualizzare i modelli ha molte funzionalità, quindi c’è probabilmente molto spazio per espandere questo componente esponendo alcune di queste funzionalità agli utenti. Ho creato questo componente copiando, incollando e modificando i componenti insert video e mermaid, quindi apprezzerei molto anche se qualcuno con maggiore esperienza nella scrittura di componenti Discourse desse un’occhiata al codice e mi facesse sapere quali errori ho commesso. :slight_smile:

Saluti
Alan

Utilizzo

Quando il componente è installato, gli utenti potranno aggiungere modelli 3D ai loro
post facendo clic sulla nuova icona a cubo nel composer.

composer_toolbar

Attualmente, il visualizzatore 3D non scaricherà e visualizzerà immediatamente il modello 3D, ma visualizzerà un poster (personalizzabile) e caricherà il modello solo quando l’utente fa clic sul pulsante ‘Carica modello 3D’. Il pensiero dietro questo è aiutare gli utenti con larghezza di banda limitata.

Impostazioni Amministratore

Affinché gli utenti possano caricare modelli con questo componente, dovrai aggiungere .gltf e .glb all’elenco delle estensioni autorizzate.

Dovrai anche aumentare il limite per la dimensione massima degli allegati.

settings_max_attachment_size

Questa è probabilmente la principale limitazione per l’utilizzo di questo componente su Discourse ospitato, poiché lì, nei piani di abbonamento inferiori, la dimensione massima è limitata a 30 MB. A dire il vero, probabilmente non vorrai che i tuoi utenti carichino file enormi e i file .glb e .gltf possono essere notevolmente ridotti in dimensioni se vengono generati da un programma che supporta la compressione mesh Draco.

20 Mi Piace

Grazie, ha funzionato per qualche giorno ma ora il pulsante di caricamento non funziona più (testato su Firefox, Chrome e Firefox mobile)

2 Mi Piace

Oh no! Questo non va bene. Grazie per avermelo fatto sapere.

La stessa cosa era successa sul mio forum. Guardando il post, penso che sia successo che dopo alcuni giorni Discourse ha deciso che l’immagine del poster caricata e il modello 3D non fossero più necessari, quindi li ha eliminati dal server. :frowning:

Ho “risolto” temporaneamente questo problema sul mio sito ricaricando il modello e il poster, ma ora andrò a leggere la documentazione del tema di Discourse per vedere se riesco a risolverlo correttamente. Dalla rapida scorsa che ho fatto mentre scrivevo il componente del tema, ho visto che la documentazione dice che finché un asset è referenziato da un post, verrà conservato sul server, ma ovviamente gli URL che questo componente inserisce nel post non lo fanno per qualche motivo. Se altri sviluppatori di plugin possono offrire consigli a riguardo, sarebbero molto apprezzati… :slight_smile:

2 Mi Piace

Questo è un comportamento strano.

1 Mi Piace

La mia attuale teoria è che quando creo il markdown per fare riferimento al visualizzatore di modelli, l’URL del modello caricato non sia nella forma corretta per la logica che analizza i post per riconoscere gli upload utilizzati.

Attualmente sto esaminando altri 2 posti in Discourse in cui vengono caricati file. Nella finestra di dialogo di caricamento di immagini/file, viene mantenuto un riferimento a un ‘short_url’ che ha la forma upload:// anziché l’URL finale che verrà utilizzato dal browser per scaricare la risorsa. Quindi, forse dovrò capire come usarlo? In alternativa, il componente GitHub - discourse/discourse-insert-video, su cui ho basato il mio componente, utilizza direttamente l’URL della risorsa. O quel componente soffre dello stesso bug (improbabile :)) o quegli URL vengono riconosciuti perché inseriti nel messaggio markdown come tag HTML (non posso farlo con il tag model-viewer poiché non è nella whitelist dei tag HTML).

Questo è il mio attuale pensiero, o potrebbe essere qualcos’altro. Ora vado a vedere se riesco a trovare il codice che identifica gli upload orfani su un sito Discourse…

2 Mi Piace

Ciao,

Mi scuso per il ritardo nella risposta. La settimana scorsa ero impegnato con lavori a contratto.

Comunque, ho dato un’altra occhiata adesso e penso di aver identificato il codice che decide se un caricamento vive o muore. Nel codice lato server per l’elaborazione di un post c’è una routine chiamata ‘each_upload_url’ che genera un elenco di file caricati a cui si fa riferimento in un post.

Ora, non sono uno sviluppatore Ruby, ma da quello che riesco a capire sta cercando URL a cui si fa riferimento tramite un elenco predefinito di tag HTML. Quindi, per il componente tematico “insert video” che ho copiato, l’attributo src di qualsiasi elemento HTML <source> viene riconosciuto come un caricamento, e l’attributo poster di qualsiasi elemento HTML <video> viene riconosciuto come un caricamento. Per il mio componente tematico “insert model 3d”, invece, l’elemento HTML <model-viewer> non è nell’elenco e quindi gli asset a cui fa riferimento non vengono riconosciuti come caricamenti e quindi, dopo qualche giorno, verranno eliminati.

La soluzione a lungo termine potrebbe essere quella di modificare il codice lato server in modo che gli attributi di model-viewer vengano riconosciuti come una fonte di caricamenti, ma penso che dovrebbe anche essere possibile aggirare il problema per ora inserendo esplicitamente tag HTML <a> che rimandano ai caricamenti.

Pubblicherò nella categoria Bug per verificare se la mia comprensione è corretta, ma nel caso improbabile che la mia comprensione sia corretta, ho inviato una correzione al componente tematico “Insert Model 3D” che inserisce alcuni tag <a> nascosti nel post che fanno riferimento al modello caricato e al poster. @patrickemin Se hai un po’ di tempo, potresti verificare se questo risolve il problema per te? Dovresti aggiornare il componente e poi ricaricare eventuali asset di modelli 3D che sono stati eliminati.

Alan, non sono sicuro se questo risolverà l’enigma, ma in passato ci ha interessato dove ci sono stati bug in questo ambito.

I caricamenti orfani vengono eliminati periodicamente. Come parte di un caricamento, dovresti ottenere una voce nella tabella uploads. Se per qualsiasi motivo questa manca, il caricamento verrà rimosso alla fine.

Potrebbe essere una linea di indagine.

Per controllare il modello Upload puoi accedere alla console rails dalla directory Discourse e, ad esempio:

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

Saluti

1 Mi Piace

Ah, è utile saperlo, grazie Robert. Sai se è possibile eseguire quel controllo o qualcosa di equivalente su Discourse ospitato? Presumo di no, quindi @patrickemin, se il tuo server dovesse essere self-hosted, questa potrebbe essere una cosa utile da controllare.
In alternativa, ho una configurazione locale di Discourse basata su Docker su cui stavo lavorando finché non ho rinunciato e sono passato a Discourse ospitato. Questa potrebbe essere una buona scusa per tornarci. :slight_smile:

2 Mi Piace

Qualcosa che dovresti segnalare al supporto.

Ma se è chiaro che sta succedendo a diversi utenti, vale la pena indagare su un’istanza self-hosted prima di aprire un ticket, sospetto.

Ciao, sono tornato dopo qualche mese… Ho colto l’occasione del rilascio del modello Copilot 2D to 3D di Microsoft per testare e il tuo TC ora funziona bene, con il codice aggiunto il modello non dovrebbe più scomparire, vedi qui.

1 Mi Piace