Skip to content

20240528_notes

Takanobu INAFUKU edited this page Jun 3, 2024 · 8 revisions

第7回 Blender / Geometry Nodes 応用 3 - PLATEAUのデータの利用 - 中間課題出題

事前準備

前橋市のCityGMLデータ

https://www.geospatial.jp/ckan/dataset/plateau-10201-maebashi-shi-2023

のCity GML(v3) というデータを各自ダウンロードしておいてください。(*ファイルサイズが結構大きいです)

Plateau-Blender-Importer アドオンのインストール

BlenderでCityGMLを直接読み込むためのサードパーティアドオンをインストールします。

https://github.com/nneri-hin/Plateau-Blender-Importer

このページのREADMEに従って、zipアーカイブファイルをダウンロード。Blenderの PreferencesAdd-onsInstall でダウンロードしたファイルを指定してインストールしてください。

インストール後は、FileImportPlateau cityGML (.gml) メニューから読み込めます。

また、今回扱うデータは都市に関連するもののため、基準のスケールが大きいです。必要に応じて、

  • Scene / Units / Length を「Meters」に
  • LayoutGeometry Nodes ワークスペースなどの3D Viewportで、サイドバーの View タブ の View / End (Clip End) の値を「100000m(100km)」などの比較的大きな値に

調整しておくことを勧めます。

fig4

Blenderで外部のデータを利用する - PLATEAU / CityGML の利用

CityGMLはあくまで「中間データ」的な立ち位置であり、アプリケーション側で使いやすい形式に変換したり、独自に(任意の情報を得るための)パーサーを実装して利用することが想定されています。

PLATEAU公式からは Unity と Unreal Engine 用のSDKが提供されていますが、Blenderではそのまま読み込むことができないため、前述の有志の開発者によって開発されたアドオンを利用します。

CityGMLデータを読み込む際の注意点・CityGMLの構造について

  • 命名規則・フォルダの構造などに決まりがある
    • 地物ごとのフォルダ分類:建物(bldg)、地形(dem)、道路(tran).. など。
    • 各フォルダ以下には、メッシュコードを接頭辞にした .gml 形式のファイルが格納(場合によってはサブフォルダでさらに分類されている)。
  • メッシュコード
    • 基本的にこの区分で .gml ファイルが分割されている。
      • ファイル名の接頭辞がメッシュコード
    • 実際の対応区域は、ダウンロードしたデータに同梱の 10201_indexmap_op.pdf にて参照可能。
    • Plateau-Blender-Importer アドオンでは、読み込み時に Origin Japan Mesh Code Or Location オプションに該当のメッシュコードを指定することで、読み込むメッシュデータの基準点を調整してくれます。

    fig3 デフォルトの値を指定した場合、メッシュコード「53394611」(東京駅付近)で補完されます。このため読み込んだCityGMLデータによってはBlender上での原点から大きく離れた位置に読み込まれることがあるので注意。

  • LOD(Level Of Detail)
    • 3DCG系のソフトウェアにおいては、描画の詳細度を決める基準。
      • ある対象物が遠くにある場合、(省いても画面上での見た目が大きく変わらないので)細部の描画を省くことで処理を軽くすることができる。
    • CityGMLの仕様でレベルごとの要件が策定されている。
      • 床面の外形線(LOD0)・高さを持つ立体(LOD1)・「壁」「屋根」「床」等の詳細構成情報の有無(LOD2).. etc
    • どのLODまでデータが整備されているかによって、Blender で読み込んだ際の形状・テクスチャデータの有無などが異なる。
  • 利用する3Dソフトウェアにおける座標系の違い
    • 今回使用したアドオンでは、基本的に読み込み時にうまく変換してくれている。
    • 公式のSDKを使用してエクスポートしたデータを読み込む場合などには注意が必要。詳しくは次回以降の講義でも触れます。

より詳しくはこちらに記載されています。

https://www.mlit.go.jp/plateau/learning/tpc03-1/

中間課題

現実世界に対応物が存在するオブジェクト・3Dデータをひとつ以上選択し、それを任意のルールに基づいて「囲う・覆う」構造物を設計・モデリングしなさい。

  • 選択するオブジェクト・3Dデータは、PLATAUEで取得できるもの、その他既存のサービスなどを利用して取得できるものを想定していますが、 Scaniverse のようなアプリを使って自分で用意しても構いません。また、肉眼では確認できないようなものでも、一般的に存在していると思われているもの(例えば人体の器官や、水分子など)であれば、そのモデルを対象としても良いです。
  • 単に「囲う・覆う」のではなく、何かしらのコンセプト(美的な観点・機能性・何かしらの思想の体現など)をもって構造物をデザインしてください。
  • 成果物は複数あって構いません。むしろパラメータを変更することで多数のバリエーションを生成できるようなデザインシステムを考えることが(この講義の意図としては)理想です。

提出物

  • Blender でモデリングする場合は .blend ファイルを提出してください。
    • 外部のモデルデータや、テクスチャーデータを使用する場合は、FileExternal DataPack Resources を実行して必要なデータを忘れずに結合しておくこと。
  • Blender 以外でモデリングしても構いません。その場合は成果物として、.obj / .fbx / .gltf (.glb) いずれかのフォーマットでエクスポートし、少なくとも一つ以上を提出してください。

提出先

https://www.dropbox.com/request/ssJchawEPbwpekEoxUQs

  • 提出するファイル名には 学籍番号_氏名 をつけてください。複数ある場合はフォルダやzipファイルなどにまとめ、同様の名前をつけてください。
  • コンセプトの細かい説明が必要な場合や、提出物が何かしらの操作を必要とする場合などは別途ドキュメントをPDF等で用意し、併せて提出してください。
  • 提出期限は次々回講義がある 6/11の15時 までとします(制作期間2週あるので注意!)。

サンプルファイル(中間課題作例)

https://github.com/h4us/maebashi-it-architectual-informatics-I/releases/download/20240528/demo_20240528.blend

サンプルファイル解説

fig1

本サンプルでは、前橋市のCityGMLデータから、前橋駅北口周辺の建物データ(LOD2のデータを多く含んでいた地域、メッシュコード 54394055 および 54394065の 一部分)を抜き出して、「囲う・覆う」対象物とし、その上部の空間を覆うようなネット状の構造物をモデリングしています。

fig2

  • 初めに Collection Info ノードで、読み込んだデータを参照し、 Realize Instances で単一のメッシュにします。
  • さらに Mesh to Points で Point Cloud に変換したのち、Normal ノードと Compare ノードの Vector / Equal での比較を Selection ソケットに入力することで、上方向を向いている面に関連する点のみを選択します。
    • この個所の Mesh to Points のモードに「Corners」をプロパティで指定しているので、結果的に上方向を向いている面の四隅の点が選択の対象になる。
    • あわせて Position ソケットに Vector Math ノードを入力して、選択された点に対してオフセット値を調整できるようにしておく。
  • Convex Hull ノードで点どうしを接続してメッシュを生成し、 Normal ノードと Compare ノード + Delete Geometry で今度は下方向を向いている面のみ削除します。
  • Subdivision Surface ノードで分割数を増やして形状を滑らかにし、Extrude Mesh ノードで上方向のみに厚みをつけます。
  • その後は、以前のサンプルでも多用している、Mesh to Curve ~ Curve to Mesh / Mesh to Points ~ Instance on PointsJoin Geometry の流れで、最終的な構造物を出力します。