Forge Viewer からの情報表示で長らくご要望のあった「部屋」、「スペース」、「ゾーン」といった情報を 3D ビュー上でプロパティとともに表現出来るようになっています。BIM 360 Docs 上では、少し前から可能でしたが、ようやく、Forge Viewer を使った 3rd party アプリケーションでも、同様の表現が可能になることになります。
ただし、事前の準備が必要になる点にご注意ください。Model Derivative API の POST job endpoint を用いて、Revit プロジェクト ファイル(.rvt)を SVF ファイルに変換する際、Request Body に advanced オプションである generateMasterViews を true に設定して変換をする必要があります。変換時には、同時に Request Header の x-ads-force オプションも true にしてください。
{
"input": {
"urn": "<Your Encoded URN>"
},
"output": {
"formats": [
{
"type": "svf",
"views": [
"2d",
"3d"
],
"advanced": {
"generateMasterViews": true
}
}
]
}
}
generateMasterViews を指定しない状態、または、generateMasterViews を false にして変換された SVF には、フロアプランにラベル付けされた部屋が含まれても、3Dビューの一部ではないため、部屋はモデルに含まれません。逆に、generateMasterViews を true に指定すると、Revit モデルで作成したフェーズ毎に、「部屋」などの要素を含むマスタービュー(3D ビュー)が生成されるようになります。
マスタービューの表示名は、既定値として Revit モデルのフェーズ名になります。ただし、その名前のビューがすでに存在する場合、既定値の表示名に数字を追加します。例えば、Revit モデルで「新築」フェーズでビュー名に「新築」が存在する場合、「新築」フェーズのマスタービュー名は「新築_1」となります。
下記のそのように状態で生成されたマニフェストの抜粋です。
:
{
"guid": "e8a7e57c-85e4-ea7a-4ec6-7bc1a70b96f3",
"type": "geometry",
"role": "3d",
"name": "新築_1",
"viewableID": "c884ae1b-61e7-4f9d-0004-719e20b22d0b-0009b28f",
"phaseNames": "新築",
"status": "success",
"hasThumbnail": "true",
"progress": "complete",
"children": [
{
"guid": "c884ae1b-61e7-4f9d-0004-719e20b22d0b-0009b28f",
"type": "view",
"role": "3d",
"name": "新築_1",
"status": "success",
"progress": "complete",
"camera": [
206.648636,
-206.648636,
231.336945,
-0.000031,
0.000031,
24.688278,
-0.408248,
0.408248,
0.816497,
1.505229,
0,
1,
1
]
},
{
"guid": "efaa682e-b04e-112f-1353-15bf6b9999c0",
"type": "resource",
"role": "graphics",
"urn": "urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZnBkLWphcGFuLWF2cGc1ZmdyaDVxYnBvOGhrMTVsc3p6ZzhkcmZrbnJvdXdtd2QwcDhsbXNlMzJwN29qb3h6NXB6b251dGktN2cvMDQtMDQtMDIucnZ0/output/Resource/3D ビュー/08f99ae5-b8be-4f8d-881b-128675723c10/新築_1/新築_1.svf",
"mime": "application/autodesk-svf"
},
{
"guid": "9c16cdd6-e583-2405-9fb0-6b1390d4576e",
"type": "resource",
"role": "thumbnail",
"urn": "urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZnBkLWphcGFuLWF2cGc1ZmdyaDVxYnBvOGhrMTVsc3p6ZzhkcmZrbnJvdXdtd2QwcDhsbXNlMzJwN29qb3h6NXB6b251dGktN2cvMDQtMDQtMDIucnZ0/output/Resource/3D ビュー/08f99ae5-b8be-4f8d-881b-128675723c10/新築_1/新築_11.png",
"resolution": [
100,
100
],
"mime": "image/png",
"status": "success"
},
{
"guid": "de74b498-9137-337d-d636-a8ad3b324e75",
"type": "resource",
"role": "thumbnail",
"urn": "urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZnBkLWphcGFuLWF2cGc1ZmdyaDVxYnBvOGhrMTVsc3p6ZzhkcmZrbnJvdXdtd2QwcDhsbXNlMzJwN29qb3h6NXB6b251dGktN2cvMDQtMDQtMDIucnZ0/output/Resource/3D ビュー/08f99ae5-b8be-4f8d-881b-128675723c10/新築_1/新築_12.png",
"resolution": [
200,
200
],
"mime": "image/png",
"status": "success"
},
{
"guid": "025a27a4-b2ca-1d14-9d23-6cbfa1cbbaaa",
"type": "resource",
"role": "thumbnail",
"urn": "urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZnBkLWphcGFuLWF2cGc1ZmdyaDVxYnBvOGhrMTVsc3p6ZzhkcmZrbnJvdXdtd2QwcDhsbXNlMzJwN29qb3h6NXB6b251dGktN2cvMDQtMDQtMDIucnZ0/output/Resource/3D ビュー/08f99ae5-b8be-4f8d-881b-128675723c10/新築_1/新築_14.png",
"resolution": [
400,
400
],
"mime": "image/png",
"status": "success"
}
]
},
:
通常、上記青字の URN を Viewer3D.LoadModel() で指定することで、「部屋」要素等を含む マスタービュー(3D ビュー)を表示させることが出来ますが、日本語が含まれる場合、エラーとなってしまうようです。
Viewable は正しく生成されていますので、loadDocumentNode() の viewables 配列のインデックスを適切な値に変更することで、「部屋」要素等を含むフェーズ毎のマスタービューを表示させることが出来ます。
var _viewer = null;
function initializeViewer() {
var options = {
env: 'AutodeskProduction',
api: 'derivativeV2', // for models uploaded to EMEA change this option to 'derivativeV2_EU'
language: 'ja',
getAccessToken: getCredentials
};
Autodesk.Viewing.Initializer(options, function () {
_viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('viewer3d'));
var startedCode = _viewer.start();
if (startedCode > 0) {
console.error('Failed to create a Viewer: WebGL not supported.');
return;
} console.log('Initialization complete, loading a model next...');
var documentId = 'urn:' + <your base64 encoded urn>;
Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
});
function onDocumentLoadSuccess(viewerDocument) {
var viewables = viewerDocument.getRoot().search({
'role': '3d'
});
_viewer.loadDocumentNode(viewerDocument, viewables[4]).then(i => {
});
}
function onDocumentLoadFailure() {
console.error('Failed fetching Forge manifest');
}
}
なお、「部屋」等の要素は、既定値で非表示になっていますので、モデル ブラウザで適宜、表示/非表示を切り替えてください。下図は、rac_basic_sample_project.rvt サンプル プロジェクトに定義された「Working Drawings」フェーズと「Learning Content」フェーズの内、「Working Drawings」フェーズのマスタービューから「部屋」全体と「Kitchen & Dining 101」のみを表示切り替えする例です。
By Toshiaki Isezaki
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。