見えない自分が、消えた中野サンプラザをAIと編みなおした30秒——Claude CodeのBlender MCPで点群映像を作った記録


🏛️ 消えた建物の話

中野駅前に、半世紀のあいだ、逆ピラミッドの形をした白い建物が立っていた。

中野サンプラザ。2023年7月に役目を終え、いまはもう物理的にはない。

私はあれを、数十年前、自分の目で世界を見ていた頃に、実際に見ている。中野駅の改札を出てすぐ正面に立ちふさがっていた、あの白い逆ピラミッド。記憶はもうおぼろだ。それでも、形だけは頭の奥に残っている。

そのあと私は視力を失った。中野サンプラザのほうも、私が視力を失ってからは一度も「見て」いないまま解体された。建物が消えていくのと、私の視覚がなくなっていくのが、別の場所で同時に進んでいた感じだ。

この記事は、その輪郭をデータの粒で30秒の動画にした、そこに至るまでの記録だ。

📦 開けられなかった箱

中野サンプラザの3Dデータが、中野区と東京都から CC-BY 4.0 で公開されていることは、公開された直後から知っていた。年単位で前の話だ。

知っていたから、すぐ自分で触ろうとした。

まずWindowsに Blender をインストールした。けれど、これはGUI操作を前提にした道具だった。マウスでビューポートを回し、メニューを開き、スライダーを動かす。音声パソコンと相性のいい操作系ではない。

そこで「Blenderというアプリを、Python経由でコントロールしてしまえばいいのではないか」と思った。Blenderの bpy モジュールを使えば、起動から読み込み、レンダリング、書き出しまで、すべてスクリプトで動かせるはずだ。

実際にコードを書き始めた。

ここで壁にぶつかる。Pythonという言語は、インデント(行頭の字下げ)そのものが構文の一部だ。半角スペース4つぶんずれただけで、コードはまったく違うブロックとして解釈されるか、そもそも実行できなくなる。

視覚を持たない人間が、メモ帳のような汎用エディタで、このインデントを正確に合わせていく作業は、極めて困難である。スクリーンリーダーは行頭のスペースを読み上げてくれる。深さを耳で数えながら一行ずつ確認していくのは、コードが数百行を超えたあたりで実用の閾値を超える。括弧やコロンの組み合わせなら一文字単位で確認できる。「同じ深さの字下げが続いているか」を耳だけで保証するのは、別種の労力だった。

道具の使い方は、検索すれば情報が出てくる。けれど、それを 見ずに、テキストのログだけで組み上げていく ことと、Pythonのインデントを音声環境で正確に保ち続ける ことを同時にやるのは、当時の自分には届かなかった。

私はそこで挫折した。

データのありかは、ずっと頭の中にあった。けれど、開ける道具を持っていなかった。

🗝️ 数年越しに、開く鍵が届いた

数年のあいだ、その「開かなかった箱」のことは、ときどき思い出していた。

そこへ、Claude Code に Blender MCP という新しい接続口が来た。

MCP(Model Context Protocol)は、AIが外部のソフトウェアを操作するための共通の窓口だ。Blender MCPを通すと、Claude Code(Opus 4.7)が、私の言葉を受けてBlenderの内部で直接Pythonを実行できる。

平たく言うと、私が画面を見ながらマウスでボタンを押す代わりに、AIがBlenderの中で直接命令を実行してくれる、という状態に近い。

「外観の点群を読み込んで」「カメラを建物のまわりに円を描いて回らせて」「色は下から上にシアン、青、マゼンタで」と日本語で投げると、Claude Code が裏でコードを書き、Blender に流し込み、結果のレンダリングを返してくれる。

Pythonのインデントは、Claude Code 側が責任を持つ。私はインデントを耳で数えなくていい。

数年前ひとりで戦ったときに足りなかったのは、Blenderの分厚いマニュアルを音声環境で翻訳してくれる相手と、インデントの深さを保証してくれる代理人だった。今回はその両方がいた。

棚に戻していた箱を、もう一度降ろした。

🧭 制作の道のり

完成までに9つのフェーズを踏んだ。詳しい工程は記事の後半に置いておく。ここでは記憶に残った場面だけ書く。

第三者AIが返してきた、最初のひとこと

最初に作ったのは、簡易な3Dモデル(BIMマスモデル)を使った外観動画だった。

私には見た目を確かめる手がない。だからレンダリング結果を ChatGPT に上げて、「どう見えるか」を聞いた。

返ってきた言葉が、これだった。

「これは椅子か、玉座のように見えます」

中野サンプラザの逆ピラミッドが、粗いポリゴンと反射床のせいで、巨大な椅子に見えてしまっていた。データの粒度が足りない。

