Web-3D-model-public

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ファイルを一緒にアップロード可能

手順(簡易版):

  1. GitHubにアカウント作成(https://github.com)
  2. 新しいリポジトリ作成(例:3d-model-demo)
  3. HTMLファイルと model.glb をアップロード
  4. 設定 → 「Pages」 → ソースを「main」に設定
  5. 公開URLが表示される(例:https://yourname.github.io/3d-model-demo/)

✅ ここにindex.htmlを置けば、Webで3Dモデルが見れる!


2. Netlify

  • ドラッグ&ドロップで超簡単デプロイ
  • Git連携も可能、フォーム機能などもあり

手順(ドラッグ&ドロップ方式):

  1. https://app.netlify.com/drop にアクセス
  2. フォルダをZIPにまとめてドラッグ
    • 中に index.html と model.glb を入れておく
  3. 自動でホスティングされ、URLが発行される

✅ ログイン不要でもOK(ただし管理機能はログイン後)


3. Vercel

  • 開発者向けに人気、Next.jsと相性が良いが静的HTMLもOK

手順(GitHub連携):

  1. GitHubにコードをプッシュ(index.html と model.glb)
  2. https://vercel.com/ にログイン(GitHubアカウントでOK)
  3. 「New Project」→ 対象リポジトリを選択
  4. 自動でデプロイ&公開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>

🎁 おまけ:おすすめ中世モデルパック(無料)

  1. Sketchfab – Free Medieval Village Pack
  2. Quaternius – Medieval Pack
  3. Mixamo – Character + Walk animation

🙋‍♂️ まとめ

  • はい、中世の町中を人が歩くシーンを作るには、背景とキャラクター両方の**3Dモデル(アセット)**が必要です。
  • ほとんど無料で手に入りますが、GLB/gltf形式が一番Webと相性がいいです。
  • 最初は Sketchfab + Mixamo の組み合わせがめちゃ便利!

必要なら、「モデル選定→簡単なA-Frameコード生成」までお手伝いできますよ!
どんな感じの町とか人物を思い描いてます?リアル?ローポリ風?⛪🚶‍♀️

リアルでお願いします

かしこまりました!リアルな中世の町並みを背景に、人物が歩き続ける3DシーンをA-Frameで構築するための一式を以下にまとめます。


✅ 必要な3Dモデル

  1. 中世の町並みモデル
    1. 以下のSketchfabの無料モデルを使用します:
      • Medieval City Low Poly PBR Pack
        このパックには中世の建物や環境が含まれています。
        citeturn0search0
  2. 歩行アニメーション付きの人物モデル
    1. AdobeのMixamoを利用して、歩行アニメーション付きの人物モデルを取得します。

✅ モデルのダウンロード手順

  1. Medieval City Low Poly PBR Packのダウンロード
    • 上記のリンクからSketchfabのページにアクセスします。
    • 「Download 3D Model」ボタンをクリックし、GLTF形式でダウンロードします。
  2. 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>:背景の空の色を設定します。

✅ 次のステップ

  1. モデルの配置:ダウンロードしたmedieval_city.glbと変換したwalking_character.glbを、上記のHTMLファイルと同じディレクトリに配置します。
  2. HTMLファイルの実行:作成したHTMLファイルをブラウザで開き、シーンが正しく表示されることを確認します。
  3. 調整:必要に応じて、モデルの位置やスケール、アニメーションの速度などを調整します。

この手順に従っていただければ、リアルな中世の町並みを背景に、人物が歩き続ける3DシーンをA-Frameで構築できます。

もし追加のサポートが必要であれば、お気軽にお知らせください。

よかったらシェアしてね!
目次