FIELD GUIDE3D・空間づくり

読書コーナーを3Dにする。絵から、測れる空間へ

実際に作ったGLBとBlenderファイルで、寸法・配置・面数・書き出し後の読み戻しを確かめる。

3D・空間づくり読む20〜25分・実践60〜120分内容確認 2026-10-22
できるようになること
  • 画像と3Dデータの違いを説明できる
  • 形・材質・配置・単位を切り分けて修正できる
  • 書き出し後のモデルを数値で検証できる
  • 実GLBの8角・32角比較と再計測から、表示サイズに合う形を選べる
前提と必要なもの
  • 読むだけなら3Dソフト不要。
  • 実践はBlender。添付モデルは4.3.2で検証。
読書コーナーを3Dにする。絵から、測れる空間への編集図解
寸法のある読書コーナーの編集図解。本文にはBlenderで実際に制作・書き出し・読み戻ししたモデルを掲載しています。

「部屋の絵」と、「中に物を置ける3D」は違う

画像生成で素敵な読書コーナーを描けても、机の幅を測ったり、裏側から見たり、ゲームに配置したりできるとは限りません。3Dでは、形・大きさ・位置・材質をデータとして持たせます。ここでは3m×2mの架空の空間に、本棚・ベンチ・丸テーブルを置く小さなモデルを作ります。

AIはレイアウト案、部品への分解、Blender用スクリプトの下書きを手伝えます。サイズや移動を正確にしたい部分は数値で決め、出力をもう一度読み込んで確かめます。

これは展示・ゲーム向けの教材です

モデルと画像はAI ATLASがコードで作成し、Blender 4.3.2で実際に書き出したものです。3D生成サービスの出力ではありません。実在の図書室の計測記録や、家具の製作・建築・避難経路の安全設計として使用しないでください。

完成例: 小さな読書コーナー

実際に3Dデータから描画した読書コーナー。本棚、緑のベンチ、丸テーブル、青いラグを配置した二面の壁のある空間
Blenderで制作・描画した教材モデル。壁の手前側を省いた、内部が分かる見せ方です。

3DモデルGLBを保存 · Blender編集ファイル · 再現用Python

部分設定した大きさ役割
床幅3.00m×奥行2.00mほかの物の大きさを比べる基準
本棚外形の幅1.20m×奥行0.30m×高さ1.20m直方体の組み合わせ
ベンチ座面幅1.00m×奥行0.45m×厚さ0.12m寸法変更を試す対象
丸テーブル天板直径0.60m×厚さ0.06m円柱の分割数と見た目を比べる対象

GLBにはモデルと材質を含めています。描画用のカメラ・照明はGLBに含めず、編集ファイル側に残しました。別のビューアーでは照明や色管理が違うため、同じモデルでもこの画像と完全に同じ見え方とは限りません。

初級: まず完成モデルを回して、1つだけ変える

必要なもの

読むだけなら掲載画像と寸法表で学べます。実践はBlenderを使用します。この教材は4.3.2で検証したもので、最新バージョンという意味ではありません。バージョンによってメニューやPython APIが変わる場合があります。

  1. 編集ファイルを開く: 自分の作業を保存してから、ダウンロードした .blend を開きます。添付データに外部テクスチャやネット接続は不要です。
  2. 視点を変える: 正面だけでなく上・横から見ます。画像では分からなかった厚み、重なり、隙間を探します。
  3. 座面を選ぶ: オブジェクト一覧で Bench_seat を選びます。オブジェクトは、位置や回転を個別に扱える部品です。
  4. 幅だけを変更: Item(アイテム)の Dimensions(寸法)でXを1.00mから1.20mにします。Y・Zや本棚は変えません。
  5. 上から比べる: 壁や本棚に食い込まないか、脚の位置が合っているか確認。座面だけを広げたので、脚の間隔は自動では変わらないことに注目します。
  6. 別名で保存: 元の版と変更版を残し、何を変えたかを名前やメモで区別します。
Blender 4.3.2の実画面。Bench_seatがオレンジで選択され、右のItemパネルにDimensions X 1m、Y 0.45m、Z 0.12mと表示されている
Blender 4.3.2で付属の編集ファイルを開いた実画面。2026年10月22日03:28 JST、dotクラウド環境で撮影。座面を選択して寸法を表示した状態で、変更前のXは1mです。AI生成サービスの画面ではありません。原寸の画面でラベルを読む。

