推荐:使用NSDT场景编辑器快速搭建3D应用场景
在这篇博文中,引用了几种文件扩展名和模型格式。在开始之前,最好了解以下内容:
AWS IoT TwinMaker 支持 glTF 格式的 3D 资产,这是一种 3D 文件格式,以 JSON 格式或二进制格式存储 3D 模型信息,可在应用程序中高效传输和加载 3D 模型。glTF 模型最大限度地减少了 3D 资产的大小以及解压缩和使用它们所需的运行时处理。来自传统 CAD 应用程序的 3D 模型以及点云扫描可以使用 AWS 合作伙伴解决方案(例如 Pixyz 的解决方案)转换为 glTF。在这篇博客中,您将探索另一种无服务器方法,使用 Cesium 的开源库(包括 obj2gltf 和 gltf-pipeline)将 Matterpak 捆绑包转换为glTF 模型。
在下面的架构中,您将看到如何使用 AWS Lambda 来检测上传到 Amazon S3 存储桶的 Matterpak zip 捆绑包。这将在长时间运行的 Lambda 执行中触发到 glTF 的转换。压缩文件可能包含 OBJ、MTL 和 JPG 文件。
在Matterpak捆绑包中,有几个文件,包括OBJ,MTL,点云扫描(xyz),可能还有许多JPG文件。本例中的 Matterport 已将点云扫描转换为对象网格格式 OBJ。MTL 和 JPG 文件一起在 OBJ 模型中的对象上提供彩色纹理。xyz 文件将不会在此转换过程中使用,因为它已经在 Matterpak 中转换为 OBJ。
使用点云扫描(如 Matterport)时,会在整个扫描过程中捕获高分辨率 JPG 纹理。将 OBJ 转换为 glTF 仍然会很大。为了改善这一点,本博客中的 Lambda 函数将首先压缩所有 JPG 图像,然后再转换为 glTF。此外,该模型将通过使用Draco Compression进一步压缩。因此,转换将生成一个小得多的 glTF 模型,如下面的 AWS IoT TwinMaker 场景所示。请注意,glTF 文件使用两种可能的文件扩展名之一:.gltf 或 .glb。glTF 扩展将在此博客中使用。
需要 AWS 账户才能设置和执行本博客中的步骤。AWS Cloudformation 模板将配置并安装必要的 AWS Lambda 函数、IAM 角色和 Amazon S3 存储桶。建议您在弗吉尼亚州地区(us-east-1)工作。您可能会因以下某些服务而产生费用:
下载其中一个 Matterpak 捆绑包。选择其中一个捆绑包,例如 Pro2。此可用的捆绑包列表可能会更改。Pro2 示例捆绑包的近似文件大小为 178MB。
9.在此存储桶中创建一个文件夹并将其命名为 paks
10.将步骤 1 中下载的 Matterpak 捆绑包上传到 paks 文件夹。请务必将其压缩,因为 Lambda 函数将在处理过程中解压缩它。转换过程将自动开始,可能需要几分钟。
11.如果模型转换成功,您将在 S3 存储桶的根目录中看到一个glTF 模型。如果没有,请检查 Amazon CloudWatch 以获取来自 Lambda 函数的任何日志。
回顾一下,您已成功将 Matterport 近 180MB 的点云扫描压缩并转换为 8MB glTF 模型。转换模型后,可以尝试在 IoT TwinMaker 工作区中加载此模型。请注意,您在 Matterport 中创建的任何 Mattertag 在此过程中都不可转让。这必须使用场景编辑器中的 IoT TwinMaker 标记重新创建。
请务必清理此博客中的工作以避免收费。按此顺序完成后删除以下资源
在此博客中,你创建了一个模型转换管道,用于压缩 Matterpak 捆绑包并将其转换为glTF 模型。这也包括从其他系统进行 OBJ 的通用转换。使用此管道,你将能够减少场景加载时间,并简化直接到 IoT TwinMaker 工作区的 3D 模型更新。
原文链接:如何将 OBJ 模型转换和压缩为 GLTF 以与 AWS IoT TwinMaker 配合使用 (mvrlink.com)