ifcからglTFに変換したかった。
とある案件で、FMEを使ってifcからglTFに変換できるかを検証していたときに遭遇した現象と対処方法についての覚書です。
環境
- Windows 11
- FME Desktop 2022.2(Free trial版を利用)
- FKZViewer(IFCの見た目確認用) https://www.iai.kit.edu/english/1648.php
- Window付属の3Dビューワー(glTFファイルの見た目確認用)
テストデータ
以下のサイトのFZK HausとOffice Buildingを利用。
FKZViewerで表示するとこんな感じ。
現象
FMEのIfcReader(Industory Foundation Class STEP/XML Files(IFC)を利用してテストデータを読み込んだ時に、元形状には存在していない形状が作られてしまう。
バウンディングボックス(?)みたいなのがでちゃってますね。。
対処方法(初めに結論)
IfcReaderのReader Parameterで「Read all Geometric Representations」を「No」に設定することで回避できます。
途中経過
以下は結論に至るまでの話です。興味のある方お読みください。
この余分な形状はなんなのか。
試しにinspectorでIFC Hausの屋根にくっついているバウンディングボックスを選択してみました。
IFMEBoxがなんとなく怪しいです。
対処案1:IFMBoxをフィルタリング
まずは、単純に怪しいやつを除外ということでIFMEBoxをより分けてみました。
IFMEAggregateのままだと除外できない(と、思う)のでDeaggregatorを間にかませてからTesterでIFMEBoxとそうじゃないものをより分けます。
結果は以下の通り。
やっぱしIFMEBoxはバウンディングボックスっぽいですね。
対処案2(結論):「Read all Geometric Representations」を「No」に設定する
でも、いちいちDeaggregatorしてFilterするのは面倒くさいです。もっと簡単な方法はないのでしょうか。
IfcReaderのReader Parameterを調べてみたら「Read all Geometric Representations」と「Representations to Read」というパラメータがありました。怪しいです!
とりあえず、Read all Geometric Representationsを「No」に設定してみます。
すると「Representation to Read」が設定できるようになります。
設定ダイアログを開いてみたらデフォルトで「Box」は無視されるようになっていたので、このまま「OK」を選びます。
(Annotationの引き出し線とか要らない人は、ここで「Annotation」のチェックも外すとよいですね)
変換してみましょう。どきどき。。
やったぜ!
気になっている点
この方法、テストデータではうまくいっているけど、本当にBox形状を全部除外しちゃっても問題無いのだろうか。
(もっとセマンティックな基準でより分けられない?)
「FME "Read all Geometric Representations"」で検索してみたら同じ問題で悩んでいた人の記事を見つけました。
(こういう検索語って解決した後じゃないと思い浮かばないですよね。)
ここでFMEの中の人が
'Read all Geometric Representations' (eg. = No), and then leave the 'Representations to Read' as default:
と回答しているので問題ないのでしょうかね。
FME最高と叫びなさい
今回FMEを初めて触ってみましたが、便利ですね。
DFDがそのまま動き出すような感覚が見ていて楽しいです。
お値段もお高いですが。。