皆様、こんにちは。
このコンポーネントを使用すると、ユーザーは Google モデルビューアコンポーネント を使用して、投稿に 3D モデルを追加できます。私は、Photogrammetry SaaS Beholder のユーザーが、新しくなった Discourse フォーラム で作成したモデルを共有できるように、このコンポーネントを作成しました。他の人も役立つかもしれないと思い、ここに共有することにしました。同様のコンポーネントが見つかりませんでしたが、非常に簡単な検索しか行っていません…
コンポーネントの使用方法を示す手順とスクリーンショットは以下のとおりです。
このコンポーネントに関するフィードバックやご意見をいただけると幸いです。私が使用しているモデルビューアコンポーネントにはかなりの機能があり、その機能の一部をユーザーに公開することで、このコンポーネントを拡張する余地はかなりあると思われます。私は、insert video および mermaid コンポーネントをコピー、貼り付け、変更してこのコンポーネントを作成したため、Discourse コンポーネントの作成経験が豊富な方にコードを確認していただき、間違いを指摘していただけると非常にありがたいです。
よろしくお願いいたします。
アラン
使用方法
コンポーネントがインストールされると、ユーザーはコンポーザーの新しい立方体アイコンをクリックして、投稿に 3D モデルを追加できるようになります。

現在、3D ビューアは 3D モデルをすぐにダウンロードして表示するのではなく、ポスター(カスタマイズ可能)を表示し、ユーザーが「3D モデルを読み込む」ボタンをクリックしたときにのみモデルを読み込みます。この考え方は、帯域幅が限られているユーザーを支援するためです。
管理者設定
ユーザーがこのコンポーネントでモデルをアップロードできるようにするには、許可された拡張機能のリストに .gltf および .glb を追加する必要があります。
また、最大添付ファイルサイズの制限を引き上げる必要があるでしょう。

これは、ホストされている Discourse でこのコンポーネントを使用する上での主な制限事項である可能性が高いです。ホストされている Discourse では、低価格プランでは最大サイズが 30MB に制限されています。しかし、ユーザーに巨大なファイルをアップロードさせたくないのは当然であり、Draco メッシュ圧縮をサポートするプログラムで生成された場合、.glb および .gltf ファイルはサイズを大幅に削減できます。
「いいね!」 20
数日間は機能しましたが、現在はロードボタンが機能しなくなりました(Firefox、Chrome、Firefoxモバイルでテスト済み)。
「いいね!」 2
おっと!これは良くないですね。お知らせいただきありがとうございます。
私のフォーラムでも同じことが起こりました。投稿を見ると、数日後にDiscourseがアップロードされたポスター画像と3Dモデルはもはや必要ないと判断し、サーバーから削除したのだと思います。
サイトでは、モデルとポスターを再アップロードすることで一時的に「修正」しましたが、Discourseのテーマドキュメントを読んで、きちんと修正する方法を探すつもりです。テーマコンポーネントを作成した際にざっと見たところ、アセットが投稿で参照されている限り、サーバー上に保持されるとドキュメントに書かれていましたが、どういうわけか、このコンポーネントが投稿に入れるURLはそうしていないようです。他のプラグイン開発者の方で、これについてアドバイスがあれば、大変ありがたいです… 
「いいね!」 2
現在の私の理論では、モデルビューアを参照するマークダウンを作成すると、アップロードされたモデルのURLが、投稿をスキャンして使用済みアップロードを認識するロジックに適した形式になっていないのではないかということです。
現在、Discourseでファイルをアップロードする他の2つの場所を確認しています。画像/ファイルアップロードモーダルでは、「short_url」への参照が保持されており、これはリソースをダウンロードするためにブラウザが使用する最終的なURLではなく、upload:// という形式になっています。そのため、これを使用する方法を見つける必要があるかもしれません。あるいは、私のコンポーネントのベースとなった GitHub - discourse/discourse-insert-video コンポーネントは、リソースURLを直接使用しています。そのコンポーネントに同じバグがある(可能性は低い
)か、あるいはそれらのURLはマークダウンメッセージにHTMLタグとして挿入されるため認識されているかのどちらかです(モデルビューアタグはHTMLタグのホワイトリストにないため、私はそれを実行できません)。
これが現在の私の考えですが、全く別の原因である可能性もあります。では、Discourseサイトで孤立したアップロードを識別するコードを探しに行きます…
「いいね!」 2
こんにちは。
返信が遅くなり申し訳ありません。先週は契約の仕事で手一杯でした。
いずれにせよ、もう一度確認したところ、アップロードが有効か無効かを決定するコードを特定できたと思います。投稿を処理するサーバーサイドコードには、投稿で参照されているアップロードされたファイルのリストを生成する ‘each_upload_url’ というルーチンがあります。
私はRuby開発者ではありませんが、私の理解によれば、定義済みのHTMLタグのリストによって参照されるURLを探しています。そのため、私がコピーした挿入ビデオテーマコンポーネントでは、任意の <source> HTML要素の src 属性がアップロードとして認識され、任意の <video> HTML要素の poster 属性がアップロードとして認識されます。しかし、私の挿入3Dモデルコンポーネントでは、<model-viewer> HTML要素がリストに含まれていないため、参照されているアセットはアップロードとして認識されず、数日後に削除されます。
これに対する長期的な修正は、サーバーサイドコードを変更して、model-viewer属性をアップロードのソースとして認識させることかもしれませんが、現時点では、アップロードへのリンクを示す明示的な <a> HTMLタグを挿入することで回避できると思います。
理解が正しいかどうかを確認するために Bug カテゴリに投稿しますが、万が一私の理解が正しかった場合、挿入されたモデルとポスターを参照する非表示の <a> タグを投稿に挿入する、挿入3Dモデルテーマコンポーネントの修正を提出しました。@patrickemin お時間があれば、これが問題を解決するかどうか確認していただけますか?コンポーネントを更新し、削除された3Dモデルアセットを再アップロードする必要があります。
アラン、これが謎を解くのに役立つかわかりませんが、過去にこの分野でバグがあった際に私たちに影響を与えたことがあります。
孤立したアップロードは定期的に削除されます。アップロードの一部として、uploads テーブルにエントリが作成されるはずです。何らかの理由でそれが欠落している場合、アップロードは最終的に削除されます。
調査すべき点かもしれません。
アップロードモデルを確認するには、Discourse ディレクトリから Rails コンソールに入り、たとえば次のように実行します。
./launcher enter app
rails c
Upload.last(3)
よろしくお願いします。
「いいね!」 1
それは知っておくと便利ですね、ロバートさん。ホストされているDiscourseでそのチェックまたは同等のことを実行できるかご存知ですか?おそらくできないと思いますが、@patrickemin、もしあなたのサーバーがセルフホストされているなら、これはチェックするのに良いことかもしれません。
あるいは、DiscourseのローカルセットアップをDockerベースで持っていますが、諦めてホストされているDiscourseに移行するまで作業していました。これは、それに復帰する良い口実になるかもしれません。
「いいね!」 2
サポートに問い合わせる必要があることですが、複数のユーザーに発生していることが明らかであれば、チケットを送信する前にセルフホストインスタンスで調査する価値があると思います。
こんにちは、数ヶ月ぶりに戻ってきました…MicrosoftがCopilot 2Dから3Dモデルへの変換をリリースする機会を利用してテストしたところ、TCは正常に動作しており、コードを追加すればモデルは消えなくなります。こちらをご覧ください。
「いいね!」 1