首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将glb转换为draco glb前端

将glb转换为draco glb前端
EN

Stack Overflow用户
提问于 2021-04-06 19:35:48
回答 1查看 1.4K关注 0票数 0

是否有任何方法将glb文件编码并转换为只在前端(客户端)的draco glb?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-07 00:49:33

是的,这可以用glTF-变换实现。还有一个在three.js上打开特性请求,还没有实现。

首先,您需要下载Draco编码器/解码器库 (当前发布给NPM的版本不工作客户端),将它们保存在文件夹中,然后将它们作为全局脚本标记加载。应该有六个文件和两个脚本标记(这将加载剩余的文件)。

文件:

  • draco_decoder.js
  • draco_decoder.wasm
  • draco_wasm_wrapper.js
  • draco_encoder.js
  • draco_encoder.wasm
  • draco_encoder_wrapper.js
代码语言:javascript
复制
<script src="assets/draco_encoder.js"></script>
<script src="assets/draco_decoder.js"></script>

然后,您需要编写代码来加载GLB文件,应用压缩,并对压缩结果做一些事情。这将需要首先安装下面所示的两个包,然后用您选择的工具捆绑web应用程序(我在这里使用了https://www.snowpack.dev/ )。

代码语言:javascript
复制
import { WebIO } from '@gltf-transform/core';
import { DracoMeshCompression } from '@gltf-transform/extensions';

const io = new WebIO()
    .registerExtensions([DracoMeshCompression])
    .registerDependencies({
        'draco3d.encoder': await new DracoEncoderModule(),
        'draco3d.decoder': await new DracoDecoderModule(),
    });

// Load an uncompressed GLB file.
const document = await io.read('./assets/Duck.glb');

// Configure compression settings.
document.createExtension(DracoMeshCompression)
    .setRequired(true)
    .setEncoderOptions({
        method: DracoMeshCompression.EncoderMethod.EDGEBREAKER,
        encodeSpeed: 5,
        decodeSpeed: 5,
    });

// Create compressed GLB, in an ArrayBuffer.
const arrayBuffer = io.writeBinary(document); // ArrayBuffer
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66975407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档