You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否修改Autodesk Viewer中fitToView函数的缩放因子?

调整Autodesk Viewer fitToView的视图缩放距离

以下几种方法可以解决fitToView函数无法直接设置缩放因子的问题:

  • 先执行默认适配再调整相机位置
    先调用fitToView()让视图自动适配模型,再基于当前相机位置向外偏移拉远视图:

    // 执行默认视图适配
    viewer.fitToView();
    // 获取当前相机的位置与目标点
    const nav = viewer.navigation;
    const pos = nav.getPosition();
    const target = nav.getTarget();
    // 计算视线方向并生成偏移量(这里设置为当前距离的20%)
    const dir = new THREE.Vector3().subVectors(pos, target).normalize();
    const distance = pos.distanceTo(target);
    const offset = dir.multiplyScalar(distance * 0.2);
    // 更新相机位置
    nav.setRequestTransition(pos.add(offset), target);
    
  • 自定义适配逻辑,手动计算相机位置
    不依赖默认的fitToView,直接基于模型包围盒计算合适的相机位置,通过自定义缩放因子控制视图距离:

    // 获取模型的包围盒
    const boundingBox = viewer.model.getBoundingBox();
    const center = boundingBox.center();
    const size = boundingBox.getSize(new THREE.Vector3());
    // 计算包围盒对角线长度作为基准
    const diag = size.length();
    // 自定义缩放因子(大于1表示拉远视图)
    const scaleFactor = 1.5;
    // 根据相机视场角计算合适的相机距离
    const fov = viewer.navigation.getVerticalFov();
    const distance = (diag / 2) / Math.tan(fov / 2 * Math.PI / 180) * scaleFactor;
    // 设置相机方向(可根据需求调整视角)
    const cameraDir = new THREE.Vector3(0, -1, 1).normalize();
    const cameraPos = center.clone().add(cameraDir.multiplyScalar(distance));
    // 更新相机位置与目标点
    viewer.navigation.setRequestTransition(cameraPos, center);
    
  • 修改Autocam的默认适配缩放因子
    调整Viewer内置Autocam的fitScale参数,该参数控制适配时的缩放比例,大于1会让视图更远:

    // 设置适配缩放因子
    viewer.autocam.fitScale = 1.5;
    // 执行视图适配
    viewer.fitToView();
    

    注:部分Viewer版本可能需要在初始化阶段配置该参数,建议测试当前版本的兼容性。

内容的提问来源于stack exchange,提问作者IBG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:47:17