TOPIC 8|Blenderで活用する[1/2]|3D都市モデルのBlenderでの読み込み方
Blenderは3DCG製作のほか、2Dアニメーション、デジタル合成、動画編集も行える統合型のオープンソースのツールです。BlenderでPLATEAUの3D都市モデルを活用する方法を、基本的な読み込み方から説明します。

TOPIC8:Blenderで活用する
Blenderは、オープンソースの3DCG制作ツールです。このトピックでは、BlenderでPLATEAUを活用する方法を説明します。
【目次】
8.1 Blenderとは
8.1.1 Blenderのダウンロード
8.1.2 Blenderの起動とセットアップ
8.1.3 プロジェクトの新規作成
8.2.1 OBJ形式ファイルの入手
8.2.2 OBJファイルをBlenderにインポートする
8.2.3 視点の調整
8.3 別のデータを重ねる
8.1 _ Blenderとは
Blenderは3DCG製作のほか、2Dアニメーション、デジタル合成、動画編集も行える統合型のオープンソースのツールです。Blenderを使うと、3D都市モデルをインポートして、必要な建物だけを取り出したり、複数の3D都市モデルをインポートしてマージしたりするなど、3Dモデルとしてさまざまな加工ができます。
8.1.1 _ Blenderのダウンロード
Blenderは、Blenderの公式サイトのダウンロードページから入手できます。このトピックでは、2022年10月時点の最新版である3.3.1を扱います。
ダウンロードしたインストーラを起動し、画面の指示通りに進めていけば、インストールできます。
【Blenderの公式ページ】


8.1.2 _ Blenderの起動とセットアップ
初めて起動すると、クイックセットアップの画面が開きます。ここでは言語を[日本語(Japanese)]にして他の設定はデフォルトのまま、[次]をクリックし、これを以降用いる設定として保存して進めます。

8.1.3 _ プロジェクトの新規作成
Blenderは、3DCG製作以外に、2Dアニメーションや動画編集にも使えるソフトです。起動すると、図 8-4に示すスプラッシュ画面が表示され、どのようなファイルを新規作成するのかが尋ねられます。
以下では、PLATEAUの3D都市モデルをBlenderで開いて3DCG製作をしていきます。そのようなときは、[全般]からプロジェクトを新規作成します。

初期画面では大きな透視図が表示されます。このエディター画面を「3Dビューポート」と呼びます。ここに3Dのオブジェクトを配置していきます。
配置先は「シーン」と呼びます。シーンに配置されているオブジェクトの一覧は、右上の「アウトライナー」と呼ばれるエディターに表示されています。最初の状態では、カメラ(Camera)とキューブ(Cube)、ライト(Light)の3つのオブジェクトが配置されています。これらは、シーンコレクションと呼ばれるグループ化機能で、ひとまとめにされています。

コラム:操作ウィンドウを切り替える
起動直後、右上にはアウトライナーが表示されています。[エディタータイプ]をクリックすると、別のエディターに切り替えることもできます。左側の3Dビューポートについても同様に、ほかのエディターに切り替えられます。

以降、PLATEAUの3D都市モデルをダウンロードするにあたって、最初に表示されている中央のキューブが邪魔になるので、あらかじめ削除しておきます。
削除するには、3Dビューポートでキューブ自体をマウスでクリックして選択、もしくは、アウトライナー上で[Cube]をクリックして選択し、[Delete]キーを押します。
8.2 _ 3D都市モデルの基本的な読み込み方
Blenderでは、OBJ形式やFBX形式のファイルをインポートできます。ここではOBJ形式の3D都市モデルを読み込んで、表示する方法を説明します。
8.2.1 _ OBJ形式ファイルの入手
次のいずれかの方法で、OBJ形式の3D都市モデルを準備します。
----------------
①G空間情報センターから、利用したい3D都市モデルのOBJ形式ファイルをダウンロードする
G空間情報センターでは、一部の都市で、CityGML形式以外に、OBJ形式やFBX形式に変換したファイルを提供しています。
2022年11月現在、提供されている都市は、下記のとおりです。
②FME Desktopや「PLATEAU SDK for Unity」などを使って、CityGMLから変換する
CityGMLから変換する工程を工夫することで、必要な建築物だけを取り出すなどのカスタマイズが可能です(FME Desktop等での変換は【3D都市モデルデータの基本】「CityGMLの座標・高さとデータ変換」参照)。
----------------
ここでは①の方法で、東京都23区の3D都市モデルをダウンロードしたものを使います。
G空間情報センターの東京都23区の3D都市モデルのページを開き、[OBJ]の部分からダウンロードします(図8-7)。

