ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

如何用 Emscripten 重新构建并更新 CesiumJS 的 Draco 解码器 JavaScript 模块?

如何用 Emscripten 重新构建并更新 CesiumJS 的 Draco 解码器 JavaScript 模块? 如何用 Emscripten 重新构建并更新 CesiumJS 的 Draco 解码器 JavaScript 模块【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesiumCesiumJS 加载 Draco 压缩的 glTF 资产时使用的不是 npm 上的通用draco3d构建而是自己用 Emscripten 重新编译的 Draco 解码器 JavaScript 模块原因是需要保留 IE11 兼容性。当你需要把仓库里的解码器升级到新的官方 Draco 版本时就要走一遍“下载 Draco 源码 → 用 Emscripten 重新编译 → 把产出的draco_decoder.js放回仓库”的流程。这份流程在项目文档 Draco 解码器模块更新说明 中有完整描述本文按该文档整理成可直接执行的操作路径。准备构建环境文档要求三样东西缺一不可make 工具。文档建议在 Linux 或 Windows 10 的 Linux 子系统WSL下使用make构建可选替代方案是 MSYS2安装后需要把usr/bin加入PATH例如路径为C:\msys64\usr\bin时执行PATH%PATH%;C:\msys64\usr\bin。官方 Draco 发布版本。下载或 checkout 官方 Draco release 的对应 tag 即可具体选哪个 tag 由你要升级的目标版本决定。Emscripten。下载并安装 Emscripten安装后记下其根目录的绝对路径后面配置 CMake 时用得到。注意不要把构建放在 CesiumJS 仓库目录内执行文档明确要求在“a separate directory”独立目录里跑 CMake 和 make避免污染仓库。用 Emscripten 编译 Draco 解码器在 Draco 源码的独立构建目录中执行 CMake 配置。文档给出的命令文档示例其中两处路径需要替换为实际值cmake ..\path\to\draco -G Unix Makefiles -DCMAKE_TOOLCHAIN_FILEabsolute\path\emscripten\cmake\Modules\Platforms\Emscripten.cmake -DIE_COMPATIBLEtrue替换说明..\path\to\draco替换为 Draco 源码目录上面的路径是文档中的示意写法按你的实际目录填Linux 下写成正斜杠路径。absolute\path\emscripten\...替换为你机器上 Emscripten 的绝对路径工具链文件固定为其中的cmake\Modules\Platforms\Emscripten.cmake。这条命令里有三个不能省的约束生成器必须是Unix Makefiles文档明确指定必须通过-DCMAKE_TOOLCHAIN_FILE指向 Emscripten 工具链必须带-DIE_COMPATIBLEtrue这个开关是 CesiumJS 使用定制构建的目的所在IE11 兼容漏掉的话产出物与仓库的使用前提不符。配置完成后在同一个构建目录执行make -j把新解码器放回仓库构建成功后文档要求把产物draco_decoder.js拷贝到Source\ThirdParty\Workers目录。需要说明的是这条 README 写作时仓库还是单包结构当前仓库已改为 monorepo 布局对应的实际目录是 packages/engine/Source/ThirdParty/Workers拷贝时落到这个位置。当前仓库里与 Draco 解码器相关的实际文件布局供你确认拷贝对象和位置packages/engine/Source/Workers/decodeDraco.js 和 decodeI3S.js 目前从 npm 包引入draco3d/draco_decoder_nodejs.js即 Node 侧 worker 用的是draco3d包的解码器浏览器侧的 wasm 路径为ThirdParty/draco_decoder.wasm见 DracoLoader.js 与 I3SDecoder.js这个 wasm 由构建任务从 npm 包同步而来gulpfile.js 中的prepare任务会执行copyFileSync(node_modules/draco3d/draco_decoder.wasm, packages/engine/Source/ThirdParty/draco_decoder.wasm)。也就是说本次 Emscripten 构建产出的是带 IE 兼容性的 JavaScript 模块拷贝时不要误覆盖draco_decoder.wasm两者是不同文件升级 Draco 版本时draco3dnpm 依赖见 packages/engine/package.json声明为draco3d: ^1.5.1ThirdParty.json 记录当前锁定版本为1.5.7也应同步更新到同一 Draco 版本。验证解码路径仍然可用文档本身没有给出单独的成功判定命令仓库自带的测试套件提供了验证手段Specs 中已存在覆盖 Draco 解码路径的规格文件例如 GltfDracoLoaderSpec.js 和 GltfVertexBufferLoaderSpec.js。更新模块后运行仓库测试npm run test或在不跑 WebGL 相关用例的情况下npm run test-non-webgl测试通过即可认为替换后的解码模块在仓库现有数据如Specs/Data/Models/glTF-2.0下多个glTF-Draco模型上仍工作正常若解码相关规格失败说明新构建产物与现有代码路径不兼容应回到 CMake 配置逐项核对尤其是-DIE_COMPATIBLEtrue是否遗漏。限制与注意整个流程要求make可用的环境这是文档列出的第一前置条件Windows 原生环境需走 WSL 或 MSYS2。CMake 命令中的路径是文档给出的示意值必须替换为实际路径后才能执行工具链文件名Emscripten.cmake在 Emscripten 安装目录中的相对位置以你安装的版本为准。-DIE_COMPATIBLEtrue是 CesiumJS 定制构建的必要参数重建时不能省略否则新模块与仓库声明的兼容性目标不一致。文档中的拷贝目标Source\ThirdParty\Workers对应当前仓库的packages/engine/Source/ThirdParty/Workers这是仓库布局演进造成的路径差异按当前目录结构落盘。【免费下载链接】cesiumAn open-source JavaScript library for world-class 3D globes and maps :earth_americas:项目地址: https://gitcode.com/GitHub_Trending/ce/cesium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表