Web上で3Dモデルを公開する方
Web上で3Dモデルを公開する方法はいくつかあります。用途や技術レベルによって選べますが、ここでは一般的な手段をいくつか紹介します:
✅ 1. 専用プラットフォームを使う(手軽)
Sketchfab
- 3Dモデルをアップロードするだけで、Web上でインタラクティブに表示できる。
- 自動でビューワーが生成され、他のサイトに埋め込みも可能(YouTubeの動画のように)。
- GLB、OBJ、FBXなどの形式に対応。
- 無料プランあり。
p3d.in
- 簡易的な3Dビューワーを提供。
- ファイルをアップロードするだけ。
- 軽量でシンプル、ブログやポートフォリオサイト向け。
✅ 2. 自前でWebページに埋め込む(カスタマイズ自由)
【Three.js】を使う
- JavaScriptライブラリで、WebGLを使って3Dモデルを表示。
- 完全に自由にカスタマイズ可能(ズーム、回転、アニメーションもOK)。
- GLB / glTF の読み込みに対応。
<!-- HTML例:Three.js + GLB --> <script src="https://cdn.jsdelivr.net/npm/three@0.152.0/build/three.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/three@0.152.0/examples/js/loaders/GLTFLoader.js"></script> <canvas id="webgl"></canvas> <script> const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000); const renderer = new THREE.WebGLRenderer({canvas: document.getElementById('webgl')}); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); const loader = new THREE.GLTFLoader(); loader.load('model.glb', function (gltf) { scene.add(gltf.scene); camera.position.z = 5; renderer.setAnimationLoop(() => { gltf.scene.rotation.y += 0.01; renderer.render(scene, camera); }); }); </script>
✅ 3. WordPressなどCMSで表示
- WordPress用のプラグイン(例: Model Viewer for WordPress)を使えば、HTMLやショートコードで埋め込みが可能。
- <model-viewer> タグを使う方法が一般的。
<model-viewer src="model.glb" auto-rotate camera-controls></model-viewer> <script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"></script>
✅ 4. Unity / Babylon.js / PlayCanvas などのエンジンを使う
- より高機能な3D体験(ゲームやシミュレーション)を提供したい場合。
- ただし学習コストは少し高め。
🔧補足:ホスティングについて
- モデルファイル(例:model.glb)はWebサーバーやCDNにアップロードする必要あり。
- GitHub Pages、Netlify、Vercelなどで無料ホスティングも可。
必要なら、具体的な例(Three.jsでのGLBモデル表示など)も一緒に作成できますよ。どの方向が気になってますか?
google viewer a-frame qt はつかえますか
いい質問です!それぞれの技術(Google Model Viewer, A-Frame, Qt)は、用途に応じて3Dモデルの表示に使えます。ただし、それぞれの「得意分野」や「使える場所」が違います。
以下に、それぞれの特徴と使いどころを比較してみます:
✅ 1. Google Model Viewer
概要:
- <model-viewer> というWeb用のタグ(カスタムエレメント)。
- GLB/gltf をHTMLだけで表示可能。
- Webサイトで3Dモデルを表示する最も手軽な方法の一つ。
特徴:
- 📱 スマホ対応(ARモードもあり)
- ⚙️ 回転・ズーム・自動回転がHTML属性だけで設定できる
- 🚫 カスタマイズ性はあまり高くない(複雑なシーン向けではない)
使用例:
<model-viewer src="model.glb" auto-rotate camera-controls></model-viewer> <script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"></script>
✅ 2. A-Frame
概要:
- WebVR/WebXRフレームワーク。HTMLライクなタグで3DやVRシーンを簡単に構築できる。
- その上でThree.jsが動いている。
特徴:
- 🥽 VR・WebXR向けに強い
- 🧱 HTMLだけで3D空間を作れる
- 🎮 ゲーム的な操作や空間が得意
- 💻 軽くカスタマイズしたいWebアプリに最適
使用例:
<a-scene> <a-assets> <a-asset-item id="model" src="model.glb"></a-asset-item> </a-assets> <a-entity gltf-model="#model" position="0 0 -5" rotation="0 180 0"></a-entity> </a-scene>
✅ 3. Qt(C++)
概要:
- Webではなく、**ネイティブアプリ(デスクトップ)**での3Dモデル表示に使う。
- Qt3D や QtQuick3D でGLB/gltfを表示可能。
- ローカルでの高性能表示・制御に向いている。
特徴:
- 💻 ネイティブアプリに向いている(オフライン使用OK)
- 🎞️ アニメーション、回転、ズームなど細かく制御可能
- 💡 OpenGLベースでパフォーマンス高め
- 🧠 ただし、やや学習コストあり
使用例(Qt Quick 3D):
import QtQuick3D 1.15 View3D { width: 800 height: 600 PerspectiveCamera { position: Qt.vector3d(0, 0, 600) } Model { source: "model.glb" position: Qt.vector3d(0, 0, 0) scale: Qt.vector3d(2, 2, 2) } }
🔚 まとめ:どれを使えばいい?
技術 主な用途 向いてる人 Google Model Viewer Webで簡単に表示 コードをあまり書きたくない人 A-Frame Webで3D空間やVR体験 Web制作が得意な人、VR表示したい人 Qt (C++) ローカルアプリ向け ネイティブアプリ開発者
もし、「Webでも表示したいし、Qtでもローカルで動かしたい」みたいな要望があれば、GLB形式の3Dモデルを共通で使うと良いです。
用途に応じてビューワーを切り替える形がベストです。
気になる選択肢があれば、もう少し詳しくセットアップ方法も説明できますよ!どれを試してみたいですか?
補足:ホスティングについて モデルファイル(例:model.glb)はWebサーバーやCDNにアップロードする必要あり。 GitHub Pages、Netlify、Vercelなどで無料ホスティングも可。 を、詳しく教えて
了解です!では、3Dモデル(例:model.glb)をWebでホスティング(公開)する方法を、初心者向けにわかりやすく解説します。
✅ そもそも「ホスティング」って何?
3DモデルをWeb上で表示するには、**インターネット上にファイルを置く場所(=ホスティング)**が必要です。
これにより、<model-viewer> や Three.js などのWeb技術からそのファイルを読み込めるようになります。
🔰 無料で使えるホスティングサービス3選 + 使い方
1. GitHub Pages
- 無料・広告なし・信頼性高
- GitHubにコードやモデルをアップして、静的Webサイトとして公開
- HTML + GLBファイルを一緒にアップロード可能
手順(簡易版):
- GitHubにアカウント作成(https://github.com)
- 新しいリポジトリ作成(例:3d-model-demo)
- HTMLファイルと model.glb をアップロード
- 設定 → 「Pages」 → ソースを「main」に設定
- 公開URLが表示される(例:https://yourname.github.io/3d-model-demo/)
✅ ここにindex.htmlを置けば、Webで3Dモデルが見れる!
2. Netlify
- ドラッグ&ドロップで超簡単デプロイ
- Git連携も可能、フォーム機能などもあり
手順(ドラッグ&ドロップ方式):
- https://app.netlify.com/drop にアクセス
- フォルダをZIPにまとめてドラッグ
- 中に index.html と model.glb を入れておく
- 自動でホスティングされ、URLが発行される
✅ ログイン不要でもOK(ただし管理機能はログイン後)
3. Vercel
- 開発者向けに人気、Next.jsと相性が良いが静的HTMLもOK
手順(GitHub連携):
- GitHubにコードをプッシュ(index.html と model.glb)
- https://vercel.com/ にログイン(GitHubアカウントでOK)
- 「New Project」→ 対象リポジトリを選択
- 自動でデプロイ&公開URLが表示される
✅ 複数の環境(preview, production)も使える
📦 フォルダ構成例(HTML+GLB)
/3d-model-demo ├── index.html └── model.glb
index.html で以下のように読み込めばOK:
<model-viewer src="model.glb" auto-rotate camera-controls></model-viewer> <script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"></script>
📎 注意点
- ファイル名の大文字小文字は区別される(例:Model.glb ≠ model.glb)
- Webサーバー上では model.glb のMIMEタイプが適切でないと読み込めない場合あり(上記3サービスなら大丈夫)
✨ おすすめは?
- とにかく早く試したい → ✅ Netlifyのドロップ方式
- 自分でコード管理したい → ✅ GitHub Pages
- アプリ連携やCI込みでやりたい → ✅ Vercel
気になるサービスがあれば、実際にアップロードして表示するサンプルを一緒に作ることもできますよ。
どの方法を試してみたいですか?それとも今あるHTMLとモデルで公開してみますか?
A-Frame と Three.js の関係は
めっちゃいい質問です!
A-FrameとThree.jsの関係は、「親子関係」とも「ラッパー構造」とも言えます。
ざっくり言うと…
✅ A-Frame は Three.js を ベースに作られたフレームワーク
用語 役割 Three.js WebGLを使って、3Dを直接描画するライブラリ A-Frame Three.jsを内部で使って、もっと簡単に3D/VRを作れるHTMLフレームワーク
🔧 技術的な関係性(どう動いてるの?)
- A-Frame は Three.jsの機能を内部で呼び出して使っている
- つまり、あなたが <a-entity> などを書いた時、裏では Three.js の Scene, Mesh, Camera などが生成されている
- A-Frame = Three.jsのHTML版ラッパー+VR/WebXRの機能を追加
📌 例で比較してみよう
👇 A-Frameで書く場合(超簡単)
<a-scene> <a-box position="0 1 -3" color="tomato" rotation="45 45 0"></a-box> </a-scene>
👇 Three.jsで同じことをする場合(JavaScriptで書く)
const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(...); const renderer = new THREE.WebGLRenderer(); document.body.appendChild(renderer.domElement); const geometry = new THREE.BoxGeometry(); const material = new THREE.MeshStandardMaterial({ color: 'tomato' }); const cube = new THREE.Mesh(geometry, material); cube.position.set(0, 1, -3); cube.rotation.set(Math.PI/4, Math.PI/4, 0); scene.add(cube); // ライトやアニメーション、カメラ処理なども自前で書く必要あり
→ Three.jsは柔軟だけど、記述が多くて複雑になりやすい。
🎯 どちらを使うべき?
特徴 A-Frame Three.js 学習コスト 超低い(HTML書くだけ) 高い(JavaScriptで全部書く) カスタマイズ 限定的(ただし拡張は可能) 完全自由にカスタム可能 対象 初心者、デザイナー、VR開発 中~上級のWebエンジニア、ゲーム開発
🧩 補足:A-FrameでもThree.jsを併用できる
実は、A-Frameの中でも直接Three.jsのオブジェクトを使うこともできます!
AFRAME.registerComponent('custom-mesh', { init: function () { const mesh = new THREE.Mesh( new THREE.TorusKnotGeometry(1, 0.3, 100, 16), new THREE.MeshStandardMaterial({ color: 'hotpink' }) ); this.el.setObject3D('mesh', mesh); } });
→ これで「A-Frameの簡単さ」と「Three.jsの自由さ」を両立できる!
✅ まとめ
質問 回答 A-FrameとThree.jsの関係は? A-FrameはThree.jsをベースにしたHTMLライクなフレームワーク 一緒に使える? もちろんOK!高度なことをする場合はThree.jsを併用できる どっちがいい? 手軽に始めたいならA-Frame、本格的に作り込みたいならThree.js
興味あるなら、「A-Frameで始めて、Three.jsで高度化」するステップアップ構成もアリですよ!
使ってみたいモデルとかシーンの例があれば、一緒にサンプルも作りますよ。試してみます?
中世の町中を、人が歩くシーンは? model や assets が必要ですか?
うん、そういう「中世の町中を人が歩いているシーン」を作るには、基本的に以下のような**3Dアセット(素材)**が必要になります!
✅ 必要なモデル(assets)
🏘️ 1. 中世の町並み(背景・建物)
- 石造りの家、城壁、市場、小道、街灯、井戸など
- 建物は 複数種類のモデルを使うとリアル感が出る
- できれば「LOD対応」(遠くでは低詳細)のものが理想
🚶♂️ 2. 歩く人のモデル(アニメーション付き)
- 中世の衣装を着た人型キャラ(男性・女性など)
- 「歩行アニメーション(walk cycle)」付きモデルが必要
- GLB/gltf形式で「リギング(骨組み)」と「アニメーション」が含まれているのが理想
🌳 3. 小物・自然物
- 木、ベンチ、看板、馬車、樽、バケツなど
- 道や床のテクスチャ(石畳など)もあるとリアル
✅ どこでモデルを探せる?
以下のサイトで「無料 or 商用OK」なアセットが探せます:
🔍 建物・小物・環境(中世テーマ)
サイト 概要 Sketchfab 「medieval」「village」などで検索。GLB形式でDL可能。 Poly Haven 高品質な無料モデル(建物や道など)あり。完全無料・CC0。 Kenney Assets ローポリ中心。ゲーム向けの中世アセットもあり。 Quaternius ローポリで軽量、中世系パックが無料DL可。
🔍 人物モデル・アニメーション
サイト 概要 Mixamo 無料で人型モデル+アニメーションを自動生成できる! Ready Player Me キャラ作成→GLB出力可能。やや現代風。 Character Creator 本格派。有料メイン。
✅ シーン作成に使えるプラットフォーム
方法 向いているシーン構築方法 A-Frame 手軽に組み立てられる。Walkアニメーションは少し工夫必要。 Three.js アニメーションやカメラ移動の制御がしやすい。 Unity/Unreal ゲームレベルでのシーン構築。がっつり作り込みたいなら◎
✅ 実際に作るとしたら…
例:A-Frameでの簡単な構成
<a-scene> <!-- 地面 --> <a-plane src="stone_texture.jpg" rotation="-90 0 0" width="50" height="50"></a-plane> <!-- 中世の家 --> <a-entity gltf-model="house.glb" position="2 0 -5"></a-entity> <!-- 歩く人(アニメーション付きGLB) --> <a-entity gltf-model="walking_person.glb" position="0 0 -2" animation-mixer></a-entity> <!-- 環境設定 --> <a-light type="directional" position="1 1 0"></a-light> <a-sky color="#88ccee"></a-sky> </a-scene>
🎁 おまけ:おすすめ中世モデルパック(無料)
- Sketchfab – Free Medieval Village Pack
- Quaternius – Medieval Pack
- Mixamo – Character + Walk animation
🙋♂️ まとめ
- はい、中世の町中を人が歩くシーンを作るには、背景とキャラクター両方の**3Dモデル(アセット)**が必要です。
- ほとんど無料で手に入りますが、GLB/gltf形式が一番Webと相性がいいです。
- 最初は Sketchfab + Mixamo の組み合わせがめちゃ便利!
必要なら、「モデル選定→簡単なA-Frameコード生成」までお手伝いできますよ!
どんな感じの町とか人物を思い描いてます?リアル?ローポリ風?⛪🚶♀️
リアルでお願いします
かしこまりました!リアルな中世の町並みを背景に、人物が歩き続ける3DシーンをA-Frameで構築するための一式を以下にまとめます。
✅ 必要な3Dモデル
- 中世の町並みモデル
- 以下のSketchfabの無料モデルを使用します:
- Medieval City Low Poly PBR Pack
このパックには中世の建物や環境が含まれています。
citeturn0search0
- Medieval City Low Poly PBR Pack
- 以下のSketchfabの無料モデルを使用します:
- 歩行アニメーション付きの人物モデル
- AdobeのMixamoを利用して、歩行アニメーション付きの人物モデルを取得します。
✅ モデルのダウンロード手順
- Medieval City Low Poly PBR Packのダウンロード
- 上記のリンクからSketchfabのページにアクセスします。
- 「Download 3D Model」ボタンをクリックし、GLTF形式でダウンロードします。
- Mixamoでの人物モデルの取得
- Mixamoにアクセスし、Adobeアカウントでログインします。
- 適切なキャラクターモデルを選択します。
- 「Walk」アニメーションを適用し、In Placeオプションを無効にします(これにより、実際に前進するアニメーションになります)。
- 「Download」ボタンをクリックし、FBX形式でダウンロードします。
✅ モデルの変換
ダウンロードしたFBX形式の人物モデルをA-Frameで使用するために、GLB形式に変換します。
- 方法1:オンラインコンバーターを使用
- glTF Converterなどのオンラインツールを利用して、FBXからGLBに変換します。
- 方法2:Blenderを使用
- BlenderにFBXファイルをインポートし、エクスポート時にGLB形式を選択して保存します。
✅ A-FrameのHTMLコード
以下は、ダウンロードしたモデルをA-Frameで表示し、人物が中世の町を歩き続けるシーンを構築するためのHTMLコードです。
<!DOCTYPE html> <html> <head> <script src="https://aframe.io/releases/1.4.2/aframe.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/aframe-extras@6.1.1/dist/aframe-extras.min.js"></script> </head> <body> <a-scene shadow="type: pcfsoft"> <!-- 環境光 --> <a-light type="ambient" color="#888"></a-light> <!-- 平行光源 --> <a-light type="directional" position="5 10 5" intensity="1" castShadow="true"></a-light> <!-- 地面 --> <a-plane rotation="-90 0 0" width="100" height="100" color="#777" shadow></a-plane> <!-- 中世の町並み --> <a-entity gltf-model="medieval_city.glb" position="0 0 -10" scale="1 1 1" shadow></a-entity> <!-- 歩行する人物 --> <a-entity id="walker" gltf-model="walking_character.glb" position="-5 0 -5" animation-mixer shadow animation="property: position; to: 5 0 -5; dur: 8000; easing: linear; loop: true"> </a-entity> <!-- 空 --> <a-sky color="#cceeff"></a-sky> </a-scene> </body> </html>
✅ コードのポイント
- <a-light>:環境光と平行光源を設定し、シーン全体を照らします。
- <a-plane>:地面を作成します。
- <a-entity>(町並み):中世の町並みモデルをシーンに配置します。
- <a-entity>(人物):歩行アニメーション付きの人物モデルを配置し、animation属性で左右に歩き続ける動きを設定します。
- animation-mixer:モデル内のアニメーションを再生します。
- animation:positionプロパティを変更して、左右に移動するアニメーションを設定します。
- <a-sky>:背景の空の色を設定します。
✅ 次のステップ
- モデルの配置:ダウンロードしたmedieval_city.glbと変換したwalking_character.glbを、上記のHTMLファイルと同じディレクトリに配置します。
- HTMLファイルの実行:作成したHTMLファイルをブラウザで開き、シーンが正しく表示されることを確認します。
- 調整:必要に応じて、モデルの位置やスケール、アニメーションの速度などを調整します。
この手順に従っていただければ、リアルな中世の町並みを背景に、人物が歩き続ける3DシーンをA-Frameで構築できます。
もし追加のサポートが必要であれば、お気軽にお知らせください。