LoginSignup
8
2

Unreal Engine で BIM のメタデータいじってみる

Last updated at Posted at 2023-12-16

まえがき

なかむらた と申します。
Unreal Engine とか XR の分野から 建設ドメイン も部分的にやっている人間です。
BIMとかを触ることはあっても作る/使う ことは自分はないです。建設現場とかに行く人間ではないです。
そこまで、長年やってきたとかでもないので、認識甘かったり、情報間違ってるかもしれません。ご容赦を

これは Unreal Engine (UE) Advent Calendar 2023の16日目の記事です。

なので、主にUnreal Engine 界隈メインの読者を想定していて、BIM関連の軽い説明も書いておきます。

今回作ったもの

BIM とは

主に建設業関連の用語です!
BIM = Building Information Modeling

自分なりの説明だと、
建物の3Dモデルに、材料とかコストとかの属性データが付加された、建築物のデータベース。
建設に関わる、設計、施工、維持管理、等々を長期的視点で効率化していくための一手段。
とかいう風に認識してます。(ゆるゆる)

知ってる人も多いと思うんで軽く。
詳しくは自分で調べてください!

Revit とは

BIMでデファクトスタンダードみたいになってるソフトウェアです。
https://www.autodesk.co.jp/products/revit/

IFC とは

  • BIMの情報を保存するフォーマットの一つ。
                                           
image.pngIFC勉強会: IFCおよび関連技術とその動向 buildingSMART Japan 足立嘉信 様 より引用

IFC勉強会: IFCおよび関連技術とその動向 buildingSMART Japan 足立嘉信 様

国土地理院さんの資料も非常に僕は助かりました。

IFCファイル自体はテキストエディタとかで中身見て解読できる

Revit で Datasmith に書き出す。

image.png

Revit 用 Datasmith エクスポータ プラグイン を使ってExpoortすればよい

Datasmith に関して

Epic曰く

Datasmith は、コンテンツを Unreal Engine 5 に取り込むときに役に立つ各種ツールおよびプラグインをまとめたものです。

とのこと

他BIM/CADソフトとかからdatasmith形式にデータを変換してExportするSDK提供してたり、
フォーマット作ってたり、
Unreal Engine 内 のデフォルトプラグインとして機能提供してたり、

自分の認識ではDatasmithは幅広い範囲を守備していて、もわっとしている印象だったが、
どうやらもやっと広範囲という認識でよかったらしい。

例えば Revit からDatasmithを書き出すと、以下のように、
一つの udatasmithファイル と、そこから参照される、udsmeshとかいう謎ファイルがたくさんといくつかの画像ファイルが作成される。
image.png

udatasmith形式はテキストエディタ等で解読できる。
image.png
IFCに似てる
※udsmeshファイルはバイナリでテキストエディタ等で見れない
※rvtファイル (Revitのプロジェクトを保存するフォーマット) は余裕でバイナリ。

Unreal で BIM を表示してみる

Datasmithここからインポート (昔とUI変わってよく迷子になる)
image.png

.uatasmith フォーマットは当然、IFCファイルも直でインポート可能

以下のフォーマットがインポートできる

image.png
image.png

image.png

Datasmith形式ではなくIFCファイルを直接読み込んだ場合、この後に使うメタデータの情報がほとんど欠けている。
自分の設定不足なのか、そういう読み込み方なのかはわかりません。

メタデータを利用する

ビジュアライゼーションやシミュレーションとか、用途によってはBIMをUnreal Engine に持ってくるだけで意味がある場合もありますが、まあメタデータいじりたいですよね。

各 StaticMesh ごとに、メタデータが入っている。
image.png

壁とかだとこんなメタデータが入ってた

image.png

メタデータいじってるところはこんな感じです。
今回は Widget Blueprint 内に処理書いてます。
BIMのメタデータのうち、 Element Category に着目して、
コンストラクタで、それぞれのメタデータを持つ、Array of Actor Object References を作っておき、
ボタンを押したら、表示非表示の切り替えをArrayの数だけループで回してます。
(グループ化とかタグとかの方が絶対効率的だとは思う...)

image.png

そんな感じで、

インポート時にもメタデータいじれるらしい

Gameplay Tag とかを使えばもっとスマートな処理できそう。
image.png

  • インポート時にメタデータを読みながら、Gameplay Tag をつける。
    (例えばレベル(階層)ごと、とか、部材、カテゴリー(壁とかドアとか)ごととか)
  • gameplay tag 使ってランタイムに表示非表示に切り替える

とかとか、開発はしてないですが、多分そんなことはできそうですね。

その他参考ページ (もっとやりこみたい方向け)

Epic公式ドキュメント : Datasmith関連のC++ API

Epic公式ドキュメント : Datasmith エクスポート SDK ガイドライン

姉妹機能として Datasmith runtime plugin もあります。
https://docs.unrealengine.com/5.2/ja/using-datasmith-at-runtime-in-unreal-engine/

共同作業&ビジュアライズ等の用途で、Directlink っていう機能もあります。

以上! なかむらた でした!

8
2
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
8
2