まえがき
なかむらた と申します。
Unreal Engine とか XR の分野から 建設ドメイン も部分的にやっている人間です。
BIMとかを触ることはあっても作る/使う ことは自分はないです。建設現場とかに行く人間ではないです。
そこまで、長年やってきたとかでもないので、認識甘かったり、情報間違ってるかもしれません。ご容赦を
これは Unreal Engine (UE) Advent Calendar 2023の16日目の記事です。
なので、主にUnreal Engine 界隈メインの読者を想定していて、BIM関連の軽い説明も書いておきます。
今回作ったもの
「Unreal Engine で BIM のメタデータいじってみる」https://t.co/bdIcGa8l62 #Qiitaアドカレ #Qiita
— なかむらた Nakamurata (@isutothukue) December 16, 2023
Unreal Engine (UE) Advent Calendar 2023 書きました!#UnrealEngine #BIM #Datasmith pic.twitter.com/uzFJqMptYV
BIM とは
主に建設業関連の用語です!
BIM = Building Information Modeling
自分なりの説明だと、
建物の3Dモデルに、材料とかコストとかの属性データが付加された、建築物のデータベース。
建設に関わる、設計、施工、維持管理、等々を長期的視点で効率化していくための一手段。
とかいう風に認識してます。(ゆるゆる)
知ってる人も多いと思うんで軽く。
詳しくは自分で調べてください!
Revit とは
BIMでデファクトスタンダードみたいになってるソフトウェアです。
https://www.autodesk.co.jp/products/revit/
IFC とは
- BIMの情報を保存するフォーマットの一つ。
IFC勉強会: IFCおよび関連技術とその動向 buildingSMART Japan 足立嘉信 様 より引用 |
IFC勉強会: IFCおよび関連技術とその動向 buildingSMART Japan 足立嘉信 様
国土地理院さんの資料も非常に僕は助かりました。
IFCファイル自体はテキストエディタとかで中身見て解読できる
Revit で Datasmith に書き出す。
Revit 用 Datasmith エクスポータ プラグイン を使ってExpoortすればよい
Datasmith に関して
Epic曰く
Datasmith は、コンテンツを Unreal Engine 5 に取り込むときに役に立つ各種ツールおよびプラグインをまとめたものです。
とのこと
他BIM/CADソフトとかからdatasmith形式にデータを変換してExportするSDK提供してたり、
フォーマット作ってたり、
Unreal Engine 内 のデフォルトプラグインとして機能提供してたり、
自分の認識ではDatasmithは幅広い範囲を守備していて、もわっとしている印象だったが、
どうやらもやっと広範囲という認識でよかったらしい。
例えば Revit からDatasmithを書き出すと、以下のように、
一つの udatasmithファイル と、そこから参照される、udsmeshとかいう謎ファイルがたくさんといくつかの画像ファイルが作成される。
udatasmith形式はテキストエディタ等で解読できる。
IFCに似てる
※udsmeshファイルはバイナリでテキストエディタ等で見れない
※rvtファイル (Revitのプロジェクトを保存するフォーマット) は余裕でバイナリ。
Unreal で BIM を表示してみる
Datasmithここからインポート (昔とUI変わってよく迷子になる)
.uatasmith フォーマットは当然、IFCファイルも直でインポート可能
Datasmith形式ではなくIFCファイルを直接読み込んだ場合、この後に使うメタデータの情報がほとんど欠けている。
自分の設定不足なのか、そういう読み込み方なのかはわかりません。
メタデータを利用する
ビジュアライゼーションやシミュレーションとか、用途によってはBIMをUnreal Engine に持ってくるだけで意味がある場合もありますが、まあメタデータいじりたいですよね。
メタデータいじってるところはこんな感じです。
今回は Widget Blueprint 内に処理書いてます。
BIMのメタデータのうち、 Element Category に着目して、
コンストラクタで、それぞれのメタデータを持つ、Array of Actor Object References を作っておき、
ボタンを押したら、表示非表示の切り替えをArrayの数だけループで回してます。
(グループ化とかタグとかの方が絶対効率的だとは思う...)
そんな感じで、
「Unreal Engine で BIM のメタデータいじってみる」https://t.co/bdIcGa8l62 #Qiitaアドカレ #Qiita
— なかむらた Nakamurata (@isutothukue) December 16, 2023
Unreal Engine (UE) Advent Calendar 2023 書きました!#UnrealEngine #BIM #Datasmith pic.twitter.com/uzFJqMptYV
インポート時にもメタデータいじれるらしい
Gameplay Tag とかを使えばもっとスマートな処理できそう。
- インポート時にメタデータを読みながら、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 っていう機能もあります。