npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@threenative/ueformat

v0.1.4

Published

UEFormat v10 .uemodel parser and Three.js loader for meshes exported from Unreal packages by CUE4Parse/FModel.

Readme

@threenative/ueformat

A strict UEFormat v10 .uemodel parser and Three.js loader for assets exported from Unreal packages by CUE4Parse/FModel.

.uasset / .uexp / .ubulk / .pak / .utoc
                  ↓ CUE4Parse
              .uemodel
                  ↓ this package
     BufferGeometry / Mesh / LOD / Group

This package does not pretend that an isolated .uasset is a self-contained mesh. It handles the stable interchange boundary: CUE4Parse extracts UE4/UE5 packages, then this loader validates and constructs renderable Three.js objects.

Supported

  • UEFormat v10 UEMODEL headers and named attribute sets
  • uncompressed, GZIP, and injected-decoder ZSTD bodies
  • static and skeletal mesh LOD records
  • positions, normals, tangents, indices, multiple UV/color channels
  • material sections as BufferGeometry.groups
  • sparse morph targets
  • skin indices/weights and skeleton metadata parsing
  • sockets, virtual bones, and convex collision geometry
  • Unreal centimeters/Z-up/left-handed coordinates to Three.js meters/Y-up/right-handed coordinates
  • automatic winding and tangent-sign repair
  • browser Loader.load, synchronous parse, and ueformat-inspect CLI validation

Not implemented

  • Automatic texture/material extraction — .uemodel carries material slots (name, path, index range), not texture payloads. Resolve textures through your own pipeline (the asset MCP does this) and supply materials through materialFactory.
  • Skeletal binding — parsed bones, sockets and skin weights are exposed on userData and as skinIndex/skinWeight attributes, but the package never constructs a THREE.SkinnedMesh or binds a skeleton. That is deliberately left to the game; nothing here invents it.
  • ZSTD bodies require an injected zstdDecoder — the package never bundles a ZSTD implementation.

The look is the game's

Every material comes from the game through materialFactory. The fallback matches three.js's own GLTFLoader: a plain MeshStandardMaterial named after the slot. No colour, roughness, or metalness is decided here.

Provenance

Absorbed from the standalone three-ueformat-loader package (MIT, ThreeNative contributors, 2026) into the engine. The parser is pure TypeScript with no browser or Node globals — the same code runs in the browser, in Node, and on the native arm.