笑ってしまった。同時に、これは手応えだとも思った。私には見えない映像が、誰かにはちゃんと何かに見えている。第三者AIの目を借りて、初めて「見え方」が手の中に入った瞬間だった。

方針転換のあとに、現れたもの

方針を変え、東京都が公式に出している 2億2000万点の点群LAS(8GBの巨大ファイル)を、500万点までダウンサンプリングして Blender に渡した。

Z軸・XY軸のノイズを切り、中心をそろえ、発光する粒として描画する。

書き出したファイルを ChatGPT に送ったら、こう返ってきた。

「窓格子のグリッドがはっきり出ています」

椅子は、消えた。

代わりに、中野サンプラザの規則正しい窓のリズムが、データの粒のなかから現れていた。粗いポリゴンでは出せなかった「あの建物」のテクスチャが、点群というデータ形式のおかげで、ようやく立ち上がった。

ある角度のときだけ、表に出る

モバイル型LiDARの点群だけでは色情報がなかった。

そこで航空レーザ点群(こちらは色情報を持っている)を追加でマージし、合計572万点に増やした。カメラの周回半径も少し広げ、寄りすぎを緩和した。

新しい動画を1秒ごとに静止画にして ChatGPT に渡したら、何枚目かを見て、こう書いてきた。

「13秒目と18秒目、逆三角錐のシルエットが立ち上がっています」

中野サンプラザの代表的なフォルム——下が細くて、上が広がる、あの逆ピラミッド——が、点群のなかに、確かに含まれていた。

ただ、正面のカメラでは見えなかった。斜め45度の角度のときだけ、表に立ち上がる。データが足りないと思っていたが、足りなかったのは角度のほうだった。

最後の調整、第三者AIとの往復

ChatGPT の次の評価は「雰囲気は9点、造形は7点。光が強すぎて階段や入口の細部が飛んでいる」だった。

Claude Code と相談しながら、マテリアルのEmission、露出、ブルームのしきい値、最上段のマゼンタの濃さ、わずかな陰影用のサンライトを、一気に調整した。

ChatGPT の再評価は「完成度はかなりあります。未来の都市模型を、暗い展示室で眺めている感じです」。

ここで、映像は固まった。

私のワークフローは、こうなっていた。Claude Code が手を動かし、ChatGPT が目になり、私が判断する。3人で1本の動画を作っていた。

ナレーションと、令和5年の問題

ナレーションは、自分で書いた。

音声合成には、私が以前、自分の声でコーパスを読み上げて学習させた、ライセンスが私自身に帰属する話者モデルを使った。

モデルの名前は「new_ジャリバン」。Style-Bert-VITS2(Bert-VITS2のフォーク)のJP-Extra構成で動かしている、自前の音声だ。AIに音声を作らせる、というよりは、自分の声を AI に代わりに読ませる、というほうが近い。

最初に書いた原稿の冒頭は、こうだった。

「2023年7月、半世紀東京中野駅前に立っていた中野サンプラザは、その役目を終えました。」

ところがTTSに通すと、「2023」が「2、2、3」と部分的に読み飛ばされてしまう。

漢数字「二〇二三年」も試したが、「〇(まる)」の読みが不安定。

最終的にたどり着いたのは、「令和5年、7月」 という混合表記だった。「れいわごねん、しちがつ」と確実に読まれる。元号というレガシーな表記が、いちばん合成音声に馴染んだ。

最終原稿は、5回書き直して、こうなった。


🎬 完成した映像

YouTubeショート(30秒・縦動画)。

私自身は、完成した映像を直接見ることができない。色の設計、カメラの動き、逆三角錐の立ち上がり方——AIに任せた表現が、本当に「中野サンプラザに見える」か、破綻なく成立しているか、最後の確認は見える方の目に委ねるしかない。

AIの文責と表現が正しいか、違和感や気づいたことがあれば、YouTubeのコメント欄かnoteのコメント欄で教えてもらえると、ありがたい。

🌃 コンセプト

視覚を持たない私が、視覚作品を生み出す。

この矛盾は、Claude Code が手を動かし、ChatGPT が目になり、私が判断する、という分担のなかで、ひとつの制作ワークフローに変わった。

スキャンデータの分布を数値として理解し、カメラワークを言語で設計し、色彩をデータ構造として制御する。視覚を介さない自分の前で、消えた建物が、データの粒から、夜空にもう一度立った。

✏️ おわりに

「0から1へ。1が大きいなら、0.1で」。これは私のスローガンだ。

数年前、私は自分でWindowsにBlenderを入れて、Python経由でコントロールしようとして、挫折した。データのありかは知っていたのに、開ける道具がなかった。Pythonのインデントを音声環境で揃えるという、ひどく地味な壁の前で、私の手は止まった。

