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

如何从自定义服务器/Amazon S3获取SVF文件加载至Autodesk Forge Viewer

从自定义服务器/Amazon S3加载SVF到Autodesk Forge Viewer

前提说明

你需要先将源模型(如Revit、DWG等)转换为SVF格式,转换后的文件包包含主SVF文件、材质/纹理/几何数据目录、元数据文件等,需保证文件结构完整。


一、从自定义服务器加载

步骤1:部署SVF文件并配置CORS

  • 将完整的SVF文件包上传到自定义服务器,确保所有文件可通过HTTP/HTTPS直接访问。
  • 服务器必须配置CORS规则,允许Viewer所在域名跨域请求,示例Nginx配置:
    location /svf-storage {
      add_header Access-Control-Allow-Origin "https://your-viewer-domain.com";
      add_header Access-Control-Allow-Methods "GET, HEAD";
      add_header Access-Control-Allow-Headers "Content-Type";
    }
    
  • 若服务器需要身份验证,需提前准备好可用于请求文件的令牌。

步骤2:初始化Viewer并加载SVF

  • 引入Viewer官方资源:
    <link rel="stylesheet" href="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css" type="text/css">
    <script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js"></script>
    
  • 编写加载逻辑:
    const viewerDiv = document.getElementById('forgeViewer');
    const viewer = new Autodesk.Viewing.GuiViewer3D(viewerDiv);
    viewer.start();
    
    // 自定义服务器上SVF文件的URL
    const svfUrl = 'https://your-server.com/svf-storage/model.svf';
    const loadOptions = {
      modelNameOverride: '我的自定义模型',
      // 若服务器需要验证,添加令牌回调
      getAccessToken: (callback) => {
        callback('your-server-auth-token', 3600); // 令牌有效期(秒)
      }
    };
    
    Autodesk.Viewing.Document.load(svfUrl, (doc) => {
      const viewables = doc.getRoot().getDefaultGeometry();
      viewer.loadDocumentNode(doc, viewables, loadOptions);
    }, (error) => {
      console.error('加载失败:', error);
    });
    

二、从Amazon S3加载

步骤1:上传SVF并配置存储桶

  • 将完整SVF文件包上传到S3存储桶。
  • 配置存储桶CORS规则(JSON格式):
    {
      "CORSRules": [
        {
          "AllowedOrigins": ["https://your-viewer-domain.com"],
          "AllowedMethods": ["GET", "HEAD"],
          "AllowedHeaders": ["Content-Type"]
        }
      ]
    }
    
  • 生产环境建议使用预签名URL控制访问权限,测试阶段可临时设置文件为公开可读。

步骤2:生成SVF访问URL

  • 公开可读模式:直接使用S3文件URL,格式为https://your-bucket.s3.amazonaws.com/svf-path/model.svf。
  • 预签名URL模式(Node.js示例):
    const AWS = require('aws-sdk');
    const s3 = new AWS.S3();
    
    const params = {
      Bucket: 'your-bucket-name',
      Key: 'svf-path/model.svf',
      Expires: 3600 // URL有效期(秒)
    };
    
    const svfUrl = s3.getSignedUrl('getObject', params);
    

步骤3:加载SVF到Viewer

  • 初始化代码与自定义服务器场景一致,仅需替换svfUrl为S3的公开URL或预签名URL:
    const svfUrl = 'https://your-bucket.s3.amazonaws.com/svf-path/model.svf';
    
    Autodesk.Viewing.Document.load(svfUrl, (doc) => {
      const viewables = doc.getRoot().getDefaultGeometry();
      viewer.loadDocumentNode(doc, viewables);
    }, (error) => {
      console.error('加载失败:', error);
    });
    

关键注意事项

  • 必须保证SVF文件结构完整,缺失纹理、几何数据等关联文件会导致模型显示异常。
  • 使用与SVF格式兼容的Viewer版本,建议采用官方最新稳定版。
  • 生产环境禁止设置S3存储桶为公开可读,优先使用预签名URL或IAM角色做访问控制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:33:21