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

pascalorg/editorTypeScript12.1k

Pascal Editorは、ブラウザ上で3Dの建築プロジェクトを作成・共有できるオープンソースのエディタです。壁を描いたり、ドアや窓を配置したり、床や天井を作ったりといった建物の設計作業を、3Dビューで直感的に行えます。WebGPU(ブラウザで高速な3D描画を可能にする最新技術)を活用しているため、滑らかな操作が期待でき、50段階の「元に戻す・やり直す」機能も備えています。建築やインテリアに興味のある人から、プロの設計者まで幅広く使えるツールで、作ったプロジェクトを他の人と共有することも可能です。

🔥 なぜ話題?

WebGPUという次世代のブラウザ3D描画技術に対応した本格的な建築エディタがオープンソースで公開されたことが大きな注目を集めています。React Three FiberやNext.js 16など最新の技術スタックを採用しつつ、npmパッケージとしてコアやビューアーを再利用できるモジュラー設計が、開発者コミュニティの関心を引いています。

💡 こう使える!

例えば、引っ越し先のマンションの間取りを3Dで再現したいとき、Pascal Editorを開いて壁ツールで部屋の形を描き、ドアや窓を配置し、家具をドラッグして置いていくことで、実際の部屋のイメージを立体的に確認しながら家具の配置計画を立てることができます。

ユースケース: ブラウザ上で3Dの間取りや建物を設計し、壁・ドア・窓・家具などを配置してプロジェクトとして共有する。

  • WebGPU対応でブラウザだけで高速な3D建築設計が可能
  • 壁・床・天井・ドア・窓・家具など建物の要素を直感的に配置できる
  • 50段階の元に戻す・やり直し機能やIndexedDBへの自動保存に対応
  • コア・ビューアー・エディタの3層構造でnpmパッケージとして再利用可能
  • React 19 + Next.js 16 + Three.jsという最新技術スタックで構築
GitHubで見る →

Create and share 3D architectural projects.

技術情報

言語

TypeScript

ライセンス

MIT

最終更新

2026-04-14

スター数

12,114

フォーク数

1,511

Issue数

31

技術詳細

アーキテクチャ

Turborepoによるモノレポ構成で、3つのパッケージに分離されている:

  • @pascal-app/core: ノードスキーマ定義、シーン状態管理(Zustand)、ジオメトリ生成システム、空間クエリ、イベントバス
  • @pascal-app/viewer: React Three Fiberによる3Dレンダリング、カメラ・コントロール、ポストプロセッシング
  • apps/editor: UIコンポーネント、ツール群、選択管理、エディタ固有の動作

ノードシステム

建物データは「ノード」という単位で管理され、フラットな辞書(Record<id, Node>)として保存される。ノード階層は以下の通り:

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

各ノードはZodスキーマでバリデーションされる。

状態管理

3つのZustandストアで状態を分離管理:

ストアパッケージ役割
useScenecoreシーンデータ、CRUD操作、IndexedDB永続化、Zundoによる50段階のundo/redo
useViewerviewer選択状態、レベル表示モード(stacked/exploded/solo)、カメラモード
useEditoreditorアクティブツール、パネル状態、エディタ設定

Systems(ジオメトリ生成)

React Three FiberのuseFrameループで動作し、「ダーティノード」(変更があったノード)のみを差分更新する仕組み:

  • WallSystem: マイター処理やCSG(ブーリアン演算)によるドア・窓の切り抜き
  • SlabSystem: ポリゴンから床ジオメトリを生成
  • CeilingSystem / RoofSystem: 天井・屋根のジオメトリ生成
  • ItemSystem: 壁・天井・床へのアイテム配置と高さ計算
  • LevelSystem: 階の表示モード制御(積層/分解/単独)

SceneRegistry

ノードIDとThree.jsオブジェクトのマッピングを高速に行うための仕組み。useRegistryフックでレンダラーが3Dオブジェクトを登録し、シーングラフを走査せずに直接アクセスできる。

イベントバス

mittベースの型付きイベントエミッターで、wall:clickitem:enterzone:context-menugrid:clickなどのイベントをコンポーネント間で通信。

空間グリッドマネージャ

衝突検出と配置バリデーションを担当。床・壁へのアイテム配置可否判定やスラブ標高の取得が可能。

エディタツール

  • SelectTool: 選択と操作
  • WallTool: 壁の描画
  • ZoneTool: ゾーン作成
  • ItemTool: 家具・設備の配置
  • SlabTool: 床スラブ作成

技術スタック

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

ライセンス

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

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

# 依存パッケージをインストール(Bunパッケージマネージャを使用)
bun install

# 開発サーバーを起動(ルートディレクトリから実行)
bun dev

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

本番用ビルド:

turbo build

npmパッケージとして利用する場合:

npm install @pascal-app/core
npm install @pascal-app/viewer

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

過去のトレンド履歴

関連リポジトリ

完全無料でプログラマーになれる!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など様々なフレームワークに対応し、コンポーネントを