座面の幅を変えるのは、右側のDimensions(寸法)のXです。その上のLocation(位置)XやScale(倍率)と取り違えないようにします。画面の破線はカメラの写す範囲で、範囲外の物は最終画像に入りません。これは編集画面であり、上の完成画像とは照明や表示方法が違います。Blender公式マニュアル: カメラビューも参照できます。

「メッシュ」は頂点・辺・面で作られた形、「マテリアル」は表面の色や光の反射の設定です。形を変えずに色だけ変える場合はマテリアルを編集します。明るくしたいだけなのに形を作り直す必要はありません。

AIへの最初の依頼

Blender 4.3.2で、ゲーム展示用の読書コーナーを作ります。
床は幅3m、奥行2m。実在建物の設計ではなく、見た目を検討する教材です。
本棚、ベンチ、丸テーブルを、直方体と円柱へ分解してください。
各部品の「名前、位置XYZ、幅・奥行・高さ、材質」を表にしてください。
単位はm、BlenderではZが高さ。床上面をZ=0とします。
先に寸法の整合性と重なりを説明し、コードはまだ実行しないでください。
外部素材、ネット通信、追加アドオンは使いません。

最初にAIへ完成画像だけを求める方法も、雰囲気の検討には役立ちます。しかし、今回のように寸法と配置が目的なら、部品表と数値を作る方が検証しやすくなります。

中級: 形の生成と、正確な配置を分業する

A: 画像から自由な形を作る

向く題材: 岩、飾り、架空の生き物など、厳密な寸法より見た目が大切なもの。

見る点: 裏側、穴、細い部分、面の流れ、材質。正面の入力画像がよくても、見えていない形が意図通りとは限りません。

B: 基本形を数値で組み立てる

向く題材: 本棚、机、ブロック型の建物など、幅・高さ・配置を追いたいもの。

見る点: 部品の寸法と接続。自由な彫刻は苦手でも、同じ寸法の部品を繰り返し作りやすくなります。

この完成例はBを採用しました。理由は「写実的だから」ではなく、読者が3m・2m・1mという数字から自分で変更を確かめられるからです。飾りだけ生成モデルを使い、家具と配置は数値で管理する組み合わせもあります。

見た目が変になったときの切り分け

症状原因の候補確かめ方と修正
別のソフトで100倍になる単位や変換の解釈が違う1mの基準物を一緒に読み込み、設定を確認。見た目で縮めて済ませない
面がちらつく・黒い模様同じ位置に面が重なっている近接した部品を分けて観察。板を内側へ収め、重複面を減らす
ある方向から面が消える面の向き(法線)が逆、または裏面非表示表裏表示を確認し、意図した外向きへ直す。透明材質の問題と分ける
曲面だけ角ばる円柱の分割数や陰影の設定輪郭と陰影を別に見る。分割数を増やす前に必要な画面サイズを確認
書き出すと色が違う材質の非対応、照明、色管理単純な材質で比較し、最終表示先で確認。画像とモデルの問題を混同しない

制作中、この教材でも棚板と側板の面が重なる箇所を見直しました。棚板を側板の内側へ収める寸法に変更しています。見栄えの不具合を、照明を暗くして隠すのではなく、幾何学の原因から修正する例です。

実測比較: 8角と32角、どちらを採用する?

同じ半径0.30m・厚さ0.06m・材質で、円柱の分割数だけを8と32へ変えたGLBを実際に書き出しました。下の図は説明用に適当な多角形を描いたものではなく、それぞれのGLBから天板の頂点を読み出した輪郭です。元の読書コーナーは変更していません。

実GLBから描いた8角と32角の天板。原寸直径300pxでは8角の角ばりが目立ち、48pxでは差が小さくなる。三角形数は28対124
上から見た輪郭の比較。破線は同じ半径の理想の円です。図の原寸で直径300pxと48pxへ投影しています。照明、影、実機の動作速度を測った図ではありません。

8角の天板GLB · 32角の天板GLB · 頂点と測定結果JSON

測ったもの8角32角
天板1個の三角形数28124
GLBのサイズ2,952 bytes8,144 bytes
円から内側へ入る最大のずれ約22.84mm約1.44mm
直径300pxでの同じずれ約11.42px約0.72px
直径48pxでの同じずれ約1.83px約0.12px

