Autodesk Forge では、2-legged 認証を利用した場合でも、3-legged 認証を利用した場合でも、多くの場合、最終的に JavaScript で記述したクライアントコードを実装して、Web ブラウザ上に 3D モデルや 2D 図面を表示することになるはずです。もちろん、2-legged 認証での場合には、Data Management API でデザイン ファイルをアップロードしたり、Model Derivative API で表示用の変換処理をする場合もあります。
実は、3D モデルや 2D 図面を表示する JavaScript コードには、何パターンかプログラムの書き方が存在します。View and Data API 時代からの遷移も含め、Forge Viewer の JavaScript ライブラリを提供するオートデスク自体が、JavaScript ライブラリを拡張すると同時にラッパーを作成して簡素化しているのが要因です。
例えば、デベロッパ ポータル(http://developer.autodesk.com) に記載されている Viewer の Step by Step Tutorial には、Basic Viewer と Basic Application という 2 パターンが説明されています。 また、過去のブログ記事 Postman による Viewer 利用手順の理解 - 2 legged 認証 や Forge Viewer チュートリアル ~ その1 ~ Node.js サーバーの実装 では、最後の部分で Autodesk.ADN.Toolkit.Viewer.js という ADN チームが作成した JavaScript ライブラリでラップし、RESTful API や Viewer 表示用のコードを隠蔽しています。
この中で、現在、推奨されているのは、新しい Autodesk.Viewing.ViewingApplication オブジェクトを利用する Basic Application で紹介されるコードです。Forge Viewer のバージョン指定 でも触れていますが、Forge Viewer は数ヶ月毎にバージョンアップしているほか、オートデスクが用意した Extension も増加傾向にあります。このため、変換されたデザイン ファイルが 2D View(図面/シート)や 3D View(3D モデル)の判定を含む表示処理や、Extension のロード方法をラップして提供するようになっているのです。
どの方法を使っても表示される結果は同じになりますが、今後の拡張も考慮すると、Basic Application 方式を採用するのが適切です。
下記に、デベロッパ ポータルにある Basic Viewer と Basic Application の方法で表示処理を実装した HTML ファイルを用意しました。 Access Token と表示する URN(ドキュメントID)を URL パラメータで渡せるように、両パラメータの値を取得する JavaScript コードを追記したものを用意しましたので、それぞれ、内容を確認してみてください。
var token = Autodesk.Viewing.Private.getParameterByName("accessToken");
var urn = Autodesk.Viewing.Private.getParameterByName("urn");
Basic Viewer
Basic Application
Basic_Application.html をダウンロード
利用方法は、 Viewer 利用手順の理解 - 2 legged 認証 の 6. と同様、ダウンロードした HTML のファイル名の後に ? でパラメータを接続して、パラメータ間は & で統合して、ブラウザで開くだけです。例えば、Access Token が YTXTGxSkNUOpztepIsgHbZTUWtUX で、ドキュメント ID(URN)が dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6MGZia3Yxc2hicnR1aWRpdDUxa2VjdjQ1dXVqdnNobi10cmFuc2llbnQvTFJUX1N0YXRpb24ubndk の場合、デスクトップにダウンロード済みの basic_application.html には、次のように表示するドキュメントを引き渡して表示することが出来ます。ここでは、Windows に isezakt のユーザ名でサインインしたユーザのデスクトップを仮定しています。ご自身の環境にあわせて、適宜、パスを変更してください。
file:///C:/Users/isezakt/Desktop/basic_application.html?accessToken=YTXTGxSkNUOpztepIsgHbZTUWtUX&urn=dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6MGZia3Yxc2hicnR1aWRpdDUxa2VjdjQ1dXVqdnNobi10cmFuc2llbnQvTFJUX1N0YXRpb24ubndk
なお、 Autodesk.Viewing.ViewingApplication オブジェクトを利用する Basic Application 方式では、Extension のロード方法も最適化されています。Autodesk.ADN.Toolkit.Viewer.js や Basic Viewer 方式では、Extension のロードに Autodesk.Viewing.Viewer3D.loadExtension メソッド を利用していました。Basic Application では、Autodesk.Viewing.ViewingApplication オブジェクトの初期化時に、config パラメータとして Extension 名を渡すことで、適切にロードさせることが出来ます。下記は、Viewing.Extension.MyExtension 名の Extension をロードさせる場合の記述です。
var documentId = 'urn:' + urn;
Autodesk.Viewing.Initializer(options, function onInitialized(){
var config3d = {
extensions: ['Viewing.Extension.MyExtension']
};
viewerApp = new Autodesk.Viewing.ViewingApplication('MyViewerDiv');
viewerApp.registerViewer(viewerApp.k3D, Autodesk.Viewing.Private.GuiViewer3D, config3d);
viewerApp.loadDocument(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
});
一度、この Basic Application 方式もお試しください。
By Toshiaki Isezaki
コメント