spec-to-3d
建築図面や仕様書などのデータから、Three.js形式などで3D建物モデルを自動生成し、フロアプランの3D化や建築ビジュアライゼーション作成を効率化するSkill。
📜 元の英語説明(参考)
Generate 3D building models from architectural specifications, parsed drawings, or building code data. Outputs Three.js geometry, Pascal Editor JSON, or plain JSON for IFC conversion. Use when: converting floor plans to 3D, building spec-driven 3D models, generating architectural visualizations from structured data.
🇯🇵 日本人クリエイター向け解説
建築図面や仕様書などのデータから、Three.js形式などで3D建物モデルを自動生成し、フロアプランの3D化や建築ビジュアライゼーション作成を効率化するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o spec-to-3d.zip https://jpskill.com/download/15402.zip && unzip -o spec-to-3d.zip && rm spec-to-3d.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15402.zip -OutFile "$d\spec-to-3d.zip"; Expand-Archive "$d\spec-to-3d.zip" -DestinationPath $d -Force; ri "$d\spec-to-3d.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
spec-to-3d.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
spec-to-3dフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Spec to 3D -- モデルジェネレーターの構築
概要
構造化された建築データ(architectural-drawing-parserまたは手動の仕様書から)を3D建築モデルに変換します。Three.js(インタラクティブなウェブビューアー)、Pascal Editor JSON(BIMスタイルのノードグラフ)、plain JSON(IFC/GLB変換用)の3つの出力形式をサポートしています。architectural-drawing-parserおよびibc-building-codesと連携し、図面から3Dへのパイプラインの最終段階として機能します。
手順
パイプライン
建築図面 (image/PDF)
| architectural-drawing-parser
構造化された BuildingData JSON
| ibc-building-codes (検証)
検証済みの Building Data
| spec-to-3d (このスキル)
3Dモデル出力:
- Three.js Group (ウェブビューアー)
- Pascal Editor JSON (BIMノードグラフ)
- Building3D JSON (IFC/GLBエクスポート用)
入力要件
ジェネレーターは、以下の要素を持つBuildingDataオブジェクトを想定しています。
- stories --
{ permitted, actual }(階数) - units --
{ name, area: { sqft, sqm }, occupantLoad }の配列 (フロアごとのユニットタイプ) - height -- フィートおよびメートル単位の
{ permitted, actual } - occupancy および constructionType -- IBC検証コンテキスト用
生成ロジック
- 階高: IBC R-2住宅基準(居住可能な最小7'-0")に従い、デフォルトで9'-0"(2.74m)とします。
- ユニット寸法: 面積から1:1.5のアスペクト比(幅:奥行き)を使用して算出します。廊下沿いのユニットや奥行きの深いユニットの場合は上書きします。
- 壁の厚さ: 外壁は300mm、内壁の間仕切りは150mm(米国の木造フレーム標準)とします。
- レイアウト: 各フロアにユニットを横に並べ、150mmの戸境壁を設け、片側に共通の廊下(5'-0" / 1.52m幅)を配置します。
- 階段: 建物の端に2つの階段室を設け、幅4'-0" x 奥行き10'-0"とします。
- 部屋の細分化: ユニット面積に基づいて自動的に行います -- スタジオ(<50 sqm)、1ベッドルーム(50-70 sqm)、2ベッドルーム(>70 sqm)。
出力形式
| 形式 | ユースケース | 説明 |
|---|---|---|
json (Building3D) |
IFC変換、カスタムレンダラー | プレーンデータ: レベル、ユニット、部屋、壁、開口部 |
pascal (Pascal Editor) |
BIMワークフロー | サイト > 建物 > レベル > 壁/部屋の階層を持つノードグラフ |
threejs (THREE.Group) |
ウェブベースの3Dビューアー | 床、壁、窓のマテリアルを持つメッシュジオメトリ |
主要なインターフェース
interface Building3D {
levels: Level3D[];
totalHeight: number; // メートル
footprintWidth: number;
footprintDepth: number;
}
interface Level3D {
elevation: number; // 地盤からの高さ (メートル)
height: number; // 階高 (メートル)
units: Unit3D[];
corridors: Box3D[];
stairs: Stair3D[];
}
interface Unit3D {
type: string;
position: { x: number; y: number; z: number };
width: number; depth: number; height: number; // メートル
rooms: Room3D[];
walls: Wall3D[];
openings: Opening3D[];
}
例
例 1: 建物仕様から3Dモデルへの変換
ある開発者が、3階建てのR-2アパートのIBCコンプライアンスシートからデータを解析し、視覚化のために3Dモデルを生成したいと考えています。
入力 BuildingData:
occupancy: R-2, constructionType: V-B, sprinklerSystem: NFPA 13
stories: { permitted: 4, actual: 3 }
units:
- Type A: 834 SF (77.5 sqm), 5 occupants
- Type B: 645 SF (59.9 sqm), 4 occupants
生成された Building3D (format: "json"):
Level 0 (1階): elevation 0.00m, height 2.74m
Type A: 幅 7.19m x 奥行き 10.78m (2ベッドルームレイアウト: リビング、キッチン、主寝室、ベッド2、バス2)
Type B: 幅 6.32m x 奥行き 9.48m (1ベッドルームレイアウト: リビング、キッチン、寝室、バス)
Corridor: 建物の全幅 x 奥行き 1.52m
建物の端に2つの階段室
Level 1: elevation 2.74m, height 2.74m (同じレイアウト)
Level 2: elevation 5.49m, height 2.74m (同じレイアウト、上階に階段なし)
Total height: 8.23m
Footprint: ~13.66m x 10.78m
Wall count: 各フロアに外壁12 + 内壁8
Openings: ユニットごとにドア1 + 窓2
例 2: IFC互換出力の生成
ある建築家が、IFC/BIMワークフローで使用するために建物データをエクスポートする必要があります。彼らは、サイト > 建物 > レベル > 要素の階層にマッピングされるPascal Editor JSONを生成します。
入力: 例1と同じ3階建てのR-2建物
出力形式: "pascal"
生成された Pascal Editor JSON:
{
"nodes": {
"site_1700000000": { "type": "site", "parentId": null },
"building_1700000000": { "type": "building", "parentId": "site_...", "width": 13.66, "depth": 10.78, "height": 8.23 },
"level_0": { "type": "level", "name": "Ground Floor", "elevation": 0.00, "height": 2.74 },
"level_1": { "type": "level", "name": "Level 1", "elevation": 2.74, "height": 2.74 },
"level_2": { "type": "level", "name": "Level 2", "elevation": 5.49, "height": 2.74 },
"wall_0_0": { "type": "wall", "parentId": "level_0", "start": { "x": 0, "y": 0 }, "end": { "x": 7.19, "y": 0 }, "thickness": 0.30, "isExterior": true },
"room_0_0": { "type": "room", "parentId": "level_0", "name": "Living Room", "roomType": "living", "width": 4.31, "depth": 4.31 },
... (3つのレベル全体で合計60以上のノード)
},
"rootNodeIds": ["site_1700000000"]
}
このJSONは、Pascal Editorに直接インポートするか、ifcopenshellを使用してIFCに変換できます。
ガイドライン
- 階高はデフォルトで9'-0"(2.74m)です。ソース図面で特に指定されている場合は上書きしてください。
- ユニットのアスペクト比はデフォルトで1:1.5です。廊下沿いのユニットや奥行きの深いユニットでは、1:2以上が必要になる場合があります。
- 窓とドアの位置はアルゴリズムで生成されます。図面からの実際の位置については、
architectural-drawing-parserの部屋抽出を使用してください。 - Three.js出力は、単純なボックスジオメトリを作成します -- マスモデルや空間検証には適していますが、フォトリアリスティックなレンダリングには適していません。
- 本番環境でのBIM使用には、Pascal Editor JSONにエクスポートし、BIMツールで調整してください。
- 階段のジオメトリは簡略化されています(ボックス表現)。詳細な階段モデリングには、専用のBIMツールが必要です。
- すべての寸法は内部的にはメートル単位です。フィート単位の入力データは、1 ft = 0.3048 mを使用して変換されます。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Spec to 3D -- Building Model Generator
Overview
Convert structured architectural data (from architectural-drawing-parser or manual specs) into 3D building models. Supports three output formats: Three.js (interactive web viewer), Pascal Editor JSON (BIM-style node graph), and plain JSON (for IFC/GLB conversion). Works as the final stage in a drawing-to-3D pipeline alongside architectural-drawing-parser and ibc-building-codes.
Instructions
Pipeline
Architectural Drawing (image/PDF)
| architectural-drawing-parser
Structured BuildingData JSON
| ibc-building-codes (validation)
Validated Building Data
| spec-to-3d (THIS SKILL)
3D Model Output:
- Three.js Group (web viewer)
- Pascal Editor JSON (BIM node graph)
- Building3D JSON (for IFC/GLB export)
Input Requirements
The generator expects a BuildingData object with:
- stories --
{ permitted, actual }(number of floors) - units -- Array of
{ name, area: { sqft, sqm }, occupantLoad }(unit types per floor) - height --
{ permitted, actual }in feet and meters - occupancy and constructionType -- for IBC validation context
Generation Logic
- Floor-to-floor height: Default 9'-0" (2.74m) per IBC R-2 residential standard (7'-0" minimum habitable)
- Unit dimensions: Derived from area using 1:1.5 aspect ratio (width:depth). Override for corridor-loaded or deep units
- Wall thickness: 300mm exterior, 150mm interior partitions (US wood frame standard)
- Layout: Units placed side-by-side per floor with 150mm party walls, common corridor along one side (5'-0" / 1.52m wide)
- Stairs: Two stairwells at building ends, 4'-0" wide x 10'-0" deep
- Room subdivision: Automatic based on unit area -- studio (<50 sqm), 1-bed (50-70 sqm), 2-bed (>70 sqm)
Output Formats
| Format | Use Case | Description |
|---|---|---|
json (Building3D) |
IFC conversion, custom renderers | Plain data: levels, units, rooms, walls, openings |
pascal (Pascal Editor) |
BIM workflows | Node graph with site > building > level > wall/room hierarchy |
threejs (THREE.Group) |
Web-based 3D viewer | Mesh geometry with materials for floors, walls, windows |
Key Interfaces
interface Building3D {
levels: Level3D[];
totalHeight: number; // meters
footprintWidth: number;
footprintDepth: number;
}
interface Level3D {
elevation: number; // meters above grade
height: number; // floor-to-floor in meters
units: Unit3D[];
corridors: Box3D[];
stairs: Stair3D[];
}
interface Unit3D {
type: string;
position: { x: number; y: number; z: number };
width: number; depth: number; height: number; // meters
rooms: Room3D[];
walls: Wall3D[];
openings: Opening3D[];
}
Examples
Example 1: Converting a Building Spec to a 3D Model
A developer has parsed data from an IBC compliance sheet for a 3-story R-2 apartment building and wants to generate a 3D model for visualization.
Input BuildingData:
occupancy: R-2, constructionType: V-B, sprinklerSystem: NFPA 13
stories: { permitted: 4, actual: 3 }
units:
- Type A: 834 SF (77.5 sqm), 5 occupants
- Type B: 645 SF (59.9 sqm), 4 occupants
Generated Building3D (format: "json"):
Level 0 (Ground Floor): elevation 0.00m, height 2.74m
Type A: 7.19m wide x 10.78m deep (2-bedroom layout: living, kitchen, master bed, bed 2, 2 baths)
Type B: 6.32m wide x 9.48m deep (1-bedroom layout: living, kitchen, bedroom, bath)
Corridor: full building width x 1.52m deep
2 stairwells at building ends
Level 1: elevation 2.74m, height 2.74m (same layout)
Level 2: elevation 5.49m, height 2.74m (same layout, no stairs above)
Total height: 8.23m
Footprint: ~13.66m x 10.78m
Wall count: 12 exterior + 8 interior per floor
Openings: 1 door + 2 windows per unit
Example 2: Generating IFC-Compatible Output
An architect needs to export the building data for use in an IFC/BIM workflow. They generate Pascal Editor JSON that maps to a site > building > level > element hierarchy.
Input: Same 3-story R-2 building as Example 1
Output format: "pascal"
Generated Pascal Editor JSON:
{
"nodes": {
"site_1700000000": { "type": "site", "parentId": null },
"building_1700000000": { "type": "building", "parentId": "site_...", "width": 13.66, "depth": 10.78, "height": 8.23 },
"level_0": { "type": "level", "name": "Ground Floor", "elevation": 0.00, "height": 2.74 },
"level_1": { "type": "level", "name": "Level 1", "elevation": 2.74, "height": 2.74 },
"level_2": { "type": "level", "name": "Level 2", "elevation": 5.49, "height": 2.74 },
"wall_0_0": { "type": "wall", "parentId": "level_0", "start": { "x": 0, "y": 0 }, "end": { "x": 7.19, "y": 0 }, "thickness": 0.30, "isExterior": true },
"room_0_0": { "type": "room", "parentId": "level_0", "name": "Living Room", "roomType": "living", "width": 4.31, "depth": 4.31 },
... (60+ nodes total across 3 levels)
},
"rootNodeIds": ["site_1700000000"]
}
This JSON imports directly into Pascal Editor or can be converted to IFC using ifcopenshell.
Guidelines
- Floor-to-floor height defaults to 9'-0" (2.74m); override if the source drawing specifies otherwise
- Unit aspect ratio defaults to 1:1.5; corridor-loaded or deep units may need 1:2 or higher
- Window and door positions are generated algorithmically; use
architectural-drawing-parserroom extraction for actual positions from drawings - The Three.js output creates simple box geometry -- suitable for massing models and spatial validation, not photorealistic rendering
- For production BIM use, export to Pascal Editor JSON and refine in a BIM tool
- Stair geometry is simplified (box representation); detailed stair modeling requires a dedicated BIM tool
- All dimensions are in meters internally; input data in feet is converted using 1 ft = 0.3048 m