「ずれ」は、頂点を結ぶ直線が、同じ半径の円よりどれくらい内側にあるかです。小数の丸めにより値はわずかに変わります。これは実物の製作誤差ではなく、CGの輪郭の近似を比較する値です。

近くで見せる展示用

丸い天板として大きく見せたいなら32角を採用します。今回の300pxの図では、8角の約11pxのずれを無視しにくいためです。陰影をなめらかにする設定だけでは、外側の輪郭は丸くなりません。

小さな背景小物

角ばった絵柄が意図に合い、表示先で許容できるなら8角も候補です。三角形は96面減りますが、この1個の差でゲームが何fps速くなるかは測っていません。48pxでも差は0ではないので、実際の画面で決めます。

いま数値と図から言えるのは「輪郭とデータ量の差」です。材質数・影・配置数・端末が違うゲームの速度まで、同じ表から結論にしません。

上級: 画像ではなく、データのまま検証する

完成画像だけでは、見えない裏面やデータ量は分かりません。GLBを書き出した後、新しい空のシーンへ読み戻し、形・寸法・材質が残るか確認します。GLBはglTFのバイナリー形式で、3Dの受け渡しに使われます。元の編集履歴や全機能がそのまま保存される形式とは限りません。

このモデルで実測したこと

  • 制作・書き出し環境: Blender 4.3.2。
  • メッシュ46個、三角形換算792面。GLBは84,624 bytes。
  • GLBを空のシーンに読み戻し、46メッシュ・792三角形を確認。
  • 床の寸法3.00m×2.00m×0.12mを読み戻し後にも確認。
  • 外部テクスチャ画像は0。単色のマテリアルで構成。

三角形数が少なくても、それだけでゲーム内の速度は保証できません。物体や材質の数、影、テクスチャ、描画回数、端末、ほかのシーン内容も影響します。ここでは複数の本を個別部品にして編集しやすくしています。大量配置する用途なら、形を共有するインスタンスや、必要に応じた結合を検討します。

実習: 測定コードをダウンロードして確かめる

3つのGLB・測定コード・テストのZIP · GLBを読むPython · 元モデルの実行結果。Python 3.9以降の標準ライブラリだけで、入力ファイルを変更せずに実行できます。

python inspect_glb.py reading-corner.glb --expect-reading-corner
python inspect_glb.py table-8.glb
python inspect_glb.py table-32.glb
  1. 大きな数だけを先に確認: 元モデルは meshNodes が46、trianglesInMeshDefinitions が792、images が0。比較天板はそれぞれ1メッシュ、28面・124面です。
  2. 寸法の軸を見る: 元モデルのFloor_3m_x_2mはglTFのYが上なので、寸法はX・Y・Zの順で3.00・0.12・2.00m。Blenderへ戻すと3.00・2.00・0.12mです。軸順の違いをサイズ間違いと混同しません。
  3. 品質の警告を確認: この3ファイルでは面積がほぼ0の三角形と、長さが1から外れた法線は0でした。これだけで穴、物同士の貫通、法線が外向きか、材質の見え方までは保証しません。
  4. 条件違反を検査: --expect-reading-corner は元モデル用です。床の拡大率を100倍へ変えた例は、面数が同じでも拒否するテストを含めています。「ファイルが読めた」と「意図した大きさだった」を分けます。

このコードは、教材で使う圧縮なしのGLBの一部仕様に絞っています。圧縮拡張や疎なデータ形式は推測で読み進めず停止します。完全なglTF規格適合を認証する道具ではありません。また、出力する寸法は基本的にメッシュ自身の座標で、親子関係を全部合成した実世界の寸法ではありません。元モデルの床は拡大・回転がないことも別に検査しています。

Blenderで読み戻す検査も、手順を残す

読み戻し検査コードを保存して、次を実行します。このコードはシーンを空にします。作業を保存し、専用のバックグラウンド実行で使ってください。GLBそのものは変更せず、寸法と三角形数を読み直します。

blender --background --python-exit-code 1 --python verify_glb_in_blender.py -- reading-corner.glb --expect-reading-corner --report my-import-check.json

