Forge Viewer:3D モデル差異の視覚化

BIM 360 Team の登場とともに導入された機能に、3D モデル バージョン間の差異をチェックするモデル比較機能がありました。現在では、BIM 360 の 「変更の表示」機能として利用することが出来ます。

3Dモデルの比較画面で、バージョン1とバージョン2の建物の差異を示す画像。変更点のリストと統計情報が画面右側に表示されている。

この機能は Autodesk.DiffTool エクステンションで実装されていて、Forge Viewer 上で利用することで、2 つのバージョン間の変更点(差異)を視覚的に Viewer 上に表現することが出来るようになります。いまのところ、Viewer の Extension ドキュメントには記載されていませんので、参考としてご確認ください。

Autodesk.DiffTool エクステンションを使用するには、まず 2 つのモデル Viewer カンバスにロードしてから、オプションを設定してエクステンションをロードするだけです。

指定可能なオプションは次のとおりです。

  • primaryModels (必須):

ロードされた Autodesk.Viewing.Model インスタンスの配列で、追加、削除、変更されたオブジェクトの点で、現在の状態として差分操作に参加します。

  • diffModels (必須):

ロードされた他の Autodesk.Viewing.Model インスタンスの配列です。比較するモデルのペアを定義するには、配列長が primaryModels と一致している必要があります。

  • versionA

モデルのバージョン識別子です。

  • versionB(必須):

差分モデルのバージョン識別子です。

  • mimeType (必須):

mimeType を定義することで、内部ロジックが若干適応され、モデルから分野、カテゴリ、名前をより良く抽出できるようになります。現在サポートされている MIME タイプは次のとおりです。

    • application/vnd.autodesk.revit’:Revit プロジェクト ー .rvt
    • ‘application/vnd.autodesk.autocad.dwg’ :AutoCAD 3D モデル -.dwg
    • ‘application/vnd.autodesk.navisworks’ :Navisworks モデル ー .nwd

変更された要素のみを表示したりといったように、フィルタリング操作の機能を提供します。また、個々の変更点を簡単に見つけることができます。

3Dモデル間の差異を表示するAutodesk.DiffToolエクステンションのインターフェース。情報パネルが表示されており、2つのバージョンのモデル間の変更点がハイライトされている。

Autodesk.DiffTool エクステンション は、「並べて表示」ビュー(’sidebyside’)や「オーバーレイ」ビュー(’overlay’)を提供します。特にコードを追加することなく、用意されたツールバー ボタンから両者を切り替えることが可能です。

左右に並べた2つの3Dモデルにおける変更点を示す画像。左側は最新バージョン、右側は以前のバージョンで、変更された要素が強調表示されている。

[変更] パネル右上には、2 つのモデルの比較結果を CSV ファイルとして保存するボタンも用意されています。

A user interface displaying change information with three boxes showing counts for added, deleted, and modified items, alongside a button to save comparison results as a CSV file.

Autodesk.DiffTool エクステンションは次のようなコードでロードして利用が可能です。

function onViewerGeometryLoaded(event) {
    var extensionConfig = {}
    extensionConfig.mimeType = 'application/vnd.autodesk.revit'
    extensionConfig.primaryModels = [_viewer3d_1.getVisibleModels()[1]]
    extensionConfig.diffModels = [_viewer3d_1.getVisibleModels()[0]]
    extensionConfig.diffMode = 'overlay'
    extensionConfig.versionA = 'sample_architecture.rvt v1'
    extensionConfig.versionB = 'sample_architecture.rvt v2'
    _viewer3d_1.loadExtension('Autodesk.DiffTool', extensionConfig)
        .then(function (res) {
            window.DIFF_EXT = _viewer3d_1.getExtension('Autodesk.DiffTool');
            console.log(window.DIFF_EXT);
        })
        .catch(function (err) {
            console.log(err);
        });
}

注意事項と制限事項:

  • Autodesk.DiffTool エクステンションは SVF ベースのモデルや SVF2 ベースのモデルで動作します。
  • クラウド上でバージョンのモデル間の差異を返す REST API はありません。現状では、Model Derivative API:メタデータの活用 のブログ記事でご紹介した方法でメタデータを解析することになってしまいます。

By Toshiaki Isezaki

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading