• 正文概述
  • GitHub – donmccurdy/glTF-Transform:用于 Web 和 Node.js 上的 JavaScript 和 TypeScript 的 glTF 2.0 SDK。

     

    Name
    last week
    3 months ago
    5 days ago
    7 months ago
    5 years ago
    last year
    2 years ago
    last year
    3 months ago
    7 months ago
    last year
    last year
    5 days ago
    3 months ago
    last week
    4 months ago
    3 days ago

    glTF 变换

    适用于 Web 和 Node.js 的 JavaScript 和 TypeScript 的 glTF 2.0 SDK。

    介绍

    glTF Transform 支持读取、编辑和写入 glTF 2.0 格式的 3D 模型。与 3D 建模工具(非常适合对几何体、材质和动画进行艺术更改)不同,glTF 变换可对 3D 模型中的低级细节进行快速、可重复和无损的控制。该 API 会自动管理数组索引和字节偏移量,否则在编辑文件时需要仔细管理。这些特征使其成为捆绑、拆分或优化现有模型的不错选择。它还可用于对常见问题应用快速修复、按过程生成模型或在 glTF 格式之上轻松开发自定义扩展。由于核心 SDK 与 Node.js 和 Web 兼容,因此 glTF Transform 可用于开发离线工作流和 Web 应用程序等。

    包:

    • @gltf-transform/core:Core SDK,提供一个富有表现力的 API 来读取、编辑和写入 glTF 文件。
    • @gltf-transform/extensions:Core SDK 的扩展(可选的 glTF 功能)。
    • @gltf-transform/functions:使用核心 API 编写的常见 glTF 修改函数。
    • @gltf-transform/cli命令行界面 (CLI),用于快速或批量将函数应用于 glTF 文件。

    适用于 Web 和 Node.js 的 JavaScript 和 TypeScript 的 glTF 2.0 SDK。

    商业用途

    将 glTF Transform 用于个人项目?真棒!赞助既不是期望的,也不是必需的。感觉 如果您制作了一些您感兴趣的东西,可以免费分享屏幕截图——我喜欢看到这些!

    营利性工作中使用 glTF Transform?这太棒了!您的支持对于保持 glTF Transform 很重要 在 MIT 许可下维护、独立和开源。请考虑订阅或 GitHub 赞助

    在 glTF Transform Pro 常见问题解答中了解更多信息

    脚本 API

    安装脚本包:

    npm install --save @gltf-transform/core @gltf-transform/extensions @gltf-transform/functions

    使用平台 I/O 实用程序 WebIO、NodeIO 或 DenoIO 读取和写入 glTF 场景:

    import { Document, NodeIO } from '@gltf-transform/core';
    import { ALL_EXTENSIONS } from '@gltf-transform/extensions';
    import draco3d from 'draco3dgltf';
    
    // Configure I/O.
    const io = new NodeIO()
        .registerExtensions(ALL_EXTENSIONS)
        .registerDependencies({
            'draco3d.decoder': await draco3d.createDecoderModule(), // Optional.
            'draco3d.encoder': await draco3d.createEncoderModule(), // Optional.
        });
    
    // Read from URL.
    const document = await io.read('path/to/model.glb');
    
    // Write to byte array (Uint8Array).
    const glb = await io.writeBinary(document);

    要对现有 glTF 文档执行更改,请从 Functions 包导入现成的脚本,或使用 MaterialPrimitive 和 Texture 等 API 类编写自己的脚本。

    import { resample, prune, dedup, draco, textureCompress } from '@gltf-transform/functions';
    import sharp from 'sharp'; // Node.js only.
    
    await document.transform(
        // Losslessly resample animation frames.
        resample(),
        // Remove unused nodes, textures, or other data.
        prune(),
        // Remove duplicate vertex or texture data, if any.
        dedup(),
        // Compress mesh geometry with Draco.
        draco(),
        // Convert textures to WebP (Requires glTF Transform v3 and Node.js).
        textureCompress({
            encoder: sharp,
            targetFormat: 'webp',
            resize: [1024, 2024],
        }),
        // Custom transform.
        backfaceCulling({cull: true}),
    );
    
    // Custom transform: enable/disable backface culling.
    function backfaceCulling(options) {
        return (document) => {
            for (const material of document.getRoot().listMaterials()) {
                material.setDoubleSided(!options.cull);
            }
        };
    }

    若要了解 glTF 转换的工作原理以及脚本 API 的体系结构,请从概念开始。若要在不安装任何内容的情况下试用脚本 API,请访问 gltf.report/,加载 glTF 模型,然后打开“脚本”选项卡。

    命令行 API

    安装 CLI,Node.js LTS 版本支持。

    npm install --global @gltf-transform/cli

    列出可用的 CLI 命令:

    gltf-transform --help

    一次性优化所有内容:

    gltf-transform optimize input.glb output.glb --texture-compress webp

    或者挑选您的优化,构建自定义管道。

    使用 Draco 或 Meshoptimizer 压缩网格几何体:

    # Draco (compresses geometry).
    gltf-transform draco input.glb output.glb --method edgebreaker
    
    # Meshopt (compresses geometry, morph targets, and keyframe animation).
    gltf-transform meshopt input.glb output.glb --level medium

    使用 Sharp 调整纹理大小和压缩纹理,或使用 KTX2 和 Basis Universal 提高 VRAM 使用率和性能:

    # Resize textures.
    gltf-transform resize input.glb output.glb --width 1024 --height 1024
    
    # Compress textures with WebP.
    gltf-transform webp input.glb output.glb --slots "baseColor"
    
    # Compress textures with KTX2 + Basis Universal codecs, UASTC and ETC1S.
    gltf-transform uastc input.glb output1.glb \
        --slots "{normalTexture,occlusionTexture,metallicRoughnessTexture}" \
        --level 4 --rdo --rdo-lambda 4 --zstd 18 --verbose
    gltf-transform etc1s output1.glb output2.glb --quality 255 --verbose

    以及更多。

    学分

    参见制作人员名单

    许可证

    版权所有 2024,麻省理工学院许可证。

    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,请不要用于商业用途!
    3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
    8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
    声明如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性

    GLB下载网 - GLB/GLTF模型与格式资源免费下载,支持在线浏览与转换 » 适用于 Web 和 Node.js 的 JavaScript 和 TypeScript 的 glTF 2.0 SDK。

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载要提取码
    百度网盘提取码都是gltf。
    分享过期和重复下载怎么办
    分享过期请使用备份下载,重复下载是不另扣费的,请放心下载。
    模型和平台不兼容怎么办
    可以用网站在线编辑功能,修改模型属性,大小,方向,坐标,中心,透明等问题,然后重新导出既可https://glbxz.com/38636.html
    开通VIP 享更多特权,建议使用 QQ 登录