■ 東京都庁周辺のデータ
G空間情報センターからダウンロードした東京都23区のOBJ形式ファイルでは、3次メッシュの単位でファイルが分割されています。
以下では、新宿の東京都庁付近の3D都市モデルを例として扱います。この建築物は、3次メッシュの「53394525」に存在します。
【メモ】
2次メッシュは約10km四方、3次メッシュは約1km四方、4次メッシュは約500m四方です(4次メッシュは、2分の1地域メッシュとも呼ばれます)。メッシュについては、【3D都市モデルデータの基本】(https://www.mlit.go.jp/plateau/learning/?topic=basics-of-3dcitymodal)を参照してください。
■ ファイル構造
ファイルは、次の構造で格納されています。
13100_tokyo23-ku_2020_obj_3_op
├─bldg
│ ├─lod1
│ │ ├─53392546_bldg_6677_obj
│ │ │ 53392546_bldg_6677.obj
│ │ │ …略…
│ └─lod2
│ ├─53392633_bldg_6677_obj
│ │ │ 53392633_bldg_6677.obj
│ │ │ materials.mtl
│ │ │
│ │ └─materials_textures
│ │ hnap0664.jpg
│ │ …略…
├─brid
│ ├─53392641_brid_6677_obj
│ │ │ 53392641_brid_6677.obj
│ │ │ materials.mtl
│ │ │
│ │ └─materials_textures
│ │ hnap0339.png
│ │ …略…
├─dem
│ 53392545_dem_6677.obj
│ 53392546_dem_6677.obj
│ …略…
├─metadata
│ obj_13100_2020_metadata_op.xml
└─tran
533925_tran_6677.obj
…略…
都庁を含む53394525というメッシュコードの3D都市モデルは、LOD1、LOD2それぞれで、次のファイルが相当します。
LOD1の場合:bldg/lod1/53394525_bldg_6677_obj/53394525_bldg_6677.obj
LOD2の場合:bldg/lod2/53394525_bldg_6677_obj/53394525_bldg_6677.obj
■ 座標系とスケール
G空間情報センターからダウンロードできるOBJ形式ファイルは、平面直角座標に変換されたものであり、その座標軸に合わせて、北方向がX軸、東方向がY軸、高さ方向がZ軸に設定されています(図3-27を参照)。単位はメートル単位です。
3Dソフトによって軸の向きや縮尺が異なるので、それに合わせて読み込む必要があります。
コラム:4次メッシュ
都市によっては、3次メッシュをさらに4分割した「4次メッシュ」で分割されることもあります。4次メッシュは、4分割した左下を「1」とし、反時計回りに連番が付けられています(図8-8)。

8.2.2 _ OBJファイルをBlenderにインポートする
3D都市モデルのOBJファイルをダウンロードしたら、Blenderにインポートして配置します。ここでは、LOD1の53394525_bldg_6677.objファイルを配置してみます。
[1]OBJファイルをインポートする
Blenderの[ファイル]メニューから[インポート]―[Wavefront(obj)]を選択します。

[2]OBJ形式ファイルを開く
フォルダをたどって、LOD1の53394525_bldg_6677.objファイルを選択します。
このとき[トランスフォーム]で、軸の向きを設定します。[前方の軸]を「Y」、[上向きの軸]を「Z」に設定し、[Wavefront OBJをインポート]をクリックして読み込みます。
Blenderのシーンのデフォルトの寸法単位は「メートル」であり、PLATEAUのOBJ形式ファイルもメートル単位であるため、原寸で読み込めます。

コラム:トランスフォームを間違えた場合
トランスフォームの軸が正しくないと、間違った向きでインポートされてしまいます。

[3]読み込んだ3D都市モデルを表示する
右上の[アウトライナー]を見ると、インポートによってデータが登録されたことがわかります。インポートされたデータは、原点に配置されますが、この段階では3Dビュー上に見えません。

コラム:FBX形式ファイルを読み込む
同様に[ファイル]メニューから[インポート]―[FBX(.fbx)]を選択すると、FBX形式ファイルを読み込めます。
FBX形式ファイルを読み込むときも、[トランスフォーム]のオプションで[方向を手動で設定]を選択し、それぞれの軸の向きを設定します。[前方]で[Yが前方]、[上]で[Zが上]を選択します。
そして[スケール]には「100.0」を設定します。これはBlenderのFBX形式のインポートでは、センチメートルを単位とするためです。

8.2.3 _ 視点の調整
データはインポートされていますが、視点の関係で、3Dビュー上では見えません。視点を調整して見えるようにします。
[1]視点を向ける
まずは視点を3D都市モデルに向けます。アウトライナー上で読み込んだ3D都市モデルをクリックして選択してから、テンキーの[.]キーを押します(もしくは[ビュー]メニューの[選択をフレームイン]を選択します)。この操作で、オブジェクト全体が見えるように視点が移動します。

[2]遠くまで見られるようにする
既定のビューの設定では、1000m先までしか映しません。OBJ形式の3D都市モデルは、メートルを単位とした平面直角座標系でとても大きく、この設定では、全域が入るように視点を合わせたとき、遠くにありすぎて見えません。
そこで、より遠くまで見えるようにビューの設定を変更します。左側の3Dビューポートをクリックしてアクティブにしておき、[N]キーを押すと、右側にアイテムやツール、ビューを選択できる画面が表示されます。この画面で[ビュー]タブを開き、「終了」を「10000m」に設定します。これは10000m先まで表示されるようにする、という設定です。このように変更すると、3D都市モデルが表示されます。
【メモ】
表示されたウィンドウは、もう一度[N]キーを押すと消えます。

8.3 _ 別のデータを重ねる
同じ平面直角座標系であれば、同様の方法でインポートすると、それらはピッタリ重なります。
例えば、隣接する代々木周辺の3次メッシュ「53394515」(53394515_bldg_6677.obj)を追加すれば、図 8-16のように、その横に表示されます。

もちろん、LOD1とLOD2とを重ねて表示することもできます。同じく隣接する新宿駅周辺の3次メッシュ「53394526」のLOD2モデルを追加した例を図 8-17に示します。

なお、LOD2であるのにテクスチャが表示されていないのは、3Dビューの既定の表示が「ソリッド」になっているためです。右上のボタン群で[マテリアルプレビュー]や[レンダープレビュー]に切り替えれば、テクスチャも表示されます。


重ねられるのは建築物だけではありません。地形や橋梁を重ねることもできます。同じメッシュコードの地形データであるdem/53394525_dem_6677.objを重ねた例を図 8-21に示します。マテリアルビューだとややわかりにくいですが、ワイヤーフレームに切り替えて少し拡大すると、地面の起伏が表現されていることがわかります。
【メモ】
拡大・縮小の操作は、マウスのホイールで行えます。手のアイコン部分をドラッグすることで上下左右に動かせます。



コラム:道路の高さを表現する
PLATEAUの3D都市モデルに含まれるLOD1及びLOD2道路モデル(tranモジュール)は、高さを持ちません(ただしLOD3には高さ情報があり、立体交差が表現されています)。他方、建築物モデルなど他のデータと組み合わせて道路モデルを3次元的に利用したい場合には、道路モデルの疑似的な高さを付与する方法が便利です。ここでは、地形(dem)のデータを利用して、道路モデルに高さを付与する方法を紹介します。
考え方としては、図8-23のように道路データを押し出して立方体を作り、それを地形データでブーリアン処理して切り出すことで生成します。

実際の操作としては、次のようにします。
[1]道路と地形のデータを読み込む
Blenderで、道路と地形のデータを読み込みます。

[2]道路を押し出す
道路の任意のオブジェクトを選択し、[Tab]キーを押して[編集モード]に切り替え、[選択]―[すべて(A)]、[面(Ctrl+F)]―[面を押し出し]の操作をして、地形と交差する立方体を作ります。

[3]ブーリアンを追加する
手順[2]の押し出した道路オブジェクトを選択し、[プロパティ]エディターの[モディファイアープロパティ]から[モディファイアーを追加]を選択し、[ブーリアン]を追加します。

[4]地形とブーリアン処理する
ブーリアンの設定でスポイトアイコンを使って、演算対象として、地形のオブジェクトを選択します。
[交差]を選択し、[下向きの矢印]ボタンから[適用]を選択します。

この処理によって、地形と同じ高さで道路を押し上げた立方体が切り取られます。

[5]同様の処理を繰り返す
同様の処理を繰り返します。
ひとつずつ編集するのは煩雑なので、複数まとめて処理することもできます。まとめて処理するときは、対象オブジェクトを選択して、[Ctrl]+[J]キーでオブジェクトを結合しておきます。


結合したオブジェクトに対して、同じ処理をすると、図8-30のようにスパイク状の形状が作成されることがあります。その場合は、図8-27において[モディファイアー設定]から「自分自身」にチェックを付けると改善されます。

こうした処理によって道路を地形と組み合わせて処理すると、図8-31のように道路に高さを設定できます。

【文】
大澤文孝
【監修】
西尾悟(株式会社MIERUNE)
林久純(ベースドラム株式会社)