今回、Claude CodeのBlender MCPと、ChatGPTの第三者の目と、自分の声で読んだ合成音声で、ようやくその箱が開いた。

開いた中から出てきたのは、たった30秒の動画だ。572万点という数字は大きく聞こえるが、フルデータ2.2億点の3%にも届かない。他のエリア(エントランス、大ホール、チャペル、レストラン)は、まだ手付かずだ。

数十年前にこの目で見た中野サンプラザを、視覚を失った自分が、データの粒で、もういちど夜空に立たせた。

0が、0.1になった。

次もまた、0.1で続けていく。

📎 お時間があればこちらの記事もぜひ

中野サンプラザの30秒を作るまでに、「音とテキストだけで映像を作る」「AIを第三の目にする」「白杖映像で同じやり方を試す」という、地続きの記事を書いてきた。今回の制作と一緒に読むと、見えない人間がどうやって映像を組み立てているかの厚みが見えやすくなると思う。

音とテキストだけで作る映像クリエイター
https://note.com/kind_fish6099/n/n77aa0bc2f387

全盲の二人がAIを「第三の目」にして記事を書いた話
https://note.com/kind_fish6099/n/n2d6370489787

全盲の私がAIで映像を作る理由 白杖に目をつけたショート動画の裏側
https://note.com/kind_fish6099/n/n9cd194888b81

🧰 詳細な技術メモ(興味がある方へ)

ここから先は、同じような構成を試したい人向けの、技術的な裏側だ。

使った道具

  • Claude Code(Opus 4.7、CLI版)、WSL2上で起動

  • blender-mcp 1.5.6(Claude CodeからBlenderへの接続口)

  • Linux Blender 4.2 LTS(同じWSL2内に配置し、blender-mcp経由で接続)

  • laspy 2.7.0(巨大LASのチャンク読み込み)

  • Style-Bert-VITS2 JP Extra(自前コーパスで学習させた new_ジャリバン モデル)

  • ffmpeg 4.2.3(libx264対応のLinuxビルド済みバイナリ)

制作9フェーズの概要

  • Phase 1:MCP環境の準備(WSL2上でLinux Blender起動、MCP設定)

  • Phase 2:BIM 5エリア統合版(没。Blenderが7時間ハング)

  • Phase 3:外観のみの縦動画化(「椅子か玉座か」問題)

  • Phase 4:高解像度点群LASへの方針転換

  • Phase 5:Hovermap点群419万点版(窓格子が現れる)

  • Phase 6:航空レーザ点群との合成、合計572万点(逆三角錐シルエットの発見)

  • Phase 7:白飛び修正、露出・Emission・Bloom調整

  • Phase 8:ナレーション制作、「令和5年」問題の解決

  • Phase 9:BGM合成と最終マージ

技術的につまずいた代表的なところ

  • Blender 7時間ハング:反射床削除+PNG連番出力+別ターミナルからのプロセス監視で解決

  • ffmpegにlibx264が入っていない問題:libx264対応のLinuxビルド済みバイナリ(4.2.3)を導入

  • HovermapのLASにRGBがない:intensityをグレースケール扱いし、Z軸の高さに応じたColorRamp(下シアン、中央青、上マゼンタ)で発色

  • LAS Z軸トリミング失敗:1%サンプルでヒストグラムを取り、Z_FLOOR=30、Z_CEILING=105で固定

点群レンダリングのコア処理

laspy の chunk_iterator を回して、2.2億点を逐次読み込み、500万点までランダムに間引き。中心化とスケール正規化のあと、Blenderの Mesh.from_pydata で全点を頂点として配置。Geometry Nodes の Mesh to Points で発光する粒として描画し、Attribute(intensity)× ColorRamp(Z位置)× Mixノード(Multiplyモード)× Emission で色とエネルギーを乗せる。

Cycles 設定は、persistent data ON、caustics OFF、バウンス制限、OpenImageDenoise。これでハングを回避しながら、720フレーム(30秒・1080×1920縦)を書き出した。

使用データ・クレジット

音声について

  • 話者モデル:new_ジャリバン

  • 学習エンジン:Style-Bert-VITS2(Bert-VITS2のフォーク)JP-Extra構成

  • コーパス:私自身が読み上げて録音した音声

  • ライセンス:話者モデル本体は私(ジャリバン先生)に帰属

制作支援AI・サービス

  • Claude Code(Anthropic, Opus 4.7)

  • blender-mcp(オープンソース)

  • ChatGPT(第三者レビュー、品質改善フィードバック)

#視覚障害 #全盲クリエイター #ClaudeCode #BlenderMCP #点群 #アクセシビリティ

いいなと思ったら応援しよう!

この記事が参加している募集