以前、Viewer の「一人称視点ツール」 のブログ記事でご案内したウォークスルー機能は、APS Viewer の BimWalkExtension で実装されています。GuiViewer3D で Viewer カンバスを用意した場合、このエクステンション(Autodesk.BimWalk)は自動的にロードされるので、アプリ側で明示的なロードは必要ありません。

BimWalkExtension のドキュメント にあるとおり、ウォークスルーモードは activate() でオン、deactivate() でオフにすることが出来るので、表示するビューによってすぐに有効(オン)にしてウォークスルーを開始することが出来ます。

次の例では、EXTENSION_LOADED_EVENT イベントでロードされた各種エクステンションの中から Autodesk.BimWalk エクステンションのロードを検出し、HTML 上に配置した “camera”(id)コントロールで特定のビュー選択時にウォークスルーをオン・オフするものです。
_viewer.addEventListener(Autodesk.Viewing.EXTENSION_LOADED_EVENT, onExtensionLoaded);
...
function onExtensionLoaded(event) {
if (event.extensionId === 'Autodesk.BimWalk') {
var ext = _viewer.getExtension('Autodesk.BimWalk');
if ($("#cameras").val() === '0') {
ext.deactivate();
} else {
ext.activate();
}
}
}
ウォークスルーの際、Viewer の「一人称視点ツール」 で触れた「重力を有効にする」がオンになっていると、ウォークスルー中の視点が上下にぶれる現象が発生してしまいます。次の例では、床や机などと視点との高さを一定にしようとするため、後半で視点がジャンプしたような結果になってしまいます。

アプリ側でウォークスルーを自動で有効(オン)にするような場合には、コード上で「重力を有効にする」が無効(オフ)に指定することも出来ます。
ext.tool.navigator.enableGravity(false);
この指定でウォークスルー中の視点の上下移動を抑止出来るようになります。

By Toshiaki Isezaki

Leave a Reply