APS Viewer:一人称視点と重力設定

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

3Dビジュアライゼーションビューアのインターフェース、各種ツールアイコンが表示されたキャンバス。上部に一人称視点ツール、下部にユーザーインターフェースのコントロールが見える。

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

A modern office space with a white table and gray chairs, featuring UI buttons labeled 'deactivate()' and 'activate()' for a walkthrough function.

次の例では、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 の「一人称視点ツール」 で触れた「重力を有効にする」がオンになっていると、ウォークスルー中の視点が上下にぶれる現象が発生してしまいます。次の例では、床や机などと視点との高さを一定にしようとするため、後半で視点がジャンプしたような結果になってしまいます。

3Dモデルのカフェ内部の見取り図。座席、テーブル、パーティション、観葉植物が配置されている。

アプリ側でウォークスルーを自動で有効(オン)にするような場合には、コード上で「重力を有効にする」が無効(オフ)に指定することも出来ます。

ext.tool.navigator.enableGravity(false);

この指定でウォークスルー中の視点の上下移動を抑止出来るようになります。

A 3D rendered workspace interior featuring seating areas, tables, and partitioned spaces, illustrating an architectural visualization tool.

By Toshiaki Isezaki


Comments

Leave a Reply

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading