Model Derivative API の役割と変換可能なファイル形式

Forge Viewer で 3D モデルや 2D 図面を表示する場合には、事前にデザインファイルを Model Derivative API で SVF ファイルに変換する必要があります。変換が正常に終了して SVF ファイルのドキュメント ID(URN)がわかれば、HTML ファイルの <div>~</div> タグで指定した領域に、適切な Viewer コードで 3D モデルや 2D 図面をストリーミングで表示することが出来ます。

Model Derivative API には、この他にも変換時にサムネイル画像を生成する機能や、Manifest(マニフェスト)と呼ばれる情報からデザインファイルに登録されたビュー情報などを提供する機能があります。また、情報の生成に若干時間がかか場合もありますが、オブジェクトの階層構造やジオメトリのメタデータを取得することも出来ます。

SVF ファイル変換とは別に、Model Derivative API には 、Data Management API でアップロードしたデザイン ファイルを他のデザイン ファイル形式に変換する機能も実装されています。

Forge Workshop などでよく受けるご質問の中に「どのデザイン ファイル形式を変換出来るのか?」というものがあります。

実はこの解も Model Derivative API  で提供されています。endpoint  https://developer.api.autodesk.com/modelderivative/v2/designdata/formats、メソッド  GET で返される JSON レスポンスで、ファイル間の変換でサポートされるファイル形式を把握することが出来ます。2017年4月の時点で返される JSON は、少し長くなりますが次のとおりです。

{
    "formats": {
        "stl": [
            "f3d",
            "fbx",
            "iam",
            "ipt",
            "wire"
        ],
        "step": [
            "f3d",
            "fbx",
            "iam",
            "ipt",
            "wire"
        ],
        "dwg": [
            "f2d",
            "f3d",
            "rvt"
        ],
        "iges": [
            "f3d",
            "fbx",
            "iam",
            "ipt",
            "wire"
        ],
        "obj": [
            "asm",
            "f3d",
            "fbx",
            "iam",
            "ipt",
            "neu",
            "prt",
            "sldasm",
            "sldprt",
            "step",
            "stp",
            "stpz",
            "wire",
            "x_b",
            "x_t",
            "asm\.\d+$", 
            "neu\.\d+$", 
            "prt\.\d+$"
        ],
        "svf": [
            "3dm",
            "3ds",
            "asm",
            "catpart",
            "catproduct",
            "cgr",
            "collaboration",
            "dae",
            "dgn",
            "dlv3",
            "dwf",
            "dwfx",
            "dwg",
            "dwt",
            "dxf",
            "exp",
            "f3d",
            "fbx",
            "g",
            "gbxml",
            "iam",
            "idw",
            "ifc",
            "ige",
            "iges",
            "igs",
            "ipt",
            "jt",
            "max",
            "model",
            "neu",
            "nwc",
            "nwd",
            "obj",
            "pdf",
            "prt",
            "rcp",
            "rvt",
            "sab",
            "sat",
            "session",
            "skp",
            "sldasm",
            "sldprt",
            "smb",
            "smt",
            "ste",
            "step",
            "stl",
            "stla",
            "stlb",
            "stp",
            "stpz",
            "wire",
            "x_b",
            "x_t",
            "xas",
            "xpr",
            "zip",      
            "asm\.\d+$",      
            "neu\.\d+$",      
            "prt\.\d+$"
        ],
        "thumbnail": [
            "3dm",
            "3ds",
            "asm",
            "catpart",
            "catproduct",
            "cgr",
            "collaboration",
            "dae",
            "dgn",
            "dlv3",
            "dwf",
            "dwfx",
            "dwg",
            "dwt",
            "dxf",
            "exp",
            "f3d",
            "fbx",
            "g",
            "gbxml",
            "iam",
            "idw",
            "ifc",
            "ige",
            "iges",
            "igs",
            "ipt",
            "jt",
            "max",
            "model",
            "neu",
            "nwc",
            "nwd",
            "obj",
            "pdf",
            "prt",
            "rcp",
            "rvt",
            "sab",
            "sat",
            "session",
            "skp",
            "sldasm",
            "sldprt",
            "smb",
            "smt",
            "ste",
            "step",
            "stl",
            "stla",
            "stlb",
            "stp",
            "stpz",
            "wire",
            "x_b",
            "x_t",
            "xas",
            "xpr",
            "zip",     
            "asm\.\d+$",      
            "neu\.\d+$",      prt\.\d+$"
        ],
        "fbx": [
            "f3d"
        ],
        "ifc": [
            "rvt"
        ]
    }
}

ここでは冒頭の dwg ファイルの記述に着目してみます。

     : 
"dwg": [
    "f2d",
    "f3d",
    "rvt"
],     
     :

整形された状態で JSON を示しているので若干分かりやすくなっていると思いますが、一番内側の文字列がサポートされる変換前のファイル形式で、それらを囲む 1 レベル外側に明記されているのが変換後の拡張子です。つまり、f3d(Fusion 360 3D  アーカイブ形式)、f2d(Fusion 360 図面アーカイブ形式)、rvt(Revit プロジェクト形式)を dwg(AutoCAD 図面ファイル形式)に変換出来ることを意味しています。

同じレベルで svf ファイルに着目すると、SVF ファイルをさまざまファイル形式から変換出来ることがわかります。この場合、Forge Viewer に表示出来るということになります。

なお、変換可能なファイル形式と変換前のファイル形式については、デベロッパ ポータル上で Model Derivative API の Overview >> Supported Translation ページ(https://developer.autodesk.com/en/docs/model-derivative/v2/overview/supported-translations/)でも紹介されています。

1 つ誤解が生じているのが SVF ファイルに変換可能となっている RCP ファイル形式についてです。RCP ファイルは、ReCap Project ファイル形式を示していますが、この形式に 2 種類が存在している点に注意が必要です。1 つは、写真から 3D データを生成する ReCap 360 クラウド サービス のプロジェクト ファイルで、もう 1 つは、点群データの統合や編集をおこなう ReCap デスクトップ製品 のプロジェクト ファイルです。

前者はテクスチャ画像付きの 3D メッシュ用であり、後者は点群用とも考えることが出来ます。Supported Translation ページ で RCP ファイルがサポート対象になっているのは、ReCap 360 クラウド サービスが内部的に使用している テクスチャ画像付きの 3D メッシュ用のもので、残念ながら、ReCap デスクトップ製品で保存可能な点群用の RCP ファイルを表示するものではありません。

現在(2017年5月現在)、Forge Viewer には点群データを表示する機能はありませんのでご注意ください。ReCap 360 クラウドサービスや Forge の Reality Capture API(ベータ)が生成した テクスチャ画像付きの 3D メッシュ データは、OBJ ファイルをテクスチャ画像と MTL ファイルとを ZIP 圧縮したものを Model Derivative API で変換することで、Forge Viewer で表示することが出来ます。

By Toshiaki Isezaki