ブラウザ上で3D建築設計!WebGPUで動くオープンソースの建物エディタ — editor

pascalorg/editorTypeScript7.1k

Pascal Editorは、ブラウザ上で3Dの建築プロジェクトを作成・共有できるオープンソースのエディタです。壁や床、ドア、窓、家具などの建築要素をマウス操作で配置し、リアルタイムに3Dで確認しながら建物をデザインできます。WebGPU(ブラウザ内で高速な3D描画を行う最新技術)とReact Three Fiber(Webで3Dを扱うためのライブラリ)を組み合わせて動作するため、専用ソフトをインストールする必要がありません。建築の専門家だけでなく、間取りのアイデアを3Dで試したい一般の方にも使いやすい設計になっています。50回までの操作取り消し・やり直し機能や、フロアごとの表示切り替えなど、実用的な編集機能も備わっています。

🔥 なぜ話題?

WebGPUがブラウザで本格的に使えるようになり始めた今、インストール不要でブラウザだけで本格的な3D建築設計ができるオープンソースツールとして注目を集めています。特にReact + Three.jsエコシステムを活用した実践的なアーキテクチャ設計が開発者コミュニティで高く評価されています。

💡 こう使える!

たとえば自宅のリフォームを検討しているとき、ブラウザでPascal Editorを開き、壁ツールで部屋の間取りを描いて、ドアや窓をドラッグ配置し、家具を置いてみることで、改装後のイメージを3Dで立体的にシミュレーションして家族と共有できます。

ユースケース: ブラウザ上で建物の間取りや内装を3Dでデザインし、チームや家族と共有する

  • ブラウザだけで完結する3D建築エディタ — 専用ソフト不要
  • WebGPU対応で高速な3Dレンダリングを実現
  • 壁・床・天井・ドア・窓・家具などを直感的に配置可能
  • 50ステップのundo/redo(取り消し・やり直し)機能付き
  • npmパッケージとして3Dビューアやコア機能を自分のアプリに組み込める
GitHubで見る →

Create and share 3D architectural projects.

技術情報

言語

TypeScript

ライセンス

MIT

最終更新

2026-03-26

スター数

7,137

フォーク数

935

Issue数

27

技術詳細

アーキテクチャ

Pascal EditorはTurborepoによるモノレポ構成で、3つの主要パッケージに分離されています:

  • @pascal-app/core: ノードスキーマ定義、Zustandによるシーン状態管理、ジオメトリ生成システム、空間クエリ、イベントバス
  • @pascal-app/viewer: React Three Fiberによる3Dレンダリング、カメラ制御、ポストプロセッシング
  • apps/editor: Next.jsアプリケーション、UIコンポーネント、編集ツール、選択管理

ノードシステム

建築要素はフラットな辞書(Record<id, Node>)で管理され、親子関係はparentIdで表現されます。ノード階層は以下の通り:

Site → Building → Level → Wall/Slab/Ceiling/Roof/Zone/Scan/Guide
                    └── Wall → Item(ドア、窓)

各ノードはZodによるスキーマバリデーションが適用されています。

状態管理(3つのZustandストア)

ストアパッケージ役割
useScenecoreシーンデータ(ノードのCRUD)、IndexedDBへの永続化、Zundoによる50ステップのundo/redo
useViewerviewer表示状態(選択中のビルディング/レベル/ゾーン、レベル表示モード、カメラモード)
useEditoreditorエディタ固有の状態(アクティブツール、パネル状態)

ダーティノードによる差分更新

ノード変更時にdirtyNodesセットにIDが追加され、各システムがuseFrameループ内で差分のみを再計算する効率的な仕組みです。

システム(ジオメトリ生成)

  • WallSystem: マイタリング(角の接合処理)とCSG(ブーリアン演算)によるドア・窓の切り抜き
  • SlabSystem / CeilingSystem / RoofSystem: ポリゴンからの床・天井・屋根ジオメトリ生成
  • ItemSystem: 壁・天井・床へのアイテム配置と高さ計算
  • LevelSystem: stacked/exploded/soloモードでのフロア表示制御

空間管理

SpatialGridManagerがアイテム配置時の衝突検出・位置検証・スラブ標高計算を担当します。

イベントバス

mittベースの型付きイベントエミッターで、コンポーネント間通信を行います。wall:clickitem:entergrid:clickなどのイベントをサポート。

技術スタック

  • React 19 + Next.js 16
  • Three.js(WebGPUレンダラー)
  • React Three Fiber + Drei
  • Zustand + Zundo(状態管理 + undo/redo)
  • Zod(スキーマバリデーション)
  • three-bvh-csg(ブーリアンジオメトリ演算)
  • Turborepo + Bun(モノレポ管理・パッケージマネージャー)

npmパッケージ

@pascal-app/core@pascal-app/viewerはnpmで公開されており、自分のプロジェクトに3Dビューア機能を組み込むことが可能です。

ライセンス

MITライセンス(商用利用可能)

インストール・クイックスタート

開発環境のセットアップ

Bun(JavaScriptのパッケージマネージャー)が必要です。

# 依存パッケージをインストール
bun install

# 開発サーバーを起動(全パッケージのビルド+ホットリロード付き)
bun dev

# ブラウザで http://localhost:3000 を開く

本番ビルド

# 全パッケージをビルド
turbo build

# 特定パッケージのみビルド
turbo build --filter=@pascal-app/core

注意: 必ずリポジトリのルートディレクトリから bun dev を実行してください。

参考になる外部の関連記事

過去のトレンド履歴

関連リポジトリ

完全無料でプログラマーになれる!10万人以上が転職に成功した学習プラットフォーム — freeCodeCamp

freeCodeCamp/freeCodeCampTypeScript441.8k

freeCodeCampは、プログラミング・数学・コンピュータサイエンスを完全無料で学べるオンライン学習プラットフォームです。寄付で運営される非営利団体が提供しており、Webサイト制作からPython

美しいUIを「コピペ」で即導入!自分だけのコンポーネントライブラリを作ろう — ui

shadcn-ui/uiTypeScript109.0k

shadcn/uiは、美しくデザインされたUI部品(ボタン、入力欄、ダイアログなど)を自分のプロジェクトにそのまま取り込んで自由にカスタマイズできる、オープンソースのコンポーネント集&コード配布プラッ

Googleフォトはもういらない?自分のサーバーで写真・動画を管理できる高性能オープンソース — immich

immich-app/immichTypeScript97.1k

immichは、自分のサーバー(自宅のPCやクラウドサーバー)上で写真や動画を管理できるソフトウェアです。Googleフォトのような使いやすいインターフェースを持ちながら、データを自分自身で完全に管理

microsoft/typescript

microsoft/typescriptTypeScript95.0k

TypeScriptはJavaScriptに型システムを追加したプログラミング言語です。大規模なアプリケーション開発において、型安全性によりバグを事前に検出できます。VSCodeとの統合が優れており、

storybookjs/storybook

storybookjs/storybookTypeScript89.3k

Storybookは、UIコンポーネントを独立した環境で構築、文書化、テストするためのフロントエンド開発ツールです。React、Vue、Angularなど様々なフレームワークに対応し、コンポーネントを