Insert Model 3D

:information_source: Zusammenfassung Insert Model 3D fügt eine Komponisten-Schaltfläche hinzu, die das Hinzufügen von 3D-Modellen zu einem Discourse-Beitrag vereinfacht.
:hammer_and_wrench: Repository https://github.com/Beholder-Vision/discourse-insert-model-3d
:open_book: Neu bei Discourse Themes? Anfängerleitfaden zur Verwendung von Discourse Themes

Installieren Sie diese Theme-Komponente

Hallo zusammen,
Diese Komponente ermöglicht es Ihren Benutzern, 3D-Modelle über die Google Model Viewer-Komponente in ihre Beiträge einzufügen. Ich habe diese Komponente erstellt, um Benutzern meines Photogrammetry SaaS Beholder zu ermöglichen, Modelle zu teilen, die sie auf unserem brandneuen Discourse-Forum erstellen, und dachte, ich teile sie auch hier, falls sie für andere nützlich ist. Ich konnte keine ähnliche Komponente finden, aber ich habe nur sehr kurz gesucht…

Anleitungen und Screenshots zur Verwendung der Komponente finden Sie unten.

Ich freue mich über jedes Feedback oder Gedanken zu dieser Komponente. Die Model Viewer-Komponente, die ich zur Anzeige der Modelle verwende, verfügt über eine ganze Menge Funktionalität, sodass es wahrscheinlich viel Spielraum gibt, diese Komponente zu erweitern, indem einige dieser Funktionalitäten für Benutzer zugänglich gemacht werden. Ich habe diese Komponente durch Kopieren, Einfügen und Modifizieren der insert video- und mermaid-Komponenten erstellt, daher würde ich mich auch sehr freuen, wenn jemand mit mehr Erfahrung im Schreiben von Discourse-Komponenten einen Blick auf den Code werfen und mir mitteilen könnte, welche Fehler ich gemacht habe. :slight_smile:

Mit freundlichen Grüßen
Alan

Verwendung

Wenn die Komponente installiert ist, können Benutzer 3D-Modelle zu ihren Beiträgen hinzufügen, indem sie auf das neue Würfel-Symbol im Komponisten klicken.

composer_toolbar

Derzeit lädt die 3D-Ansicht das 3D-Modell nicht sofort herunter und zeigt es an. Stattdessen wird ein Poster (das angepasst werden kann) angezeigt und das Modell wird erst geladen, wenn der Benutzer auf die Schaltfläche “3D-Modell laden” klickt. Die Überlegung dahinter ist, Benutzern mit begrenzter Bandbreite zu helfen.

Admin-Einstellungen

Damit Benutzer mit dieser Komponente Modelle hochladen können, müssen Sie .gltf und .glb zur Liste der autorisierten Erweiterungen hinzufügen.

Sie müssen wahrscheinlich auch das Limit für die maximale Anhanggröße erhöhen.

settings_max_attachment_size

Dies ist wahrscheinlich die Haupteinschränkung für die Verwendung dieser Komponente auf gehosteten Discourse-Instanzen, da dort in den niedrigeren Abonnementplänen die maximale Größe auf 30 MB begrenzt ist. Um fair zu sein, möchten Sie wahrscheinlich nicht, dass Ihre Benutzer riesige Dateien hochladen, und .glb- und .gltf-Dateien können erheblich verkleinert werden, wenn sie von einem Programm generiert werden, das Draco-Mesh-Kompression unterstützt.

20 „Gefällt mir“

Danke, es hat ein paar Tage funktioniert, aber jetzt funktioniert der Ladebutton nicht mehr (getestet auf Firefox, Chrome und Firefox Mobile)

2 „Gefällt mir“

Oh nein! Das ist nicht gut. Danke, dass Sie mich informiert haben.

Das Gleiche ist auch in meinem Forum passiert. Wenn ich mir den Beitrag ansehe, glaube ich, dass Discourse nach ein paar Tagen entschieden hat, dass das hochgeladene Posterbild und das 3D-Modell nicht mehr benötigt werden, und sie daher vom Server gelöscht hat. :frowning:

Ich habe dies auf meiner Website vorübergehend „behoben“, indem ich das Modell und das Poster erneut hochgeladen habe, aber jetzt lese ich die Discourse-Theme-Dokumentation, um zu sehen, ob ich es richtig beheben kann. Bei der kurzen Überprüfung, die ich beim Schreiben der Theme-Komponente durchgeführt habe, habe ich in den Dokumenten gelesen, dass ein Asset auf dem Server aufbewahrt wird, solange es von einem Beitrag referenziert wird. Aus irgendeinem Grund tun die URLs, die diese Komponente in den Beitrag einfügt, dies offensichtlich nicht. Wenn andere Plugin-Entwickler Ratschläge dazu geben können, wäre das sehr willkommen… :slight_smile:

2 „Gefällt mir“

Das ist ein seltsames Verhalten.

1 „Gefällt mir“

Meine aktuelle Theorie ist, dass, wenn ich das Markdown erstelle, um auf den Modell-Viewer zu verweisen, die URL für das hochgeladene Modell in irgendeiner Weise nicht in der richtigen Form für die Logik ist, die Beiträge scannt, um verwendete Uploads zu erkennen.