Blender 4.3.2で実行済みの元モデルの検査結果と2つの天板の検査結果があります。元の床は読み戻し後も3×2×0.12m、天板も28面・124面でした。この検査は配置の変換を含む寸法を測りますが、ゲーム内の描画速度や実物の安全性は測りません。

比較モデル・輪郭図・失敗テストまで再現する

比較モデルを作るコードは、8角と32角の天板だけを、新しいフォルダーへ作ります。既存フォルダーは上書きしません。これもシーンを空にするため、未保存の作業がない状態で使います。

blender --background --python-exit-code 1 --python build_table_comparison.py -- --out table-rebuilt

同じフォルダーへ置いた輪郭図を描くコードは、配布GLBまたは作り直したGLBから、頂点を読み出してSVGと測定JSONを作ります。inspect_glb.py も必要です。

python compare_table_silhouettes.py table-8.glb table-32.glb --out my-comparison.svg --report my-comparison.json

検査用テストは python glb_lab_test.py で実行できます。元モデル、比較図の全頂点との対応、ファイルの欠損、不正な頂点番号、誤った寸法、100倍の床、不対応の圧縮など15件を実行済みです。故意に壊す例は一時ファイル内だけで作り、配布元を変更しません。

スクリプトで再現する

添付の build_scene.py を保存し、Blenderがコマンドとして使える環境で次を実行します。これは新しい空のシーンを作り、同じフォルダーへGLB・Blenderファイル・画像を書き出すコードです。既存の作業を保存してから、専用フォルダーで実行してください。

blender --background --python-exit-code 1 --python build_scene.py

AIから受け取った別のスクリプトは、そのまま実行せず、ファイルの削除、外部通信、追加パッケージ、既存シーンを消す処理がないか読んで確認します。バージョンが違ってエラーになる場合は、バージョン・エラー全文・止まった行を渡し、変更を小さく限定します。

数値と見た目、どちらも残す

採用するモデルには、参照画像、元の指示、使用ソフトとバージョン、寸法、書き出し形式、ファイルサイズ、確認した表示先を記録します。生成モデルを使った場合は、そのサービスの利用条件と入力素材の権利も追加します。

「glTFはYが上、BlenderはZが上」という座標系の違いを意識しつつ、標準のエクスポーターが変換する部分と、自分で補正する部分を混同しないでください。読み込み後に傾いたからといって、場当たり的に全オブジェクトを回転すると二重変換になる場合があります。

3方向と、1回の読み戻しで確かめる

  1. 正面・横・上から見て、物体の食い込みや不自然な隙間がないか確認した。
  2. 単位と寸法を数値で確認し、基準の床や物と比較した。
  3. 書き出したGLBを新しいシーンへ読み戻し、形と材質を確認した。
  4. 目的のゲームやビューアーで、色・速さ・向きを確認した。
  5. 利用条件と、モデルが何の用途に適するかを説明できる。

この教材ではBlenderでの生成・描画・GLB読み戻しを実行済みです。ゲームエンジンやAR機器への取り込み、実機での性能測定、実物の家具としての安全性は未検証です。完成画像からそれらまで保証されたと考えないようにします。

出典と、さらに読む資料

サービスの機能や技術は一次情報を参照。練習課題と比較例は、AI ATLASの編集制作です。

  1. Blender Python API Quickstart (official source) Blender Foundation / Blender contributors · 確認 2026-10-22 · Pythonからシーン・メッシュ等を扱う仕組みと、スクリプト実行方法。教材コード自体はBlender 4.3.2で実行確認。
  2. glTF: The 3D Asset Delivery Format Khronos Group · 確認 2026-10-22 · glTFの目的と、GLBでモデル・シーンをまとめられること。
  3. glTF 2.0 Specification Khronos Group · 確認 2026-10-22 · 座標系・単位、ノードの変換、メッシュ、マテリアル、GLB構造の一次仕様。
  4. Scenes and Nodes Khronos Group · 確認 2026-10-22 · シーンの階層と位置・回転・拡大縮小の関係を理解する資料。
  5. Camera View — Blender Manual Blender Foundation / Blender contributors · 確認 2026-10-22 · カメラビューと破線枠の役割。掲載する実画面自体は、付属モデルをBlender 4.3.2で開いて撮影。
分野・レッスン・ツール・用語を横断して探せます
ESC で閉じるAI ATLAS / SEARCH