メインコンテンツへスキップ
見出し画像

松江城をBlenderで開いた。Geminiに「何城?」と聞いてみた

    黒い板壁に瓦屋根が幾重にも重なり、石垣を組む石の色まで見える松江城が、観光サイトでもゲームでもなく、自作の3Dビューアーの画面に姿を現した。国土交通省のProject PLATEAUが公開した3D都市モデルをChatGPT WorkでBlender形式に変換し、約10.5 MBのファイルを実際に開いて確かめた。さらに画面をスクリーンショットに撮り、別のAIであるGeminiに「何城?」と聞いてみると、城の名前だけでなく、思いがけない細部まで読み取った答えが返ってきた。

    画像
    自作のBlend Viewerで開いた松江城天守のLOD3.3モデル

    自作のBlend Viewerで開いた松江城天守のLOD3.3モデル。国土交通省 Project PLATEAU「3D都市モデル 松江市(2024年度)」をもとに、小甲健が天守を抽出し、Blender形式に変換して表示した。

    原データの配布ページ | 原データのライセンス CC BY 4.0

    数ある建物の、ただ1棟

    公開されている3D都市モデルから松江城を取り出すには、まず大量の建築物データの中から天守を探さなければならない。松江市の2024年度データには市内の建物が収録され、そのうちLOD3.3という詳細度で整備された建物は松江城の1棟だ。LODとは、3Dモデルがどこまで細かく表現されているかを示す区分である。

    今回のモデルには、屋根や壁、開口部だけでなく、天守を支える石垣や正面の附櫓も含まれている。単純な建物の箱ではない。近くから眺めるほど、細かな形状が目に入ってくる。

    ChatGPT WorkはPLATEAU MCPを使って対象を検索し、メッシュ番号「53331074」のCityGMLファイルを特定した。CityGMLには建物の形状に加え、表面に写真を貼るための情報も入っている。ただし写真そのものは別ファイルなので、モデルが参照するJPEG画像8枚も取得した。天守1棟を再現するには、形状と画像の両方が必要だった。

    松江市の3D都市モデル公開案内 | PLATEAU配信サービス

    瓦の模様は、置いていけない

    変換で守りたかったのは、建物の形だけではない。瓦の列がどこで曲がり、石垣の色がどの面に続くかという、写真と形状の対応だった。3Dモデルの表面に画像を配置する位置をUV座標と呼ぶ。ここがずれると、三角形の数が合っていても、瓦の筋が途切れたり、石垣の模様が不自然につながったりする。

    公式の変換ツールでも天守の形状は出力できたが、今回の実行では写真が1枚の画像にまとめられた。そこで元のJPEGを個別に残すため、CityGMLから形状とUV座標を読み取り、GLBという形式のファイルを生成する方法を採った。GLBは、3D形状と画像を一つにまとめて扱える形式だ。

    生成したGLBをBlenderに読み込み、8枚のJPEGを最終的な .blend ファイルの内部にパックした。外部の画像フォルダを移動したときに、テクスチャが見つからなくなる問題を避けるためである。

    座標も整理した。Blenderでは1単位を1メートルに設定し、天守の近くに作業用の原点を置いた。元の座標系と原点の移動量も記録してある。画面で扱いやすくするだけでなく、後から地形データと重ねられるようにしたかった。

    保存してからが、確認だった

    変換の完了は、ファイルを保存した時点では判定しなかった。Blender 4.5 LTSの別プロセスで .blend を開き直し、読み込まれた内容を検証した。再読込後のメッシュは20,824頂点、43,104三角形。変換途中のGLBと全三角形を照合し、内包したJPEGも元の8枚とバイト単位で一致することを確かめた。

    数値の確認に加え、正面と背面からレンダリングした。屋根の重なりや窓の周囲、石垣の見え方を調べるためだ。ただし、プログラム上の検証だけでは、実際に操作する人がどう見えるかまでは分からない。

    そこで、自作のBlend Viewerで同じ .blend ファイルを開いてみた。マウスで視点を変えながら、天守の輪郭、瓦屋根、石垣を目で確かめる。画面には頂点数と三角形数が並び、画像テクスチャも8件と表示された。

    プログラムが数値で確かめ、人間が画面を見て確かめる。ここまでは、いつものソフトウェア検証に近い。ところが、もう一つ試したくなった。

    その城を、別のAIは知っていた

    自作ビューアーに映った天守をスクリーンショットに撮り、Geminiに短く尋ねた。

    「何城?」

    城の名前も所在地も、質問には書かなかった。Geminiから返ってきた回答は、想像していたより具体的だった。

    松江城(島根県松江市・国宝)です。

    Gemini

    手前に突き出た玄関部分の「附櫓(つけやぐら)」や、大きな入母屋破風と千鳥破風を備えた4重5階の望楼型天守、黒塗りの下見板張りの外観といった特徴がはっきりと表れています。

    附櫓の脇にある案内板まで再現されているため、現地を3Dスキャン(フォトグラメトリ等)して生成されたモデルと見られます。

    城の名前を正しく答えただけではない。附櫓、入母屋破風、千鳥破風、黒い下見板張りといった建築的な特徴を、画像から読み取っていた。さらに驚いたのは、附櫓の脇にある案内板にまで言及したことだ。私が特に指示していない細部を、Geminiは建物を識別する手がかりとして扱っていた。

    しかも、その細かさから3Dモデルの作成方法まで推測している。案内板の再現を根拠に、現地での3Dスキャンやフォトグラメトリを挙げたのだ。フォトグラメトリとは、複数の写真から対象物の立体形状を復元する技術である。

    ただし、ここは事実と推測を分ける必要がある。今回使用したのはProject PLATEAUの公開データであり、スクリーンショットだけから元データの具体的な計測・生成方法まで確定できるわけではない。Geminiは画像に写った特徴を説明したうえで、作成工程を推測したのであって、その工程を検証したわけではなかった。

    それでも、この回答は興味深い。ChatGPT Workが変換したモデルを私が目で確認し、別のAIがその画像から建物の特徴を説明した。形状やテクスチャが正しく変換された証明にはならないが、松江城として認識できる外観が表示されていることを確かめる、もう一つの視点になった。

    AIに任せた仕事を、誰が確かめるか

    CADやBIMでも、作成者の環境では正しく見えていたデータが、別の環境では開けないことがある。画像の参照先が切れたり、座標が大きくずれたり、元データとの関係が分からなくなったりする。そんな小さな欠落が、受け取る側の調査や修正を増やしてしまう。

    今回は画像をファイルに内包し、座標変換を記録し、原データの配布元とライセンスを残した。外観のメッシュと画像をBlenderへ引き継ぐ一方、CityGMLに含まれる行政属性は変換対象から外している。何を引き継ぎ、何を引き継いでいないかも、成果物の一部だと考えている。

    AIに作業を任せるときも、「Blenderファイルを作って」で終わらせず、保存後の再読込、形状と画像の照合、実際のビューアーでの表示まで条件にできる。今回はそこにGeminiによる画像認識も加わった。数値による検証、目視による確認、別のAIによる特徴の説明は、それぞれ異なる役割を持っている。

    冒頭のスクリーンショットには、斜め上から眺めた松江城が写っている。ChatGPT Workがデータを変換し、自作ビューアーがその姿を映し、Geminiは案内板にまで目を向けた。約10.5 MBのファイルをもう一度開けば、今度は自分の手でカメラを動かせる。

    同じ天守を見ていても、プログラムと人間とAIでは、確かめているものが少しずつ違う。


    実際にChatGPT Workに渡したプロンプト

    今回の実験で使用したプロンプトを、以下に全文掲載する。特徴は、3Dモデルの取得や変換だけでなく、Blenderでの再読込検証、テクスチャの確認、成果物のダウンロードまでを完成条件に指定した点だ。

    依頼:PLATEAU MCPから松江城LOD3.3モデルを取得し、Blenderファイルを完成させる
    
    あなたは3D都市モデル、CityGML、GIS、Blender、Pythonによる3Dデータ変換の専門エンジニアです。
    
    ChatGPT WorkのPLATEAU MCPとクラウド実行環境を使用して、国宝・松江城天守の3D都市モデルを取得し、実際にBlenderで開いて編集・表示できる .blend ファイルを作成してください。
    
    調査や手順説明で終わらず、実ファイルの生成、保存、再読込検証、ダウンロード可能な成果物の提示まで実行してください。
    
    1. 対象データ
    
    対象:島根県松江市・国宝松江城天守
    
    データ提供元:国土交通省 Project PLATEAU
    
    整備年度:2024年度
    
    データセットID:d_32201_bldg
    
    建築物メッシュコード:53331074
    
    目標LOD:LOD3.3(データセット上のLOD3)
    
    必須条件:実際の建物形状と写真由来テクスチャを維持
    
    基準座標:約 北緯35.47511度、東経133.05070度
    
    低詳細度のLOD1・LOD2や、AIが推測生成した城のモデルで代用しないでください。
    
    2. PLATEAU MCPによる取得
    
    利用できるPLATEAU MCPツールを確認し、次の順序で実行してください。
    
    plateau_search_datasets で松江市の建築物モデルを検索
    
    plateau_get_dataset で d_32201_bldg の詳細を取得
    
    plateau_get_citygml_files で松江城周辺の建築物CityGMLを特定
    
    maxLod=3 のデータを優先
    
    対象の建築物ID・形状・テクスチャ参照を確認
    
    確認済みの候補CityGML:
    
    53331074_bldg_6697_op.gml
    
    データセット公開ページ:
    
    https://www.geospatial.jp/ckan/dataset/plateau-32201-matsue-shi-2024
    
    LOD3テクスチャ付き3D Tiles:
    
    https://api.plateauview.mlit.go.jp/datacatalog/3dtiles/32201-bldg-lod3-texture-2024/tileset.json
    
    MCPが返すファイルURLを使用して、実データをダウンロードしてください。MCP自体にファイル保存・変換機能がない場合は、Workのブラウザや実行環境を使用してください。
    
    CityGML内のテクスチャが外部参照されている場合は、必要な画像と関連ファイルも取得し、元のディレクトリ構造を維持してください。
    
    3. Blenderへの変換
    
    優先する変換手順:
    
    CityGML → テクスチャ付きGLB/glTF → Blender → .blend
    
    PLATEAU GIS Converterなど、検証済みの変換ツールを使用してください。
    
    変換条件:
    
    テクスチャ付きの最高LODを選択
    
    松江城天守のモデルを抽出
    
    元データの頂点座標と建物形状を維持
    
    UV座標と画像テクスチャを維持
    
    屋根・壁面・開口部などのディテールを可能な限り維持
    
    3D座標系を適切に変換
    
    BlenderではZ軸を上方向に設定
    
    スケールは1 Blender Unit = 1m
    
    元の地理座標、座標参照系、変換オフセットを記録
    
    大きな地理座標による精度低下を避けるため、モデル中心付近をローカル原点に移動しても構いません。
    
    その場合は元の地理参照情報を必ず保存してください。
    
    変換に失敗した場合はエラーログを調査し、公式ツールの別形式や正当な代替変換方法を試してください。
    
    4. Blenderシーンの構築
    
    Blenderを起動し、変換した3Dモデルを読み込んでください。
    
    以下の設定を行ってください。
    
    モデル名:Matsue_Castle_LOD3
    
    コレクション名:MatsueCastle
    
    テクスチャ付きマテリアルを適用
    
    不要な周辺建物は除去
    
    原点・向き・スケールを修正
    
    太陽光と環境光を配置
    
    天守を正面斜め上から確認できるカメラを配置
    
    Material Previewでも表示できる状態にする
    
    外部画像をBlenderファイルにパックする
    
    建物のディテールや実際の色彩を勝手に変更しないでください。
    
    5. 品質確認
    
    作成後は必ず以下を検証してください。
    
    .blend が実際に保存されている
    
    保存したファイルをBlenderで再度開ける
    
    松江城天守の形状が表示される
    
    メッシュの頂点数・面数が0ではない
    
    写真テクスチャが正常に表示される
    
    屋根や壁面の形状が欠落していない
    
    モデルのスケールが異常でない
    
    カメラからプレビュー画像をレンダリングできる
    
    元データと加工内容、ライセンス上必要な出典を記録している
    
    空のBlenderファイル、立方体だけのファイル、テクスチャのない代替モデルを完成品として提出しないでください。
    
    6. 納品物
    
    以下のファイルを作成してください。
    
    必須
    
    MatsueCastle_LOD3.blend:テクスチャ内包のBlenderファイル
    
    MatsueCastle_preview.png:完成モデルを表示した画像
    
    README.md:データ出典、LOD、変換手順、利用規約、操作方法
    
    可能であれば追加
    
    MatsueCastle_LOD3.glb:テクスチャ付き3Dモデル
    
    convert_matsue_castle.py:変換・Blenderファイル生成用スクリプト
    
    成果物はダウンロードできるファイルとして提示してください。ダウンロードリンクは実在とアクセス可能性を確認してください。
    
    7. 実行ルール
    
    私への途中確認は原則不要
    
    利用できるツールを組み合わせ、自律的に作業する
    
    まず公式のPLATEAUデータを優先
    
    取得・変換・検証の各工程を実際に実行する
    
    実行していない工程を成功したと報告しない
    
    エラーが起きた場合は原因を調べ、可能な代替手段を試す
    
    原データのライセンスと出典表示を遵守する
    
    .blend を作成できなかった場合は、その事実と未完了工程を明示し、取得済みデータや再実行用スクリプトを成果物として提示する
    
    最終報告には、モデルのLOD、テクスチャの有無、頂点数、面数、ファイルサイズ、再読込検証結果、ダウンロードリンクを記載してください。
    
    最優先の成功条件は、松江城の実際のLOD3.3データを使い、テクスチャ付きのBlenderファイルを完成させることです。
    
    説明文やHTMLビューアを作るだけで完了にしないでください。

    あなたへのおすすめ