アップロードしたファイルの変換
FORGEビューアで見ることができるファイルフォーマットは多数ありますが、それはそのファイルを直接見ているのではなく、ビューア用に変換する必要があります。その拡張子はどうやら「svf」という形式のようで、この変換はModel Derivative API
で行います。デリバティブってなんか危なっかしい響きがありますが、大丈夫なんですかね。その方法を説明したチュートリアルがあります。Prepare a File for the Viewer
その前に!(Before you begin)やるべきことがあります。- Successfully acquire an OAuth token with the
data:write
anddata:read
scopes. - Upload a source file, as described in the Create an App-Managed Bucket and Upload a File tutorial, and note the source URN (
objectId
).
(1) アクセストークンを「data:write」と「data:read」で取得しましょう。
(2) ファイルをアップロードして(前回やりました) objectIdのURNをメモしておいてください。
だそうです。(1)はもう慣れたと思いますが、ポイントはスコープを二つ使うということです。DHCを起動しましょう。
変換用のアクセストークンの取得
いちいちアクセストークンを適切なスコープで取得することが重要なポイントとなります。ヘルプにはこのように書いてあります。
DHCの設定は次の図のようになりますが、
ポイントはSCOPEのところに
data:write data:read
と半角スペースでつないで二つのスコープを入れることです。
これで、SENDボタンを押すと、いつものようにアクセストークンが返ってきます。
これは単純に送信先にPOSTするということですから、DHCとしては
次にヘッダーです。
<token>は先ほど取得したアクセストークンを使います。ですから、DHCのヘッダーは
となります。
問題はBODYセクションですが、なんだかこむつかしいことが書かれています。
必ず必要なところだけ取り出してみました。JSON形式で書けばいいのですが、なんだかよくわかりませんねぇ。どうやらinputというセクションの中にurnというセクションを入れ子にして作りなさい、という意味らいいです。
従いまして
{
"input" : {
"urn" : Base64でエンコードされたオブジェクト(アップロードしたファイルのobjectid)のurn
},
というように書きます。これはこのサイトを使って、前回取得したurnをエンコードします。
エンコード後の文字はなんだか意味不明ですが、この文字列でオブジェクト(アップロードしたファイル)を指定します。
またoutput.formatsですが、「どんな形式に変換したいのか?」の情報を記入します。これはいろいろなフォーマットを指定できますが、SVFの場合はさらにどんなビューを変換するのかを指定します。
指定できるのは2dと3dだけですが、これらを[ ]でくくって指定できます。従いまして、Bodyの部分は例えば以下のようになります。{ "input" : { "urn" : ”dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6YmxhY2tzbWl0aGJ1Y2tldDEyMDMvc2FtcGxlcHJvamVjdDAxLnJ2" }, "output" : { "formats" : [ { "type" : "svf", "views" : ["2d", "3d"] } ] }}
"output" : [{"type":"svf", "view":["2d","3d"]}]の指定がちょっと特徴的ですが、JSON形式なので、]や}がチャンと対になっているように気を付けてください。DHCの画面は次のようになります。
これでSendを押すと200OKの値が返ってくるはずです。
変換命令が受けつけられました。
ヘルプはこちら。
DHCの設定は次の図のようになりますが、
ポイントはSCOPEのところに
data:write data:read
と半角スペースでつないで二つのスコープを入れることです。
scopeをdata:write data:read の二つを設定 |
これで、SENDボタンを押すと、いつものようにアクセストークンが返ってきます。
{
"access_token": "LBBv4IgAg4qhe7P1zaRJcff6f3VK",
"token_type": "Bearer",
"expires_in": 86399
}
変換命令を送る(Model Derivative API)
アクセストークンを取得できたら、前回アップロードしたファイルをSVF形式に変換します。この掟はヘルプに書いてあります。まずはRequestですがMethod and URI | POST https://developer.api.autodesk.com/modelderivative/v2/designdata/job |
次にヘッダーです。
Authorization | yes | string | Must be Bearer <token> , where <token> is obtained via OAuth |
Content-Type | yes | string | Must be application/json |
ヘッダーの設定 |
問題はBODYセクションですが、なんだかこむつかしいことが書かれています。
input | yes | object | Group of inputs |
input.urn | yes | string | The design URN; returned when uploading the file to Forge The URN needs to be `Base64 (URL Safe) encoded`_span>. |
output | yes | string | Group of outputs |
output.formats | yes | array: object | Group of requested formats/types. User can request multiple formats. |
formats.type | yes | string | The requested output types. Possible values: DWG , FBX , IFC , IGES , OBJ , STEP , STL , SVF , thumbnail . For a list of supported types, call the GET formats endpoint. |
従いまして
{
"input" : {
"urn" : Base64でエンコードされたオブジェクト(アップロードしたファイルのobjectid)のurn
},
というように書きます。これはこのサイトを使って、前回取得したurnをエンコードします。
urn:の文字も含んでENCODEボタンで変換する。 |
謎の文字列が表示される |
またoutput.formatsですが、「どんな形式に変換したいのか?」の情報を記入します。これはいろいろなフォーマットを指定できますが、SVFの場合はさらにどんなビューを変換するのかを指定します。
Views | yes | array: string | Required options for SVF type. Possible values: 2d , 3d |
"output" : [{"type":"svf", "view":["2d","3d"]}]の指定がちょっと特徴的ですが、JSON形式なので、]や}がチャンと対になっているように気を付けてください。DHCの画面は次のようになります。
: { [を間違えないように |
200OK (゜-゜)気持ちいい! |
今どんな感じ?
変換が開始されましたが、それには時間がかかります。お仕事の進行状況を問い合わせて、データが準備できたかどうか確認してみましょう。ヘルプはこちら。
こちらは現在のオブジェクトの状態を問い合わせるAPIです。使い方はとても単純で
これは単純に、URIの「:urn」の部分を、上記のurnに入れ替えて、data:readのアクセストークンを使ってGETするだけです。以下はDHCの設定です。ヘッダーにはAuthorizationに「Bearer アクセストークン」のいつものパターンですね。
やたらと長いendpointになりますねー。この例では
developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6YmxhY2tzbWl0aGJ1Y2tldDEyMDMvc2FtcGxlcHJvamVjdDAxLnJ2dA/manifest
となりました。レスポンスは
ですので、progress はcompleteなので、変換はすでに終わったようです。
じゃあ、いよいよビューアで表示してみますか!
Method and URI | GET https://developer.api.autodesk.com/modelderivative/v2/designdata/:urn/manifest |
Authentication Context | app only |
Required OAuth Scopes | data:read |
Data Format | JSON |
長ーいendpoint |
やたらと長いendpointになりますねー。この例では
developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6YmxhY2tzbWl0aGJ1Y2tldDEyMDMvc2FtcGxlcHJvamVjdDAxLnJ2dA/manifest
となりました。レスポンスは
{
"type": "manifest",
"hasThumbnail": "true",
"status": "success",
"progress": "complete",
"region": "US",
"urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6YmxhY2tzbWl0aGJ1Y2tldDEyMDMvc2FtcGxlcHJvamVjdDAxLnJ2dA",
"version": "1.0",
[
{"name": "sampleproject01.rvt", "hasThumbnail": "true", "status": "success", "progress": "complete",…},
{"status": "success", "progress": "complete", "outputType": "thumbnail", "children":[{"guid": "0576ce39-e54e-369e-da0e-7a306abf2144",…}
]
じゃあ、いよいよビューアで表示してみますか!
0 件のコメント:
コメントを投稿