以前、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
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。