戻る

3D惑星エディター

ブラウザで動くオフラインファーストの3D惑星エディター。9つの天体またはカスタムマップから始め、地形の起伏を造形し、雲、大気、太陽光を調整して、Tripoで生成したGLBオブジェクトを球面に配置。完成後はPNG、GLB、プロジェクトファイルとして書き出せます。

作者: Jared Liuソースコード
ライブで試す
3D惑星エディターライブで試す

このプロジェクトについて

Planet Makerはブラウザで動くオフラインファーストの3D惑星エディターです。水星から月まで9つの天体から選ぶか、自分の2:1マップをアップロードして新しい惑星を作成。地形の起伏を造形し、雲と大気を調整して太陽の向きを決め、3Dオブジェクト、ピンマーカー、ビルボードテキストを球面に配置します。すべての要素が曲面に沿った向きで置かれます。

軽量なCC0モデルを20点同梱し、Tripoの制作入口も内蔵しています。Tripoでカスタムモデルを生成し、GLBをアップロードして球面をクリックするだけで配置できます。すべてのデータはブラウザ内に留まり、アカウントもバックエンドも不要。完成した惑星はPNGスナップショット、GLBシーン、再編集可能な.planet.jsonプロジェクトとして書き出せます。PWAとしてインストールし、オフラインライブラリをダウンロードすれば、接続なしでも制作を続けられます。

体験ポイント

  1. 水星から月まで9つの天体から選ぶか、任意の画像をアップロード。ローカルで2:1の正距円筒図法サーフェスマップに切り抜きます
  2. 表面の起伏、粗さ、雲、大気、自動回転、太陽の向きをすべてスライダーで調整できます
  3. 20点のCC0モデルを内蔵。Tripoでカスタムモデルを生成し、GLBをアップロードして球面をクリックすれば、常に表面に沿った向きで配置されます
  4. PNGスナップショット、GLBシーン、再編集可能な.planet.jsonプロジェクトをワンクリックで書き出せます。PWAとしてインストールすれば、完全オフラインで制作を続けられます

技術解説

  • GLBオブジェクトパイプライン · Tripoの出力をそのまま球面へ

    オブジェクトパネルにはTripoの制作入口を内蔵。Tripoでカスタムモデルを生成してGLBをアップロードするだけで使えます。すべてのGLB(同梱の20点のCC0アセットを含む)は、まずBox3バウンディングボックスで正規化されます。中心を合わせ、底面を原点に固定し、最長辺を基準に均一スケーリングします。配置時には球面座標を位置とクォータニオンへ変換するため、どの緯度でもワンクリックで地表にぴったり接地します。

  • 惑星レンダリング · 1枚のテクスチャと物理ベースマテリアル

    惑星全体を1枚の2:1マップで描画します。meshPhysicalMaterialが同じ画像をカラーマップとバンプマップの両方に使い、bumpScaleが起伏スライダーになります。雲はalphaMap付きの別シェル(金星だけは不透明の特別仕様)、大気は加算合成のBackSide発光シェル、土星にはringGeometryを追加。太陽の方位角と高度で平行光源を動かし、影も追従します。

  • カスタム表面 · すべてローカルで処理

    アップロード画像がサーバーへ送られることはありません。createImageBitmapで読み込み、中央から2:1に切り抜いて幅を2048px以下に抑え、canvasでwebpへエンコードしてlocalStorageに保存します。アップロードしたカスタムGLBはメモリ上のobjectURLを使い、意図的にプロジェクトJSONには含めません。アカウントもバックエンドもなく、プロジェクトはブラウザデータとして保存されます。

    Canvas API
  • パフォーマンスとオフライン対応 · オンデマンドレンダリング + PWA

    frameloopは必要なときだけ動作します。自動回転を切るとdemandモードへ移行し、タブが非表示になると完全に停止。負荷が高いときはdprも自動で下げます。vite-plugin-pwaがアプリシェルと初期アセットを事前キャッシュし、書き出しパネルの「オフラインライブラリをダウンロード」で9つの惑星と20点のモデルをすべてキャッシュ。接続がなくても惑星制作を続けられます。