Derzeit betrachte ich 2 weitere Stellen in Discourse, an denen Dateien hochgeladen werden. Im Modal für Bild-/Datei-Uploads wird eine Referenz auf eine ‘short_url’ gespeichert, die die Form upload:// anstelle der endgültigen URL hat, die der Browser zum Herunterladen der Ressource verwenden wird. Vielleicht muss ich also herausfinden, wie ich das verwenden kann? Alternativ verwendet die Komponente GitHub - discourse/discourse-insert-video, auf der meine Komponente basiert, direkt die Ressourcen-URL. Entweder leidet diese Komponente unter demselben Fehler (unwahrscheinlich :)) oder diese URLs werden erkannt, weil sie als HTML-Tags in die Markdown-Nachricht eingefügt werden (das kann ich mit dem model-viewer-Tag nicht tun, da er nicht auf der Whitelist für HTML-Tags steht).

Das ist mein aktueller Gedanke, oder es könnte etwas ganz anderes sein. Jetzt mache ich mich daran, den Code zu finden, der verwaiste Uploads auf einer Discourse-Site identifiziert…

2 „Gefällt mir“

Hallo,

Entschuldigung für die Verzögerung bei der Antwort. Ich war letzte Woche mit Vertragsarbeiten beschäftigt.

Wie auch immer, ich habe mir das gerade noch einmal angesehen und glaube, dass ich den Code identifiziert habe, der entscheidet, ob ein Upload lebt oder stirbt. Im serverseitigen Code zur Verarbeitung eines Beitrags gibt es eine Routine namens ‘each_upload_url’, die eine Liste der in einem Beitrag referenzierten hochgeladenen Dateien generiert.

Nun, ich bin kein Ruby-Entwickler, aber soweit ich das beurteilen kann, sucht es nach URLs, die von einer vordefinierten Liste von HTML-Tags referenziert werden. Für die von mir kopierte „Insert Video“-Theme-Komponente wird das src-Attribut jedes \\u003csource\u003e-HTML-Elements als Upload erkannt, und das poster-Attribut jedes \\u003cvideo\u003e-HTML-Elements wird als Upload erkannt. Für meine „Insert Model 3D“-Komponente ist das \\u003cmodel-viewer\u003e-HTML-Element jedoch nicht in der Liste, und so werden die von ihm referenzierten Assets nicht als Uploads erkannt und daher nach einigen Tagen gelöscht.

Die langfristige Lösung dafür könnte darin bestehen, den serverseitigen Code zu ändern, sodass model-viewer-Attribute als Quelle für Uploads erkannt werden, aber ich denke, dass dies vorerst auch umgangen werden könnte, indem explizite HTML-\\u003ca\\u003e-Tags hinzugefügt werden, die auf die Uploads verlinken.

Ich werde im #bug-Bereich posten, um zu überprüfen, ob mein Verständnis korrekt ist, aber für den Fall, dass mein Verständnis korrekt ist, habe ich eine Korrektur für die „Insert Model 3D“-Theme-Komponente eingereicht, die einige versteckte \\u003ca\\u003e-Tags in den Beitrag einfügt, die auf das hochgeladene Modell und den Poster verweisen. @patrickemin Wenn Sie etwas Zeit haben, könnten Sie bitte überprüfen, ob dies das Problem für Sie löst? Sie müssten die Komponente aktualisieren und dann alle 3D-Modell-Assets, die gelöscht wurden, erneut hochladen.

Alan, ich bin mir nicht sicher, ob das das Rätsel löst, aber es hat uns in der Vergangenheit beeinträchtigt, als es in diesem Bereich Fehler gab.

Verwaiste Uploads werden periodisch gelöscht. Als Teil eines Uploads sollten Sie einen Eintrag in der Tabelle uploads erhalten. Wenn dieser aus irgendeinem Grund fehlt, wird der Upload schließlich entfernt.

Könnte eine Untersuchungslinie sein.

Um das Upload-Modell zu überprüfen, können Sie von Ihrem Discourse-Verzeichnis aus in die Rails-Konsole wechseln und zum Beispiel Folgendes tun:

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

Prost

1 „Gefällt mir“

Ah, das ist nützlich zu wissen, danke Robert. Weißt du, ob es möglich ist, diese Prüfung oder etwas Äquivalentes auf gehostetem Discourse durchzuführen? Ich nehme an, nicht, also @patrickemin, wenn dein Server selbst gehostet ist, könnte dies eine gute Sache sein, die man überprüfen sollte.
Alternativ habe ich eine Docker-basierte lokale Einrichtung von Discourse, an der ich gearbeitet habe, bis ich aufgab und zu gehostetem Discourse wechselte. Dies könnte eine gute Ausrede sein, um dazu zurückzukehren. :slight_smile:

2 „Gefällt mir“

Etwas, das Sie mit dem Support klären müssten.

Wenn jedoch klar ist, dass dies mehreren Benutzern passiert, lohnt es sich meiner Meinung nach, dies auf einer selbst gehosteten Instanz zu untersuchen, bevor Sie ein Ticket erstellen.

Hallo, ich bin nach ein paar Monaten wieder da… Ich habe die Gelegenheit genutzt, dass Microsoft sein Copilot 2D-zu-3D-Modell veröffentlicht hat, um es zu testen, und Ihr TC funktioniert jetzt einwandfrei. Mit dem hinzugefügten Code sollte das Modell nicht mehr verschwinden. Sehen Sie hier.

1 „Gefällt mir“