0
1

iRICの格子をBlenderで編集してみた

Last updated at Posted at 2024-05-27

はじめに

今回の記事では「iRIC2Blender」という @toshimushi 氏が作成されたアドオンの機能を使用しています。

@toshimushi 氏の投稿でチュートリアルが整理されているのですが、Blenderで編集した地形をiRICに戻すものはなかったので作成しました。
インストール方法等は@toshimushi 氏の投稿を御覧ください。

環境

iRIC v4.1.0.6927
Blender 4.1.1

私の環境だとBlenderのインターフェースの言語を日本語に設定しているとiRIC2Blenderの1-1-1: irIC格子(csv)の読み込みの実行時にKeyError: 'bpy_prop_collection[key]: key "Principled BSDF" not found'と表示されてiRIC2Blenderが動かないバグがありました。
これは日本語表示にしているのが問題なのでインターフェースを英語にすれば治ります。

逆に1-3-1: iRIC格子(Nays2dh/植生データ)を読み込みの機能はインターフェースが日本語じゃないと動かないです。

混ざっていてめんどくさいのでBlenderを英語環境で使用したのであればアドオンのソースコード中のプリンシプルBSDFPrincipled BSDFに、画像テクスチャImage Textureに書き換えましょう。
日本語で使用したいのであればPrincipled BSDFプリンシプルBSDFに、Image Texture画像テクスチャに書き換えてください。

インポートしたアドオンはC:\Users\ユーザー名\AppData\Roaming\Blender Foundation\Blender\4.1\scripts\addonsに入っていると思います。

ソースを書き換えたりBlenderのインターフェースを変更したあとは一度Blenderを再起動しましょう。

Blenderにアドオンをインストールする際、Blenderのバージョンが3.5移行だとマニュアルに記載のある「テスト中」のタブが表示されません。
以下の記事の対応で「テスト中」タブを表示することができます。

「Blender 3.5/3.6で、addonにTestingを復活させる方法」 by @SaitoTsutomu
https://qiita.com/SaitoTsutomu/items/5872c5e0358394360697

iRIC2Blenderとは

iRICBlender間でデータをやり取りできるBlender用のアドオンです。現状で以下の機能が備わっています。

計算格子関連

  1. iRICの計算格子の標高からBlenderで地形のグリッドメッシュを作成する
  2. 作成した地形の範囲の衛星画像の取得
  3. 2で取得した画像をオブジェクトへ貼り付け
  4. iRICの計算格子から植生密度を読み込みオブジェクト上に樹木を配置

建物関連

  1. OSMBuildingから建物データをダウンロード
  2. ダウンロードした建物データの読み込み
  3. Plateau DEMデータを読み込み
  4. Plateau 建物データを読み込み
  5. 選択したオブジェクトを接地

Nays2DHの計算結果関連

  1. iRICの計算結果から時系列の水面のグリッドメッシュを作成する
    (水深コンター、流速コンター、任意色での表示が選択可能)
  2. 河床変動計算結果の読み込み
    (使ったことがないのでよくわからない)

Nays2DFloodの計算結果関連

  1. iRICの計算結果から時系列の水面のグリッドメッシュを作成する
    (水深コンター、流速コンター、任意色での表示が選択可能)

出力関係

  1. Blenderの地形データ(グリッドメッシュ)をiRICで読み込めるcsv形式出力
  2. OSMBuildingの建物をshpに書き出し

全体の流れ

全体の流れは以下のようになります。
そんな難しいことはやっていないですが、Blenderの操作は覚えるのが面倒でした。

  1. 地形を編集したい箇所の格子をiRICで作成
  2. iRIC2Blenderで1の格子を読み込み
  3. 2で取り込んだグリッドメッシュをBlenderで編集
  4. iRIC2Blenderで3の編集後のグリッドメッシュを点群データとして出力
  5. iRICで4の点群データを読み込み

地形を編集したい箇所の格子をiRICで作成

まずはiRIC上で地形を編集したい範囲の矩形の格子を作成します。
iRICでは河道に合わせた曲線の格子などもつくれますが、iRIC2Blenderで衛星画像を貼り付ける際にうまくいかないので矩形で作成しましょう。

image.png

格子生成について

詳細な手順は以下を御覧ください。

矩形の格子はiRICの機能の「矩形領域の格子を作成」を使うと簡単につくれます。

image.png

格子にマッピングするための地形情報はiRIC上でダウンロードできる「地理院タイル 基盤地図情報数値標高モデル DEM5A」と横断測量データを組み合わせて作成しています。
横断測量データは北海道開発局が公開している横断測量データをiRICでそのまま読み込める形式に変換したものを取得できる「横断測量データ取得ツール」のデータをiRIC上でダウンロードできるのでそれを使用しています。

横断測量データからの点群データ作成や点群データのマージについては以下を御覧ください。

作成した格子の出力

格子を作成したらiRICのメニューバーのファイル>エクスポート>格子 からcsv形式で保存します。
任意の場所で任意の名前で保存してください。

iRIC2Blenderで対応しているのがcsv形式だからです。*.cgns形式で出力した格子は読み込めません。

image.png

iRIC2Blenderで格子を読み込み

  • Blenderを起動します
  • 新規プロジェクトを開きます(全般でいいと思います)
  • 初期に配置されているオブジェクトは使わないで消してしまします

