FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Show Texture shows white screen for large models on Windows with Node.js v24 · Issue #2021 · WebODM/WebODM · GitHub

/ WebODM Public

Show Texture shows white screen for large models on Windows with Node.js v24 #2021

Description

How did you install WebODM (docker, installer, etc.)?

Windows installer, version 3.2.8

What's your browser and operating system? (Copy/paste the output of https://www.whatismybrowser.com/)

Chrome 152 on Windows 11

glbopti.js

What is the problem?

Clicking "Show Texture" on the 3D model view shows a white screen for any task whose GLB output exceeds 150 MB. CPU briefly spikes, the progress bar moves, then
the model area goes blank. Smaller models display correctly.

glbopti.js (which optimizes large GLBs before browser delivery) fails to load because of a broken native binary bundled in a transitive dependency. The
dependency chain is:

@gltf-transform/functions → ndarray-pixels → ndarray-pixels/node_modules/sharp@0.35.4
→ ndarray-pixels/node_modules/@img/sharp-win32-x64/sharp-win32-x64-0.35.4.node

That .node binary fails with ERR_DLOPEN_FAILED: The specified procedure could not be found under Node.js v24 on Windows. Because it is loaded eagerly at module
level, require('@gltf-transform/functions') throws before main() runs, causing glbopti.js to exit with an error. task.py catches the failure and falls back to
serving the raw unoptimized GLB, which is too large for the browser to render — hence the white screen.

A secondary issue: even after working around the load crash, compressTexture() from @gltf-transform/functions triggers a libvips error on ODM-generated textures:

GLib-GObject-CRITICAL: value "32" of type 'gint' is invalid or out of range for property 'space' of type 'VipsInterpretation'
Error: colourspace: parameter space not set

This is caused by getTextureColorSpace() returning a value that leads libvips 8.15.3 (bundled with sharp 0.33.5) into an invalid colorspace conversion path.

How can we reproduce this? (What steps trigger the problem? What parameters are you using for processing? Does it work with the default settings? Include
screenshots. If you are having issues processing a dataset, you must include a copy of your dataset uploaded on Dropbox, Google Drive or https://dronedb.app)

  1. Run WebODM on Windows with Node.js v24
  2. Process any dataset that produces a GLB larger than 150 MB
  3. Click "Show Texture" on the 3D model view → white screen

Fix: Two changes to app/scripts/glbopti.js resolve both issues:

  1. Delete node_modules/ndarray-pixels/node_modules/ so ndarray-pixels falls back to the top-level compatible sharp 0.33.5 instead of its bundled incompatible
    0.35.4 binary.
  2. Replace the compressTexture() call with direct sharp calls (texture.getImage() → resize → .jpeg() → texture.setImage()), bypassing the broken colorspace
    detection path.

A corrected glbopti.js is attached. After applying it and deleting app/scripts/node_modules/ndarray-pixels/node_modules/, a 567 MB GLB with three 24576×24576
textures processes and displays correctly.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions


      Back | FazBrowse Home | New Git URL