image.png

グリッドメッシュの作成

iRIC2Blenderをインストールしていると表示される、ヘッダーメニューのiRIC > 1-1-1: irIC格子(csv)の読み込みからダイアログを立ち上げ、先程出力した格子のcsvを選択します。
image.png

選択したら右下の1-1-1: irIC格子(csv)の読み込みをクリックして実行します。

image.png

これで格子を読み込むことができました。

image.png

格子範囲の衛生画像を取得

  • キーボードのNキーを押してサイドバーを開きiRIC_settingタブを開きます
  • 画像読み込み関係で「DL画像のzoom設定」、「DL画像の解像度の設定」、「格子のEPSGの設定」、「読み込み画像の設定」を設定します

今回はiRICで読み込んだデータの座標系がEPSG:6680: JGD2011/ Japan Plane Rectangular CS Ⅻなので「格子のEPSGの設定」には6680を入力します。その他の設定はお好みで調整してください。

image.png

設定したらヘッダーメニューのiRIC > 1-1-2: irIC格子(csv)から画像をダウンロードからダイアログを立ち上げ、先程出力した格子のcsvを選択します。

image.png

選択したら右下の 1-1-2: irIC格子(csv)から画像をダウンロードをクリックして実行します。

image.png

成功すると読み込んだcsvと同じフォルダに画像ファイルが保存されます。

image.png

取得した画像の貼り付け

画面上のグリッドメッシュをクリックして選択し、ヘッダーメニューのiRIC > 1-2-1: 画像をBlenderの格子に貼り付けからダイアログを立ち上げ、先程保存した画像ファイルを選択します。

image.png

選択したら右下の 1-2-1: 画像をBlenderの格子に貼り付けをクリックして実行します。

image.png

実行したら画像の矢印で示すアイコンをクリックしてマテリアルモードに変更します。すると貼り付けた画像を表示することができます。

image.png

グリッドメッシュをBlenderで編集

あとは取り込んだグリッドメッシュをBlenderの機能で自由に編集してください。
ただし、メッシュ頂点のXYがズレると格子点の位置もずれてしまうので編集モードやスカルプトモードで編集する際にはXYの座標がずれないようにするとよいかもしれません。

モデリング.gif

Blenderでのオブジェクトの編集方法についてはいろいろな資料があると思うのでそちらを参照してください。

注意点

注意点として、読み込んだグリッドメッシュはiRCで作成した格子の座標の位置に作成されるのですが、原点(0,0)から大きく離れている場合スカルプトモードでマウスカーソルの位置とブラシの位置が異なるなど不具合が私の環境ではおきました。

そのような場合、グリッドメッシュの座標をメモしておいてから、ワールド座標の(0,0)付近に一度移動して、編集後にまたもとの座標に戻してあげてください。

私の場合、格子の左下の座標を確認して格子左下が(0,0)になるように格子全体を移動して作業を行っています。

やり方を以下に示します。

ワークスペースをModelingモードに変更します。

image.png

格子の左下の頂点を選択するとサイドバーのアイテムタブのトランスフォームに座標が表示されるのでグローバルのXY座標をメモ(このとき値をクリックすると小数点以下の値を確認できます。

image.png

ワークスペースをLayoutモードに切り替え、サイドバーのアイテムタブのトランスフォーム位置に先ほどのXY座標の正負を反転させた値を入力します。

image.png

すると格子がワールド座標原点の位置に移動します。

image.png

地形の編集が終わったら先ほどと逆でメモっておいた値をトランスフォームに入力し元の位置に戻します。

河川などの地形はz軸方向の変化が小さいので一時的にトランスフォームでz軸のスケールを大きくしてあげて編集するのもよいかもしれません。

iRIC2Blenderで編集後のグリッドメッシュを点群データとして出力

地形データを編集したらiRICで読み込めるようにエクスポートを行います。
Layoutモードに切り替えグリッドメッシュをクリックして選択した状態で、ヘッダーメニューのiRIC > 4-1: 地形データをiRIC用にCSVで書き出しからダイアログを立ち上げ、任意の場所に点群データを出力します。

image.png

ダイアログでcsvファイルを保存したい場所を開いた状態で右下の4-1: 地形データをiRIC用にCSVで書き出しをクリックして実行するとその場所にout_tpo_blender2iric.csvが出力されます。

image.png

iRICで点群データを読み込み

先ほど出力したデータは点群の地形高のデータとなっているのでiRICで読み込んで更新にマッピングを行います。

今回は違いが分かりやすいように堤内地にスカルプト機能を使って山をつくってみました。
iRICの格子の鳥観図ウィンドウで表示すると以下のようになります。

image.png

image.png

この方法を使えば横断測量データ間の補完で不自然になった箇所の修正や、任意の箇所に砂州を作ってみることや、
Blenderでいちから地形グリッドメッシュを作成し、仮想の地形での計算なども簡単に行えるようになりますのでぜひやってみてください!

まとめ

  • Blenderの高度な編集機能を使用して地形データをグリッドメッシュで編集できた
  • iRIC2Blenderを使用することでiRIC↔Blenderのデータの入出力が簡単に行えた
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1